首先,我不确定这个问题在Stack Overflow中是否足够具体。如果有人有什么建议,很乐意删除或修改。
我们使用Kubernetes来协调我们的服务器端代码,最近开始使用Kustomize来模块化代码。
我们的大部分后台服务都能很好地适应这种数据模型。对于我们的主事务系统,我们有一个基础配置,我们为我们的开发、暂存和不同的生产风味覆盖了调整。这真的很好,帮助我们清理了很多东西。
我们还使用TensorFlow Serving来部署机器学习模型,每个模型都经过了训练,此时已经为我们的众多客户中的每一个客户进行了部署。这些配置唯一不同的方式是在名称和元数据注释中(例如,我们可能有一个叫做 classifier-acme
还有一个叫 classifier-bigcorp
),以及从我们的blob存储中拉出的权重束(例如,人们会从 storage://models/acme/classifier
和另一个将从 storage://models/bigcorp/classifier
). 我们还分配了不同的命名空间来隔离开发、生产等。
根据我对Kustomize系统的理解,如果我们想在Kustomize文件中编码当前集群的全部状态,我们需要为每一个客户建立一个不同的基础和一套覆盖。这似乎是一个巨大的目录数量,因为我们有很多客户。如果我们有100个客户和5个不同的私奔环境,那就是500个目录,其中有一个 kustomize.yml
文件。
有没有一种工具或技术可以对Kustomize的这种重复进行编码?或者说有没有其他工具可以帮助我们更系统、更紧凑地生成Kubernetes配置?
你可以有更复杂的覆盖结构,而不仅仅是直接的矩阵方式。所以像一个应用有 apps/foo-base
然后 apps/foo-dev
和 apps/foo-prod
其中都有 ../foo-base
在他们的基地里,然后这些又被拉进了他们的基地。overlays/us-prod
和 overlays/eu-prod
以及诸如此类的东西。
但如果每一个客户和环境的组合都真的需要自己的设置,那么你最终可能确实会有很多的覆盖。