Как стать автором
Обновить

В продолжение бурной дискуссии в Helm это анти-паттерн.

Если необходимо заниматься дистрибуцией именно чартов Helm, то реализовать такую функциональность не составит особого труда.

С помощью директивы include в любой Makefile подключается еще один Makefile – helm.mk
Оказывается variable scoping – это давно решенная проблема и для этого не нужен ни YAML ни cuelang.

Пишется скрипт на Python который генерирует чарт Helm:

define GENERATE_HELM_SCRIPT
import os
import yaml
import sys
from pathlib import Path

def make_helm_compatible(value):
    """Convert values to Helm template syntax where appropriate"""
    if isinstance(value, dict):
        return {k: make_helm_compatible(v) for k, v in value.items()}
    elif isinstance(value, list):
        return [make_helm_compatible(v) for v in value]
    elif isinstance(value, str) and value.isdigit():
        return f"{{{{ .Values.{value} }}}"
    return value

И он может заодно сгенерировать еще и схему для values файла.

Вызываем нужный таргет:

make generate-chart

Получаем Helm чарт:

tree vault-chart
vault-chart
├── Chart.yaml
├── templates
│   ├── clusterrolebinding-vault-server-binding.yaml
│   ├── configmap-vault-config.yaml
│   ├── service-vault-internal.yaml
│   ├── service-vault-service.yaml
│   ├── serviceaccount-vault-service-account.yaml
│   └── statefulset-vault.yaml
└── values.yaml

2 directories, 8 files

Правда заключается в том, что задачи которые решает DevOps успешно решались задолго до DevOps.

gen_helm_chart.py

LLM сделали код дешевле, но зато дебажить стало непростительно дорого.

Теги:
0
Комментарии0

Публикации

Работа

DevOps инженер
32 вакансии

Ближайшие события