Kubernetes 部署 - 传递参数

tes*_*tbg 2 kubernetes kubectl kubernetes-deployment

kubectl当我使用命令应用部署文件时,我想将参数传递给 Kubernetes 部署。

示例:在我的部署 .yaml 中,我有如下参数,我想在运行时传递参数值kubectl apply - f <my-deployment>.yaml

因此,在下面的示例中,我想在运行上述 kubectl 命令时覆盖 args - userid 和 role。

spec:
      containers:
        - name: testimage
          image: <my image name>:<tag>
          args:
          - --userid=testuser
          - --role=manager
Run Code Online (Sandbox Code Playgroud)

Rad*_*nka 7

简单的答案是。你不能那样做。

kubectl不是模板引擎。正如一些人提到的,您可以使用 Helm 或 Kustomize 等选项来解决此问题。我鼓励您研究 Helm3,因为它可以使用类似 的命令很好地解决您的问题helm upgrade --install ... --set userid=xxx --set role=yyy

如果您只使用 kubectl,您可能想使用它从 stdin 获取 yaml 的能力,并首先通过任何类型的模板传递 yaml。IE。如下 :

...
args:
- --userid=$USER
- --role=$ROLE
...
Run Code Online (Sandbox Code Playgroud)
cat resource.yaml | USER=testuser ROLE=manager envsubst | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

显然任何其他字符串替换方法都可以(sed、awk 等)