Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

Helm — package manager pro Kubernetes

22. 02. 2017 2 min čtení CORE SYSTEMSai

Psát YAML manifesty pro každý Kubernetes deployment ručně je únavné a chybové. Helm slibuje šablonování, verzování a sdílení Kubernetes konfigurací. Po měsíci používání sdílíme naše zkušenosti.

Problém, který Helm řeší

Typická aplikace v Kubernetes potřebuje Deployment, Service, ConfigMap, Secret, Ingress, PersistentVolumeClaim… To je snadno 200+ řádků YAML. A když máte deset prostředí (dev, staging, produkce × klienti), začnete copy-pastovat a brzy se v tom ztratíte.

Helm zavádí koncept chartu — balíčku šablon s parametry. Jeden chart, různé values pro různá prostředí. Verzovaný, sdílitelný, testovatelný.

Architektura Helm 2

Helm 2 má dvě komponenty: helm (CLI klient) a Tiller (server-side komponenta běžící v clusteru). Tiller drží stav releases a aplikuje změny do clusteru.

Tiller je kontroverzní — běží s cluster-admin právy a je potenciální security riziko. Řešíme to pomocí TLS certifikátů a namespace-scoped Tiller instancí.

$ helm init --tiller-tls --tiller-tls-verify
$ helm install stable/prometheus \
    --name monitoring \
    --namespace observability \
    --values prod-values.yaml

Náš první vlastní chart

Vytvořili jsme generický chart pro Java microservices. Parametrizuje se image name, repliky, resource limits, environment variables, ingress host. Jeden chart pro všechny naše Spring Boot služby.

myapp-chart/
  Chart.yaml          # metadata
  values.yaml         # defaultní hodnoty
  templates/
    deployment.yaml   # Go template
    service.yaml
    ingress.yaml
    configmap.yaml

Stable repository — poklady komunity

Helm má oficiální repository stabilních chartů. Prometheus, Grafana, nginx-ingress, Jenkins, Redis, PostgreSQL — vše připravené k nasazení. Kvalita se liší, ale jako základ k úpravě je to vynikající.

Lessons learned

  • Verzujte charty — semantic versioning, jako knihovny
  • Vlastní chart repository — ChartMuseum pro interní charty
  • Helm test — pište testy pro své charty
  • Linthelm lint chytí spoustu chyb ještě před deployem
  • Dry runhelm install --dry-run --debug pro review generovaných manifestů

Helm je must-have pro Kubernetes

Bez Helm bychom se v YAML manifestech utopili. Tiller není dokonalý a security model má mezery, ale produktivita, kterou Helm přináší, je obrovská. Sledujeme diskuze o Helm 3, který by měl Tiller odstranit úplně.

helmkubernetesdevopscharts