Helmwave v0.12.8

Прошло уже 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 render

helmwave yml

helmwave deploy

helmwave up

helmwave plan $sub

helmwave build

helmwave planfile

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

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

Открыть asciinema cast

https://asciinema.org/a/433171
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 приложения. И нужно установить их в следующей последовательности.

Соответсвенно 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:
      - [email protected]
      - [email protected]

  - name: frontend
    chart:
      name: some/frontend
    <<: *options
    depends_on:
      - [email protected]

Как видно из кода выше. Формат зависимостей – [email protected]$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/;

  • Больше интеграционных-тестов;

  • Больше стабильности.

Репозитории которые еще в разработке:

Принимаем пожелания через Feature request в issues. А обсудить их можно в telegram чате.

Источник 📢