Helm 3, Tillerless Helm

#kubernetes #helm

Helm asi znáte, je to balíčkovací nastro pro Kubernetes. Ted ale přišel zásadní release v podobě verze 3 a já Vám ukážu novinky a rozdíly oproti předchozí verzi, které mě zaujali.

Tillerless Helm

Největší a asi i nejočekávanější novinkou je to že Helm 3 už je čistě client, nepotřebuje se instalovat do clusteru (Tiller). Pro mě je to skvělá zpráva a možnost začít používat Helm na plno.

Dříve jsem Helm používal primárně jako Template engine, protože jsem nasazoval tímto stylem:

helm template ./helm/myapp --name myapp.cz --set host=myapp.cz | kubectl apply -f -

Výhodou byla absence nutnosti Tilleru (části Helmu běžící v clusteru) a nevýhodou bylo to že se to nechovalo jako jeden balíček a pořád jsem to musel spravovat ručně (pomocí kubectl). Další nevýhodou bylo to že helm neuměl vyrenderovat template z balíčku v repozitari, také jsem musel mít zdrojaky součástí repozitare, který z Gitlab CI nasazoval, a nebo nějak stažené.

To se teď mění. Mužů používat Helm i jako správě nasazených aplikaci.

Nasazování přímo z Helmu

Když nasazují přímo z Helmu, mám několik možnosti a vasechny jsou pěkně:

Podle Chartu

helm řepo add ondrejsika https://helm.oxs.cz
helm install hello ondrejsika/oné-image --set hello.k8s.sikademo.com

Ze zdroje Chartu

helm install hello2 ./helm/oné-image --set hello2.k8s.sikademo.com

Z archivu Chartu

helm install hello3 ./oné-image.tgz --set hello3.k8s.sikademo.com

Z archivu Chartu na webu

helm install hello4 https://helm.oxs.cz/oné-image-1.1.1.tgz --set hello4.k8s.sikademo.com

Z Chartu ve specifickém repozitari

helm install hello5 --řepo https://helm.oxs.cz oné-image --set hello5.k8s.sikademo.com

Helm Upgrade

Příkaz helm upgrade se chová stejně jako ve verzi 2, ale díky nové struktuře helm install to celé dává větší smysl. Zároveň pořád funguje parametr --install tazke můžete pořád používat klasický install upgrade, což je obdoba helm template ... | kubectl apply ....

helm upgrade --install nginx ondrejsika/oné-image --set image=nginx --set host=nginx.k8s.sikademo.com

a samotný upgrade:

helm upgrade nginx ondrejsika/oné-image --set image=nginx:alpíne --set host=nginx.k8s.sikademo.com

Helm Uninstall místo Helm Delete

Helm 3 má příkaz helm uninstall, který nahrazuje helm delete ředíš --purge. Po odinstalování můžete rovnou nasadit nový chart pod stejným jménem.

Pokud chcete zachovat historii (dříve bez parametrů --purge), teď musíte přidat parametr --keep-history

Helm Status

Příkaz helm status neukazuje resources jak jsme byli zvyklí z Helm 2, je to spíš feature než bug, ale podle diskuze na Githubu se tam možná tato funkcionalita vrátí.

Dá se to vyřešit pomoci těchto způsobu:

helm get manifest hello | kubectl get -f -

Nebo na to Marc Khouzam napsal plugin do Helmu, který vypíše jak status tak ten kubectl get .... Stačí nainstalovat:

helm plugin install https://github.com/marckhouzam/helm-fullstatus

A pustit:

helm fullstatus hello

Ostatní změny v CLI

  • helm init je odstraněn, není potřeba ;)
  • helm inspect -> helm show
  • helm fetch -> helm pull

Závěr

Helm 3 je jednoznačně super, splnil všechny mě očekávání. Myslím, že řada lidí nechtěla používat Helm kvůli Tilleru, teď už to není důvod. Helm 3 používám už nějakou dobu jako beta & RC a jsem s ním naplno spokojený.

Zdroje