Info
Content

Using Helm

Three Big Concepts

Чарт это helm-package. Он содержит все что нужно для запуска приложения в k8s

Репозиторий это место для хранения и раздачи чартов

Релиз это экземпляр приложения запущенного через чарт, один и тот же чарт можно устанавливать много раз в один и тот же k8s кластер и каждый раз это будет новый релиз


Чтобы искать чарты можно использовать команду helm search
У нее есть две подкоманды, hub и repo
repo будет искать локально среди добавленных репозиториев
А hub будет искать на https://artifacthub.io (для установки нужно добавить репозиторий)

На сайте хаба есть инструкция (справа кнопка 'install')
Screenshot_2021_02_02-12_49_03-2021-07-08-at-thtnhnhnhnthtnhhuuu.png

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
Back to top