Как я могу временно изменить переменную среды модуля kubernetes? - PullRequest
1 голос
/ 23 сентября 2019

У нас есть службы Python, работающие в модулях в кластере kubernetes.Службы настроены на получение своего уровня журнала из переменной среды.Эти env vars устанавливаются во время развертывания сервиса в конвейере gitlab.В целях отладки я хочу иметь возможность просто изменить env var на одном модуле и перезапустить его, без необходимости повторного развертывания службы из gitlab.

Прежде чем мы перешли на kubernetes, мы запускали наши контейнеры на ранчерегде описанное изменение было очень легко сделать в графическом интерфейсе.Измените env var -> hit update -> контейнер перезапустится автоматически.

Я нашел эту статью , в которой предлагается изменить набор реплик с помощью команды, подобной

kubectl set env rs [REPLICASET_NAME] [ENV_VAR]=[VALUE]

, а затем завершить работу модуля, после чего он будет воссоздан сenv var установлен соответствующим образом.

Но он также гласит:

Никогда не делайте этого в производственной системе.

Никогда даже не делайте этого в среде разработчика, не заботяськак это может повлиять на ваш рабочий процесс развертывания.

Является ли это единственным / лучшим способом достижения моей цели быстрого изменения env var в запущенном модуле для отладки?

1 Ответ

2 голосов
/ 23 сентября 2019

Это единственный / лучший способ достичь моей цели быстрого изменения env var в модуле бега для отладки?

Краткий ответ: Да.

Длинный ответ: я никогда не использовал и не читал о Rancher, но подозреваю, что он также изменял шаблон ReplicaSet или Deployment template env var, который вызывал обновление Pod.Это действительно единственный способ изменить env var в Pod.Вы не можете изменить env vars на работающем контейнере или работающем Pod.Вы не можете сделать это в контейнерах Docker, и вы не можете сделать это в Kubernetes, поэтому я предполагаю, что вы не можете сделать это в Rancher.Вы можете только перезапустить Pod с другой спецификацией.

Почему?

Поскольку контейнеры - это просто процессы, выполняющиеся на хост-компьютере.Как только процесс запущен, невозможно изменить среду процесса, не не прибегая к грязным взломам .

Если вас беспокоит только предупреждение о том, что это не нужно делать в dev илиprod, я бы сказал, что те же предупреждения относятся к описанному вами рабочему процессу Rancher, поэтому, если вы готовы пойти на риск, здесь все будет по-другому.

...