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

问题描述 投票:0回答:1

如果我使用以下命令运行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

可以执行这样的命令吗?

kubernetes command-line command-line-arguments kubectl
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.