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, anebo 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 repo add ondrejsika https://helm.oxs.cz
helm install hello ondrejsika/one-image --set hello.k8s.sikademo.com
Ze zdroje Chartu
helm install hello2 ./helm/one-image --set hello2.k8s.sikademo.com
Z archivu Chartu
helm install hello3 ./one-image.tgz --set hello3.k8s.sikademo.com
Z archivu Chartu na webu
helm install hello4 https://helm.oxs.cz/one-image-1.1.1.tgz --set hello4.k8s.sikademo.com
Z Chartu ve specifickém repozitari
helm install hello5 --repo https://helm.oxs.cz one-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/one-image --set image=nginx --set host=nginx.k8s.sikademo.com
a samotný upgrade:
helm upgrade nginx ondrejsika/one-image --set image=nginx:alpine --set host=nginx.k8s.sikademo.com
Helm Uninstall místo Helm Delete
Helm 3 má příkaz helm uninstall
, který nahrazuje helm delete redis --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 pomocí 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
Školení Kubernetes
Zaujal Vás Kubernetes? Chcete se dozvědět více? Přijďte na mé Školení Kubernetes!
Případně si můžete vybrat z nabídky otevřených kurzů.
Ondřej Šika
Jsem freelance DevOps konzultant a lektor. Zlepšuji práci vývojářských týmu zaváděním efektivních procesů ve vývoji. Naučím Vás používat prověřené nástroje a technologie, které povedou k rychlejšímu vývoji a bezpečnějšímu provozu vašeho software.