我正在尝试找出如何为开发集群组织K8s命名空间。现在,我们有多个开发命名空间(每个团队一个)。单个命名空间中有大量的pods(约100-200个)。每个特性分支部署中有1-5个pods。我们使用Helm进行部署。但是有些团队成员表示难以管理。新想法是为每个特性分支部署创建一个命名空间。现在,我认为主要问题在于TLS(和其他)secrets在不同命名空间之间的同步共享。但是可以通过制作CronJob来解决。这种方法有什么优缺点吗?
对于限制部署到功能团队,使用命名空间绝对是一个好方法。
但是,如果每个命名空间中有50个以上的pod,特别是如果这些pod包含10个以上的容器,则变得难以管理。因此,您将倾向于为每个部署团队管理50X10 = 500个容器。
每个功能分支部署1-5个pod。
这确实是使用命名空间的好方法,但是当你最初说你有大约100-200个pod时,你仍然需要记住很多命名空间。
希望您在k8s中使用rbac
每个(审核)特性分支的命名空间是正确的选择。
隔离每个部署组使其易于管理...
如果您使用 Kubernetes 仪表板,则命名空间概述将更加清晰明了。
默认情况下同步 secrets 和 configMaps 的想法非常好,如果您确实重复使用它们,并且它们从未真正与命名空间相关。
在命名空间创建时动态生成 secrets 和 configMaps,然后为该命名空间添加它们,而不进行同步,也是一种方法。
秘密和 configMaps 被隔离、特定于命名空间并驻留在特定的命名空间中,这是有原因的。秘密和 configMaps 只能被驻留在相同命名空间中的 pod 引用。
仅仅因为您可以同步并不意味着您应该这样做...
如果您仍然坚持同步,则应该有一个“可同步共享秘密”的组,以及另一个特定于命名空间的组。
https://kubernetes.io/docs/concepts/configuration/secret/#restrictions
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#restrictions