Skip to content

Helm - packet manager dla Kubernetes

Helm jest to aplikacja umożliwiająca łatwe wdrażanie aplikacji na klaster Kubernetes, utrzymywanie ich, aktualizowanie, a także usuwanie ich z klastra.

Możemy go porównać do Packet Managera typu apt, który zarządza aplikacją (dla Helm aplikacje określane są jako charty). Chart zawiera komplet manifestów YAML oraz wartości konfiguracyjnych potrzebnych do uruchomienia aplikacji wraz z jej zależnościami.

Helm 3 - 3-way strategic merge patch

Jest to jeden z kluczowych mechanizmów w Helm. Jest to mechanizm pozwalający aby bezpiecznie zaaktualizować zasoby na klastrze Kubernetes, nie nadpisując wykonywanych zmian ręcznie.

Helm porównuje 3 wersje tego samego zasobu: - Last Applied - ostatnio wdrożone przez Helm - Live - jak obecnie stan wygląda - Desired - jak zasób powinien wyglądać w istniejącym stanie - teraz (nowy chart)

Dzięki takiemu sprawdzeniu Helm nadpisuje i zmienia tylko te wartości, które zostały w prowadzone w nowym Charcie, a nie co zostało ręcznie wpisane - to jest zostawiane.

W praktyce jak to wygląda:

1. Poprzedni release (Last Applied )

spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: app
          image: myapp:v1

2. Obecny stan klastra (Live)

Ktoś wprowadza zmianę lokalnie (z łapy) - bez wiedzy Helm.

spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: app
          image: myapp:v1

3. Żądany stan klastra (Desired)

To co mamy w Charcie.

spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: app
          image: myapp:v2

Końcowy stan

  • Nie zostaną zmienione repliki replicas: 3 - ustawione z łapy
  • Zaaktualizuje Helm jedynie wersję image: myapp:v2
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: app
          image: myapp:v2