
Kolejnym narzędziem (po minikube) ułatwiającym pracę z klastrem Kubernetes jest Helm. Jest to menedżer paczek, który ułatwia wgrywanie aplikacji na nasz klaster. Dostarcza on także możliwość parametryzowania zasobów wgrywanych na klaster, co pozwala na przygotowywanie różnych wersji naszych paczek.
Helm
Jak pisałem we wstępie, Helm służy do zarządzania paczkami. Paczki te wgrywane są na klaster Kubernetes. Jest to możliwe dzięki części serwerowej nazywanej Tillerem. Wykorzystanie plików yaml pozwala na parametryzowanie zasobów wgrywanych na klaster:

Instalacja
Aby zacząć pracę z narzędziem Helm, należy je zainstalować. Pod adresem https://github.com/helm/helm/releases/latest znajdziemy pliki binarne dostosowane do różnych systemów operacyjnych, w tym Linux, macOS oraz Windows. Ponadto Helm dostępny jest w wielu package managerach, takich jak Homebrew (brew install kubernetes-helm) czy [Chocolatey](https://chocolatey.org/) (choco install kubernetes-helm). Po instalacji i wydaniu polecenia helm version` powinniśmy otrzymać informację o aktualnej wersji Helma:
1 | helm version |
Zaraz naprawimy błąd Tillera.
Tiller
Tiller jest częścią serwerową rozwiązania Helm. Wykorzystywany jest do komunikacji klient-serwer. Tiller jest instalowany w systemowym namespace kube-system, dzięki czemu może wykonywać operacje na klastrze Kubernetes. Aby zainstalować część serwerową na klastrze i dodać ustawienia lokalne, należy uruchomić polecenie:
1 | helm init |
Teraz, po wydaniu polecenia kubectl get po -n kube-system, pojawił się nowy pod z Tillerem:
1 | kubectl get po -n kube-system |
Sprawdźmy teraz wersję Helma, aby mieć pewność, że klient i serwer działają poprawnie:
1 | helm version |
Jeśli dostaliśmy informacje o kliencie i serwerze, możemy przejść do zbudowania pierwszej paczki.
Chart
Paczki budowane i obsługiwane przez narzędzie Helm nazywane są Chartami. Można je tworzyć ręcznie, ale Helm dostarcza nam polecenie, które buduje szablon Charta:
1 | helm create chart-name |
Po utworzeniu Charta pojawił się nowy folder o takiej samej nazwie jak Chart. Folder ten zawiera:
values.yaml- zbiór wartości wstrzykiwanych do Charta
1 | replicaCount: 1 |
Chart.yaml- plik zawierający opis Charta
1 | apiVersion: v1 |
.helmignore- lista plików/folderów ignorowanych podczas budowania paczki
1 | my-file.txt |
templates- folder z plikamiyamlz opisami zasobów wgrywanych na Kubernetestemplates/NOTES.txt- plik, który zawiera tekst wyświetlany po poprawnej instalacji Charta
NOTES.txt
W pliku tym przechowywany jest tekst, który zostanie wyświetlony po poprawnej instalacji Charta. Najczęściej umieszcza się tam informacje, jak dostać się do naszej aplikacji oraz jakie ustawienia należy skonfigurować:
1 | {{ if eq .Values.value "Test" }} |
Repozytorium
Oprócz budowania własnych Chartów, Helm dostarcza repozytorium, na którym są już gotowe paczki. Aktualnie oficjalnym repozytorium Helma jest GitHub https://github.com/helm/charts. Repozytorium to zawiera dwa ważne katalogi: stable oraz incubator. W folderze stable znajdziemy wszystkie stabilne wersje Chartów, natomiast w folderze incubator znajdują się Charty w fazie inkubacji (nie są jeszcze oficjalnie gotowe). Listę dostępnych repozytoriów otrzymamy, wydając polecenie:
1 | helm repo list |
Helm Hub
Ludzie z firmy Bitnami przygotowali Hub, na którym możemy przeglądać dostępne Helmowe Charty [https://hub.kubeapps.com/]:

Jeśli wybraliśmy lub przygotowaliśmy interesujący nas Chart, pora na jego instalację:
1 | helm install stable/nginx # instalacja z repozytorium stable |
Lista Chartów
Po zainstalowaniu interesującego nas Charta powinien być on dostępny na liście:
1 | helm list |
Usuwamy Chart
Aby usunąć cały Chart (który może zawierać wiele elementów), należy wydać polecenie:
1 | helm delete tan-kangaroo |
Więcej
W kolejnych wpisach postaramy się stworzyć gotowy Chart.