舵手架构

舵手架构

本文档在高层次上描述了舵手架构。

舵手的目的

舵手是一个用于管理称为图表的 Kubernetes 包的工具。舵手可以执行以下操作

  • 从头开始创建新的图表
  • 将图表打包到图表存档 (tgz) 文件中
  • 与存储图表的图表仓库交互
  • 将图表安装到现有 Kubernetes 集群中并卸载图表
  • 管理已使用舵手安装的图表的发布周期

对于舵手,有三个重要的概念

  1. 图表是创建 Kubernetes 应用程序实例所需的信息捆绑包。
  2. 配置包含可以合并到打包图表中的配置信息,以创建一个可发布的对象。
  3. 发布图表的运行实例,与特定配置相结合。

组件

舵手是一个可执行文件,它被实现为两个不同的部分

舵手客户端是面向最终用户的命令行客户端。客户端负责以下操作

  • 本地图表开发
  • 管理仓库
  • 管理发布
  • 与舵手库交互
    • 发送要安装的图表
    • 请求升级或卸载现有发布

舵手库提供执行所有舵手操作的逻辑。它与 Kubernetes API 服务器交互,并提供以下功能

  • 将图表和配置组合起来构建发布
  • 将图表安装到 Kubernetes 中,并提供随后的发布对象
  • 通过与 Kubernetes 交互来升级和卸载图表

独立的舵手库封装了舵手逻辑,以便它可以被不同的客户端利用。

实现

舵手客户端和库是用 Go 编程语言编写的。

该库使用 Kubernetes 客户端库与 Kubernetes 通信。目前,该库使用 REST+JSON。它将信息存储在 Kubernetes 内部位于 Secrets 中。它不需要自己的数据库。

配置文件在可能的情况下使用 YAML 编写。