Прошло уже 8 месяцев с момента первой и пока единственной статьи о инструменте для композинга helm чартов – helmwave.
За это время:
Преодолели планку в 100 звезд;
Вышло 7 минорных обновлений;
Появился сайт с документацией;
Перешли на goreleaser.
Поэтому цель статьи:
прервать молчание;
рассказать о новых возможностях;
поделиться примерами;
набрать звёздочек на Github;
рассказать про планы на будущее.
Ломая совместимость
Добравшись до 0.11.0 версии. Пришло осознание что так больше продолжаться не может. Все версии до 0.5.0 были проверкой гипотезы. Версия 0.5.0 стала отличным инструментом. Который очень быстро начал обрастать дополнительными фичами. И начиная с 0.12.0 у нас новый ямл для конфигурации.
Было
version: 0.9.6
project: my-project
releases:
- name: my-release
chart: my-chart-repo/my-app
values:
- values.yml
options:
install: true
namespace: my-namespace
Стало
version: 0.12.8
project: my-project
releases:
- name: my-release
chart:
name: my-chart-repo/my-app
values:
- values.yml
namespace: my-namespace
createnamespace: true
Поэтому пришлось разделить документацию на до и после.
Также обновился cli. Мы пошли по пути упрощения. И в последних релизах еще избавились от алиасов для команд.
Было |
Стало |
---|---|
|
|
|
|
|
|
|
|
В планах:
helmwave up --build
Опции для билда и поднятия одновременно.Вероятно будем избавляться от helmwave.yml.tpl. В пользу только helmwave.yml
Features
Create Namespace с 0.12.x
Раньше helmwave всегда создавал namespace в kubernetes. Теперь эту опцию можно выключить.
createnamespace: false
Plan Diff с 0.12.x
Helmwave сверяет новый план с предыдущим.
Какие изменения отслеживает plan diff?
Видит изменение в манифестах. Это удается достичь благодаря helm-diff;
Отслеживает новые релизы в списке;
Показывает
warning
если релиз не найден в списке. Позволяет не терять релизы.
Запрос на эту фичу мы получили в нашем телеграм чате.
Открыть asciinema cast
Планы:
Добавить diff с live-окружением.
Remote values с 0.11.x
helmwave теперь умеет забирать values для чартов удаленно.
Какие схемы поддерживаются?
Пока только http.
version: 0.12.8
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: nginx
chart:
name: bitnami/nginx
namespace: test
values:
- https://raw.githubusercontent.com/helmwave/helmwave/main/tests/06_values.yaml
Планы:
Новые схемы s3/consul/etc
remote helmwave.yml
depends_on c 0.9.x
Позволяет указать последовательность установки релизов. Примерно как в docker-compose.
Допустим есть 4 приложения. И нужно установить их в следующей последовательности.
Соответсвенно helmwave.yml будет иметь следующий вид:
version: 0.12.8
.options: &options
createnamespace: true
namespace: my-namespace
releases:
- name: queue
chart:
name: some/queue
<<: *options
- name: db
chart:
name: some/db
<<: *options
- name: backend
chart:
name: some/backend
<<: *options
depends_on:
- db@my-namespace
- queue@my-namespace
- name: frontend
chart:
name: some/frontend
<<: *options
depends_on:
- backend@my-namespace
Как видно из кода выше. Формат зависимостей – $RELEASE_NAME@$NAMESPACE
.
Graph view
После того как добавили depends_on
. Была добавленна возможность увидеть в консоли порядок деплоя.
Помимо этого. Граф также сохраняется в формате markdown в директории плана.
cat .helmwave/graph.md
# Depends On
...
Kubedog с 0.8.x
Kubedog – библиотека коллег из Фланта для отслеживания ресурсов в kubernetes.
Kubedog глубоко уходит корнями в werf и logboek. Ворфлоу с аннотациями здесь такой же как в werf: Просто добавляете нужную аннотацию к ресурсу.
apiVersion: apps/v1
kind: Deployment
...
spec:
template:
metadata:
annotations:
helmwave.dev/show-service-messages: "true"
...
Планы:
Новые аннотации.
Более стабильная работа. На текущий момент нужно включать этот функционал отдельно.
Что дальше?
Проект тесно связан с helm. Если появится новый функционал в helm, то будем стараться приносить его и в helmwave.
Пока планируем сфокусироваться на базовых вещах:
Больше документации https://helmwave.github.io/docs/;
Больше интеграционных-тестов;
Больше стабильности.