Я использую 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 игнорирует мою конфигурацию пространства имен?
Спасибо