舵手架构
舵手架构
本文档在高层次上描述了舵手架构。
舵手的目的
舵手是一个用于管理称为图表的 Kubernetes 包的工具。舵手可以执行以下操作
- 从头开始创建新的图表
- 将图表打包到图表存档 (tgz) 文件中
- 与存储图表的图表仓库交互
- 将图表安装到现有 Kubernetes 集群中并卸载图表
- 管理已使用舵手安装的图表的发布周期
对于舵手,有三个重要的概念
- 图表是创建 Kubernetes 应用程序实例所需的信息捆绑包。
- 配置包含可以合并到打包图表中的配置信息,以创建一个可发布的对象。
- 发布是图表的运行实例,与特定配置相结合。
组件
舵手是一个可执行文件,它被实现为两个不同的部分
舵手客户端是面向最终用户的命令行客户端。客户端负责以下操作
- 本地图表开发
- 管理仓库
- 管理发布
- 与舵手库交互
- 发送要安装的图表
- 请求升级或卸载现有发布
舵手库提供执行所有舵手操作的逻辑。它与 Kubernetes API 服务器交互,并提供以下功能
- 将图表和配置组合起来构建发布
- 将图表安装到 Kubernetes 中,并提供随后的发布对象
- 通过与 Kubernetes 交互来升级和卸载图表
独立的舵手库封装了舵手逻辑,以便它可以被不同的客户端利用。
实现
舵手客户端和库是用 Go 编程语言编写的。
该库使用 Kubernetes 客户端库与 Kubernetes 通信。目前,该库使用 REST+JSON。它将信息存储在 Kubernetes 内部位于 Secrets 中。它不需要自己的数据库。
配置文件在可能的情况下使用 YAML 编写。