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

mer*_*114 6 command-line command-line-arguments kubernetes 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"]
Run Code Online (Sandbox Code Playgroud)

但是,现在我想要一个自定义的“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)"]
Run Code Online (Sandbox Code Playgroud)

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

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

这样的命令可以执行吗?

wpn*_*ris 6

您可以在中使用环境变量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)"]

Run Code Online (Sandbox Code Playgroud)

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

是从 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)"]
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令创建 configmap kubectl,但建议使用单独的 yaml 文件。

kubectl create configmap special-config --from-literal=SPECIAL_VAL_KEY=my_special_argument_val_for_my_app
Run Code Online (Sandbox Code Playgroud)

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