k8s:创建部署时使用参数化的图像标签

时间:2018-09-27 09:44:47

标签: shell deployment kubernetes

我要像下面这样运行kubernetes部署:

apiVersion: v1
kind: Deployment
metadata:
  name: my-deployment
  namespace: my-namespace
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: my-app
        image: our-own-registry.com/somerepo/my-app:${IMAGE_TAG}
        env:
        - name: FOO
          value: "BAR"

这将交付给开发人员,以便他们可以使用自己喜欢的图像标签按需执行部署。

传递标记变量的最佳方法/推荐模式是什么?

在命令行上执行导出以使其在运行kubectl命令的shell上作为env var可用?

2 个答案:

答案 0 :(得分:2)

不幸的是,通过本地kubernetes工具是不可能的。来自here

  

kubectl将永远不支持变量替换。

但是,该问题案例也有一些不错的解决方法。最好的方法是通过Helm charts using templates

部署应用

答案 1 :(得分:0)

对于简单的用例,envsubst会很好:

IMAGE_TAG=1.2 envsubst < deployment.yaml | kubectl apply -f -`