Helmwave v0.12.8

Kate

Administrator
Команда форума
Прошло уже 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

Поэтому пришлось разделить документацию на до и после.

00e525dc22adfe78e37d028b78992af7.png

Также обновился cli. Мы пошли по пути упрощения. И в последних релизах еще избавились от алиасов для команд.

Было​
Стало​
helmwave renderhelmwave yml
helmwave deployhelmwave up
helmwave plan $subhelmwave build
helmwave planfilehelmwave build
В планах:

  • 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 если релиз не найден в списке. Позволяет не терять релизы.
8480873924a1151b65c91520792a6f4c.png

Запрос на эту фичу мы получили в нашем телеграм чате.

Открыть asciinema cast

https://asciinema.org/a/433171
Планы:

  • Добавить 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 приложения. И нужно установить их в следующей последовательности.
807ac4000ec6b3deea34e51410ac46ee.png

Соответсвенно 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. Была добавленна возможность увидеть в консоли порядок деплоя.

545d8c73b447ede313891275535300ee.png

Помимо этого. Граф также сохраняется в формате 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/;
  • Больше интеграционных-тестов;
  • Больше стабильности.
Репозитории которые еще в разработке:


 
Сверху