0

我有一个带有多个不同名称空间的gke集群。我想能够有效地命名空间我的图像与我的其他资源命名空间相同的方式。也就是说,我希望不同命名空间中的pod能够使用相同的名称引用图像,但是要根据它们所处的命名空间来获取不同的图像。实现此目的的一种方法(如果支持的话)可能是替代命名空间的名称到图像名称中YML,如:k8s/gke/gcr - 将图像范围扩展到命名空间

containers: 
- image: eu.gcr.io/myproject/$(NAMESPACE)-myimage 
    name: myimage 

然后,我可以推eu.gcr.io/myproject/mynamespace-myimage让我的图像提供给命名空间mynamespace

有没有什么干净的方法来实现这种事情。如果没有,并且由于我一直无法找到其他人提出类似的问题,有没有什么方法可以使这种情况变得糟糕?

+0

为什么downvote? – Tom

回答

1

我不认为这是可能的。 Kubernetes支持commandargs等字段的扩展。这允许您使用容器的env字段中设置的变量(可以来自configmap/secret)使用替换。示例:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments

但是,我不认为可变扩展适用于image字段。 :(

什么你正在试图做的似乎不是一个好主意:在多种环境具有不同的图像违背了测试/开发环境的目的

相反,你应该应该使用相同的。图像在所有平台上测试,通过改变env vars,configMaps等。

+0

听起来好像我没有以正确的方式思考事情,因为我对不同名称空间的目标是自成一体dev环境,我想为命名空间的图像,以便他们可以部署他们(开发,没有提交)鳕鱼e分开。也许我应该使用不同的方式来部署代码,而不是使用它来构建图像。不管怎样,不管这个用例是否适用于单独的命名空间,因为这些文档对于不需要或不需要使用命名空间的小型团队来说。 – Tom