我们有一组相当广泛的 yaml 配置文件,用于定义部署、状态集、命名空间、服务等资源,这些资源应在集群上的 kubernetes API 中创建。
我们已经尝试了一些工具,如 terraform 和 ansible 来部署底层计算和 k8s 集群,它们在该级别应用配置管理时工作良好。
我还没有找到一种智能地自动化部署和更新这些资源的好方法。我们使用源代码控制来管理对这些资源定义的更改,并使用kubectl apply -f
.
通常,更改很简单,例如更新部署中 pod 的图像标签。image
在这种情况下,只需对部署的适当属性进行简单补丁即可。
对于一些规范资源,我使用了kubernetes terraform provider。它很酷,因为它具有属性感知能力,并且可以做一些事情,比如在实体拆卸/重建和简单补丁之间做出决定。
然而,它的发展速度下降了。除了原版 k8s 之外,很难做任何事情。这使得该工具无法用于自定义资源,例如与操作员一起使用的资源。有类似的提供者会应用你的 k8s yaml 定义kubectl
,但它们不支持属性。
在我开始应用一些 bash-fu 之前,任何关于解决方案的指针都将不胜感激。