k8s/gke/gcr - 将图像范围限定为命名空间
k8s/gke/gcr - scope an image to a namespace
我有一个带有许多不同命名空间的 gke 集群。我希望能够像其他资源的命名空间一样有效地为我的图像命名空间。也就是说,我希望 pods 在不同的命名空间中能够使用相同的名称引用图像,但让它们根据它们所在的命名空间获得不同的图像。实现此目的的一种方法(如果支持的话) )可能是将命名空间的名称代入yml中的镜像名称,eg:
containers:
- image: eu.gcr.io/myproject/$(NAMESPACE)-myimage
name: myimage
然后我可以推送 eu.gcr.io/myproject/mynamespace-myimage
使我的图像可用于命名空间 mynamespace
。
有什么简洁的方法可以实现这种事情。如果没有,并且由于我找不到其他人问类似的问题,有没有什么方法可以让我想做一件坏事?
我认为这是不可能的。 Kubernetes 支持扩展 command
和 args
等字段。这使您可以使用容器的 env
字段中设置的变量进行替换,该字段可以来自 configmap/secret。示例:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments
但是我认为变量扩展不适用于 image
字段。 :(
您尝试做的事情似乎不是一个好主意:在多个环境中使用不同的图像违背了拥有 test/staging 个环境的目的。
相反,您应该使用相同的图像通过更改环境变量、configMaps 等在所有平台上进行测试
我有一个带有许多不同命名空间的 gke 集群。我希望能够像其他资源的命名空间一样有效地为我的图像命名空间。也就是说,我希望 pods 在不同的命名空间中能够使用相同的名称引用图像,但让它们根据它们所在的命名空间获得不同的图像。实现此目的的一种方法(如果支持的话) )可能是将命名空间的名称代入yml中的镜像名称,eg:
containers:
- image: eu.gcr.io/myproject/$(NAMESPACE)-myimage
name: myimage
然后我可以推送 eu.gcr.io/myproject/mynamespace-myimage
使我的图像可用于命名空间 mynamespace
。
有什么简洁的方法可以实现这种事情。如果没有,并且由于我找不到其他人问类似的问题,有没有什么方法可以让我想做一件坏事?
我认为这是不可能的。 Kubernetes 支持扩展 command
和 args
等字段。这使您可以使用容器的 env
字段中设置的变量进行替换,该字段可以来自 configmap/secret。示例:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments
但是我认为变量扩展不适用于 image
字段。 :(
您尝试做的事情似乎不是一个好主意:在多个环境中使用不同的图像违背了拥有 test/staging 个环境的目的。
相反,您应该使用相同的图像通过更改环境变量、configMaps 等在所有平台上进行测试