灵雀云于近期发布并开源的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 里的内容。这种做法尽管操作简便,但是弊端也比较突出:
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的相关功能和版本进展,我们将会持续更新,欢迎您随时关注,并前往GitHub试用体验。
Captain联系信息: 作者邮箱: hangyan@alauda.io GitHub: https://github.com/alauda/captain Captain开源讨论群:请加小助手 fudan3070 (备注Captain加群)