Captain 0.9.0版本发布:新增ChartRepo,更为便捷和原生!

灵雀云于近期发布并开源的Helm v3 Controller组件“Captain”,有了新的更新进展——Captain 0.9.0版本发布。本次更新最大的亮点在于,增加了一个新的 CRD: ChartRepo。ChartRepo用于定义helm 可以使用的 charts 仓库。和原先使用的ConfigMap方式相比,ChartRepo更为便捷和原生,并且具有更高的可定制性。

Captain是Helm官方社区发布的Helm v3 proposal的第一个Controller实现示例,帮助用户简化Helm资源描述,更便捷、高效地实现K8s应用的管理和控制,推进Helm项目向原生 K8s迈进的步伐。目前该项目代码已经在Github 上开源,项目地址为:https://github.com/alauda/Captain。欢迎更多技术开发者和爱好者前去试用。

helm repo

在 helm 的 repo 管理中,可以通过 helm 的命令来添加,查看 repo。如下图所示:

实际上,helm 会将repo 的信息存储在一个配置文件中,通常位置在:~/.helm/repository/repositories.yaml。作为一个命令行工具,这是一种很常见的行为。但这种做法有个明显的缺陷,那就是用户名和密码会直接暴露在外。

Captain 最初也是使用同样的方法。在 helm 3的当前代码中,仍然是从同样位置的配置文件读取 repo 信息,Captain 使用外挂的 ConfigMap 来记录 repositories.yaml 里的内容。这种做法尽管操作简便,但是弊端也比较突出:

 

  • 如 helm cli 一样,将用户名和密码直接暴露了出来;
  • 在 ConfigMap中 编辑 yaml 格式的 repo 信息并不方便;
  • 修改 repo 信息需要重启 Captain 容器;

 

ChartRepo 便是为了解决这些问题而生。

ChartRepo

首先来看一个简单的实例:

这里无需认证的 public charts repo其基本的信息就是 URL。Captain 会在启动后默认创建一个 ChartRepo。在 HelmRequest 中引用 chart 时,其使用的 repo 名字就是 ChartRepo 的名字: stable.

而对于需要 basic auth 的 ChartRepo, 只需要提供一个包含 username/password 的 Secret 即可:

与其他 CRD 一样,作为controller 的 Captain, 通过 watch ChartRepo 的变更来动态地更新 helm 的 repo信息,用户可以通过 kubectl 来添加/修改/删除 ChartRepo。这样不仅使用上更为便利,也更为安全。我们可以通过 kubectl 来看到与 helm list 类似的结果,但是去掉了敏感信息:

CRD 目前已经成为大多数基于kubernetes 产品的标准方案。一方面更贴近用户使用,另一方面也带来了更多的可能性。通过定义好 CRD,我们不仅可以使用 kubectl ,也拥有了完整的 CURD API,这对构建上层业务都是极为便利的。

关于开源项目Captain

Captain是Helm官方社区发布的Helm v3 proposal的第一个Controller实现示例,推进Helm项目向原生 K8s迈进的步伐。在Helm v3社区设计之外,Captain还具有以下特性:

  • 支持多集群:Captain组件基于cluster-registry项目实现了对多集群的支持。用户可以将HelmRequest安装到当前集群,指定集群,甚至是所有集群。这在企业场景下非常实用。
  • 依赖检查:Captain在Helmv3的基础上加了新的依赖检查。比如HelmRequest A 依赖于 HelmRequest B, Captain 在同步HelmRequest A 时,会首先检查 HelmRequest B是否已经同步。只有在所有依赖都同步成功之后,当前的HelmRequest才会开始同步。
  • 集中式配置valuesFrom:在Captain中,充分利用了kubernetes 中 ConfigMap 以及 Secret 作为独立配置的功能。在微服务场景下,用户通常需要用多个HelmRequest 来描述不同chart 的安装需求,而这些 chart 之间通常又经常有很多需要共同的配置, valuesFrom 能很好地解决这个问题。
  • 资源冲突的处理:Captain引入了类似于 `kubectl apply`的逻辑。当发现资源已存在的时候,会执行更新操作,一些无法更新的资源会进行删除重建操作。这样的策略能够极大地解决用户使用时的各种不便。

Captain的相关功能和版本进展,我们将会持续更新,欢迎您随时关注,并前往GitHub试用体验。

K8S中文社区微信公众号

评论 抢沙发

登录后评论

立即登录