如何将命令行参数传递给kubectl create命令

时间:2020-02-28 10:27:02

标签: kubernetes command-line command-line-arguments kubectl

如果我使用以下命令运行kubectl create -f deployment.yaml命令 以下deployment.yaml文件,一切成功。

apiVersion: v1
kind: Pod
metadata:
 name: my_app
 labels:
  app: my_app
spec:
 containers:
  - name: my_app
    image: docker:5000/path_to_my_custom_image
    args: ["my_special_argument"]

但是,现在我想要一个自定义的“ my_special_argument” 如下

apiVersion: v1
kind: Pod
metadata:
 name: my_app
 labels:
  app: my_app
spec:
 containers:
  - name: my_app
    image: docker:5000/path_to_my_custom_image
    args: ["$(ARG)"]

,我想在执行kubectl create -f deployment.yaml命令时以某种方式设置$ ARG $的值。该怎么做?

我正在寻找类似的东西: kubectl create -f deployment.yaml --ARG=new_arg

可以执行这样的命令吗?

1 个答案:

答案 0 :(得分:3)

您可以在deployment.yaml

中使用环境变量
apiVersion: v1
kind: Pod
metadata:
 name: my_app
 labels:
  app: my_app
spec:
 containers:
  - name: my_app
    image: docker:5000/path_to_my_custom_image
    env:
    - name: SPECIAL_ARG_VAL
      value: "my_special_argument_val_for_my_app"
    args: ["$(SPECIAL_ARG_VAL)"]

此外,您可以使用Secrets或Configmaps加载环境变量的值。

Here是从configmap加载值的示例

apiVersion: v1
kind: Pod
metadata:
 name: my_app
 labels:
  app: my_app
spec:
 containers:
  - name: my_app
    image: docker:5000/path_to_my_custom_image
    env:
    - name: SPECIAL_ARG_VAL
      valueFrom:
        configMapKeyRef:
          name: special-config
          key: SPECIAL_VAL_KEY
    args: ["$(SPECIAL_ARG_VAL)"]

您可以使用kubectl如下创建配置映射,但建议使用单独的yaml文件。

kubectl create configmap special-config --from-literal=SPECIAL_VAL_KEY=my_special_argument_val_for_my_app

如果您在镜像的Dockerfile中定义了相同的环境变量,甚至可以从上面的pod yaml中删除args