部署资源到kubernetes集群的工具

部署资源到kubernetes集群的工具

我们有一组相当广泛的 yaml 配置文件,用于定义应在集群上的 kubernetes API 中创建的部署、状态集、命名空间、服务等资源。

我们已经尝试了一些工具,例如 terraform 和 ansible,用于部署底层计算和 k8s 集群,它们可以很好地在该级别应用配置管理。

我还没有找到一种智能地自动部署和更新这些资源的好方法。我们使用源代码控制来管理对这些资源定义的更改,并将这些更改输入到测试和生产集群中kubectl apply -f

通常,更改很简单,例如更新部署中 pod 的镜像标签。在这种情况下,image只需对部署上的适当属性进行简单的修补即可。

对于我玩过的一些经典资源kubernetes terraform 提供商。它非常酷,因为它具有属性感知能力,可以做一些事情,比如决定实体拆除/重建和简单修补。

然而,它的开发速度很慢。除了 vanilla release k8s 之外,很难做任何事情。这使得该工具对于自定义资源(如与运算符一起使用)毫无用处。有类似的提供商会通过调用 来应用您的 k8s yaml 定义kubectl,但它们不具备属性感知能力。

在我开始应用一些 bash-fu 之前,任何关于解决方案的指示都会很感激。

答案1

这听起来像是一个相当标准的用例。一方面,它是 kubernetes 的一个有用的包管理器,另一方面,我的团队已经成功地使用它来管理我们集群中的 kubernetes API 对象。您可能希望将清单放在一个或多个“图表”中,helm 将使用图表为您安装和/或更新所有部署、ConfigMap 等。您甚至可以为每个环境指定不同的值文件。我们有 values.prod.yaml、values.staging.yaml 等,其中包含我们所有特定于环境的配置,因此我们可以在所有环境中重用相同的清单文件。

相关内容