【问题标题】:How to pass command line argument to kubectl create command如何将命令行参数传递给 kubectl create 命令
【发布时间】:2020-02-28 20:49:08
【问题描述】:

如果我运行 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

这样的命令可以执行吗?

【问题讨论】:

  • 你不能用 kubectl 做到这一点。请参阅 kustomize 或 helm 以从 Deployment 创建模板。

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


【解决方案1】:

您可以在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

【讨论】:

  • 但是如何使用kubectl create -f ... 命令设置该SPECIAL_ARG_VAL 的值?
  • 啊,你可以从 configmap 或 secrets 中设置 env 变量的值。这是从 configmap 加载值的示例:kubernetes.io/docs/tasks/configure-pod-container/…
  • @mercury0114 我已经更新了使用 configmap 的答案。
猜你喜欢
  • 1970-01-01
  • 2010-09-11
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 2020-08-02
  • 2014-01-13
相关资源
最近更新 更多