每个功能分支部署中新的K8s命名空间是否是一种好习惯?

时间:2018-11-05 16:49:25

标签: kubernetes namespaces kubernetes-helm

我试图弄清楚如何为开发集群组织K8s命名空间。

现在我们有多个开发名称空间(每个团队)。

在一个命名空间中有成千上万个豆荚(大约100-200个)。

每个功能分支部署

1-5个Pod。

我们使用Helm进行部署。但是有些队友说很难管理。

新想法是在每个功能分支部署中创建一个名称空间。

现在,我看到的主要问题是在TLS(和其他)机密之间进行命名空间同步共享。但是可以通过制作CronJob来解决。

此方法是否有优点或缺点?

2 个答案:

答案 0 :(得分:2)

使用名称空间将部署限制在功能团队中绝对是一种好方法。
但是按名称空间部署50个以上的pod变得困难,尤其是如果pod包含10个以上的conatiner。因此,您倾向于每个部署团队管理50X10 = 500个容器。

  每个功能分支部署

1-5个Pod。

这确实是使用命名空间的一种好方法,但是当您最初说您拥有100-200个Pod时,您仍然需要记住很多命名空间。

希望您在k8s中使用rbac

答案 1 :(得分:0)

每个(审阅)功能分支的命名空间是必经之路。

隔离每个部署组使其易于管理...

此外,如果您使用kubernetes仪表板,则名称空间概述会更有意义。

默认情况下,同步机密和configMap的想法非常有用,如果您确实重用了所有这些,并且它们从来都不是特定于名称空间的。

创建名称空间时动态地生成秘密和configMap,然后在该名称空间中添加它们并在那里不同步是另一种方法。

秘密和configMap是孤立的,特定于名称空间的原因并驻留在特定名称空间中是有原因的。 秘密和configMaps只能由位于相同名称空间中的pod引用。

仅仅因为您可以同步并不意味着您应该...

如果您仍然坚持同步,那么请拥有一组“ syncable-shared-secrets-secrets”,以及另一组特定于名称空间的组。

https://kubernetes.io/docs/concepts/configuration/secret/#restrictions

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#restrictions