Using Helm
Three Big Concepts
Чарт это helm-package. Он содержит все что нужно для запуска приложения в k8s
Репозиторий это место для хранения и раздачи чартов
Релиз это экземпляр приложения запущенного через чарт, один и тот же чарт можно устанавливать много раз в один и тот же k8s кластер и каждый раз это будет новый релиз
Чтобы искать чарты можно использовать команду helm search
У нее есть две подкоманды, hub
и repo
repo будет искать локально среди добавленных репозиториев
А hub будет искать на https://artifacthub.io (для установки нужно добавить репозиторий)
На сайте хаба есть инструкция (справа кнопка 'install')
Helm устанавливает ресурсы в определeнном порядке (напр. сначала namespace, потом что-то еще, итд)
Этот порядок есть тут https://helm.sh/docs/intro/using_helm/
Helm не ждет пока будут запущены все ресурсы из чарта
Потому что многие чарты используют большие докер образы (по 600M), такая установка может занять значительное время
Для отслеживания статуса релиза можно использовать helm status release-name
Для кастомизации чартов используются values'ы
Чтобы посмотреть что можно указывать через values в конкретном чарте, можно воспользоваться командой
[21:39:20] vandud@macbook: ~ [1]$ helm show values grafana/grafana | head -5
rbac:
create: true
## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true)
# useExistingRole: name-of-some-(cluster)role
pspEnabled: true
[21:38:38] vandud@macbook: ~ [0]$ helm show values grafana/grafana | wc -l
739
Можно переопределить некоторые и передать через ключ -f/--values values.yaml
при установке
Или через ключ --set
передать конкретные переменные--set
по приоритету выше чем --values
, поэтому set наложится на values, который наложится на дефолтные значения
Вложенные элементы можно указывать через точку, списки в скобках итд
--set outer.inner={a, b, c}
То есть через set
можно указать полноценный values.yaml
The helm install command can install from several sources:
- A chart repository (as we've seen above)
- A local chart archive (helm install foo foo-0.1.1.tgz)
- An unpacked chart directory (helm install foo path/to/foo)
- A full URL (helm install foo https://example.com/charts/foo-1.2.3.tgz)
helm upgrade
берет существующий релиз и обновляет его
Через helm rollback
можно откатиться на конкретную версию релиза
Группа команд helm repo
позволяет управлять репозиториями
helm create
позволяет быстро создать каркас для вашего собственного чартаhelm package
позволяет упаковать чарт в архив (чарты распрастраняются архивами)
[22:29:50] vandud@macbook: tmp [0]$ helm create vandud-cool-chart
Creating vandud-cool-chart
[22:29:58] vandud@macbook: tmp [0]$ cd vandud-cool-chart/
[22:30:02] vandud@macbook: vandud-cool-chart [0]$ tree
.
|-- Chart.yaml
|-- charts
|-- templates
| |-- NOTES.txt
| |-- _helpers.tpl
| |-- deployment.yaml
| |-- hpa.yaml
| |-- ingress.yaml
| |-- service.yaml
| |-- serviceaccount.yaml
| `-- tests
| `-- test-connection.yaml
`-- values.yaml
3 directories, 10 files
[22:30:04] vandud@macbook: vandud-cool-chart [0]$ helm package .
Successfully packaged chart and saved it to: /tmp/vandud-cool-chart/vandud-cool-chart-0.1.0.tgz
[22:30:09] vandud@macbook: vandud-cool-chart [0]$ tar --list -zf vandud-cool-chart-0.1.0.tgz
vandud-cool-chart/Chart.yaml
vandud-cool-chart/values.yaml
vandud-cool-chart/templates/NOTES.txt
vandud-cool-chart/templates/_helpers.tpl
vandud-cool-chart/templates/deployment.yaml
vandud-cool-chart/templates/hpa.yaml
vandud-cool-chart/templates/ingress.yaml
vandud-cool-chart/templates/service.yaml
vandud-cool-chart/templates/serviceaccount.yaml
vandud-cool-chart/templates/tests/test-connection.yaml
vandud-cool-chart/.helmignore
[22:30:19] vandud@macbook: vandud-cool-chart [0]$
No Comments