Может ли kubectl удалить переменную окружения? - PullRequest
0 голосов
/ 09 января 2020

Здесь я могу обновить envs через kubectl patch, тогда есть ли способ удалить envs, кроме повторного развертывания deployment.yaml?

$ kubectl patch deployment demo-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name": "demo-deployment","env":[{"name":"foo","value":"bar"}]}]}}}}'
deployment.extensions "demo-deployment" patched

Могу ли я удалить env "foo" через командная строка не использует повторное развертывание во всем развертывании?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Если вас устраивает повторное развертывание, выполните следующие шаги

  1. Создайте configmap и включите переменные среды
  2. Загрузите переменные env из configmap в развертывание
envFrom:
- configMapRef:
  name: app-config
Если вы хотите удалить переменную env, удалите эти пары ключ-значение из configmap Это приведет к повторному развертыванию. Вы также можете удалить модуль из соответствующего развертывания
0 голосов
/ 09 января 2020

Учтите, что containers - это массив внутри объекта. Массивы могут быть выбраны только по их index, в отличие от объектов, которые могут быть получены по парам ключ-значение. См. Ссылку здесь . Таким образом, есть обходной путь для использования index.

Здесь у вас есть env, которые помещаются в container:

spec:
  containers:
  - env:
    - name: DEMO_GREETING
      value: Hello from the environment
    - name: DSADASD
      value: asdsad

Здесь у вас есть команда для удаления anv используя index:

kubectl patch deployments asd  --type=json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/env/1"}]

И результат:

spec:
  containers:
  - env:
    - name: DEMO_GREETING
      value: Hello from the environment

Однако это все равно перезапустит ваш модуль. Надеюсь, это поможет!

...