Как передать аргумент командной строки в команду kubectl create - PullRequest
1 голос
/ 28 февраля 2020

Если я запускаю команду 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)"]

и я хочу каким-то образом установить значение $ ARG $ при выполнении команды kubectl create -f deployment.yaml. Как это сделать?

Я ищу что-то вроде: kubectl create -f deployment.yaml --ARG=new_arg

Можно ли выполнить такую ​​команду?

1 Ответ

3 голосов
/ 28 февраля 2020

Вы можете использовать переменные окружения в 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.

Здесь пример загрузки значения из 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

Вы можете даже удалите args из вышеупомянутого pod yaml, если в образе Dockerfile для изображения была указана та же переменная среды.

...