Имеется Helm chart, который запускает API-бекенд нашего приложения, для работы которого требуется memcached.
Что бы не создавать отдельный деплоймент и не добавлять в Jenkins вторую джобу с helm install — добавим memcached как dependency для нашего чарта: тогда при установке самого приложения, Helm загрузит архив с чартом memcached, и установит его вместе с чартом нашего приложения.
Сейчас структура каталогов нашего чарта выглядит так:
tree .
.
├── charts
├── Chart.yaml
├── secrets.yaml
├── templates
│ ├── eat-backend-deployment.yaml
...
│ ├── eat-backend-ingress.yaml
│ └── _helpers.tpl
└── values.yaml
При установке зависимостей — они попадут в каталог charts, который сейчас пустой.
Учитывайте, что:
сабчарты являются независимыми от родительского чарта, и не могут зависеть от него
по этой причине сабчарт не может получить доступ к родительским values
но родитель может переопределить значения values для сабчарта
однако, у Helm имеются global values, к которым есть доступ у всех чартов
history.go:52: [debug] getting history for release eat-backend
upgrade.go:121: [debug] preparing upgrade for eat-backend
upgrade.go:129: [debug] performing update for eat-backend
upgrade.go:299: [debug] dry run for eat-backend
Release "eat-backend" has been upgraded. Happy Helming!
...
Проверяем поды:
kubectl -n eks-dev-1-eat-backend-ns get pod
NAME READY STATUS RESTARTS AGE
eat-backend-596d77bdc5-cz5g2 1/1 Running 0 28s
eat-backend-596d77bdc5-j7nmv 1/1 Running 0 88m
eat-backend-memcached-0 1/1 Running 0 43s
eat-backend-memcached-1 1/1 Running 0 29s
eat-backend-memcached-2 1/1 Running 0 16s
Поды с memcached появились, отлично.
Subcharts values
Но мне не надо 3 пода — пока хватит и одного.
Смотрим файл values.yaml нашего сабчарта, находим параметры replicaCount и pdbMinAvailable — их нам и надо переопределить, что бы вместо дефолтного значения в 3 пода задать 1.
В родительскомvalues.yam добавляем параметры для сабчарта:
...
memcached:
replicaCount: 1
pdbMinAvailable: 1
Передеплоиваем, проверяем:
kubectl -n eks-dev-1-eat-backend-ns get pod
NAME READY STATUS RESTARTS AGE
eat-backend-596d77bdc5-646kz 1/1 Running 0 14s
eat-backend-596d77bdc5-j7nmv 1/1 Running 0 96m
eat-backend-memcached-0 1/1 Running 0 8m34s
eat-backend-memcached-1 0/1 Terminating 0 8m20s
Остаётся один под.
Проверим коннект и вообще работу memcached — находим его Service: