kubernetes - обновление helm игнорирует конфигурацию пространства имен - PullRequest
1 голос
/ 23 октября 2019

Я использую k8s и разворачиваю свое приложение с помощью gitlab. Например, в моем кластере есть пространство имен production. Если я сначала устанавливаю приложение, которое я запускаю:

$ helm install --name super-app -f values.yml ./Path/To/Project/helm

Эта команда успешно установит приложение в производство пространства имен, поскольку оно указано в значениях helm:

replicaCount: 3
imagePullSecret: regcred
namespace: production

В проектеhelm строит себе пространство имен по умолчанию:

replicaCount: 3
imagePullSecret: regcred
namespace: default

Когда я запускаю следующую команду из моего бегуна gitlab ci:

helm upgrade -f ./values.yaml --set image.tag=master-$DOCKER_IMAGE_TAG super-app ./helm

В values.yaml снова указывается производство пространства имен, Я получаю следующий результат:

Release "super-app has been upgraded.
LAST DEPLOYED: Wed Oct 23 12:15:36 2019
NAMESPACE: production
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME        DATA  AGE
super-app  1     0s

==> v1/Deployment
NAME        READY  UP-TO-DATE  AVAILABLE  AGE
super-app  0/3    3           0          0s

==> v1/Pod(related)
NAME                        READY  STATUS             RESTARTS  AGE
super-app-5d6dc6c9d-25q9g  0/1    ContainerCreating  0         0s
super-app-5d6dc6c9d-tdfhh  0/1    ContainerCreating  0         0s
super-app-5d6dc6c9d-z7h96  0/1    ContainerCreating  0         0s

==> v1/Secret
NAME        TYPE    DATA  AGE
super-app  Opaque  0     0s

==> v1/Service
NAME        TYPE          CLUSTER-IP      EXTERNAL-IP  PORT(S)         AGE
super-app  LoadBalancer  10.100.115.194  <pending>    8080:32645/TCP  0s

Приложение теперь развернуто в пространстве имен по умолчанию, а не в производстве. Даже если существующее приложение (до команды обновления helm) работает в производственном пространстве имен. Helm просто создает новый Сервис и приложение в пространстве имен по умолчанию. Та же самая логика работает для других приложений, почему k8s игнорирует мою конфигурацию пространства имен?

Спасибо

1 Ответ

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

Хотя это не задокументировано в Рекомендации по диаграммам , эта проблема ( # 5465 ) затрагивает вопросы о пространствах имен:

В общем, шаблоны не должныопределить пространство имен. Это связано с тем, что Helm устанавливает объекты в пространство имен, снабженное флагом --namespace. Опуская эту информацию, он также предоставляет шаблоны с некоторой гибкостью для операций пост-рендеринга (например, helm template | kubectl create --namespace foo -f -)

Как указано, ваш лучший вариант - добавить --namespace к вашей установке / обновлениюкоманды вместо определения его в ваших шаблонах.

...