applicaties inzetten op Kubernetes met Helm

Dit artikel is een vervolg op mijn artikel“Wat is Helm en hoe installeer je het op een Ubuntu 20.04 server?“. Als je nieuw bent met Helm, raad ik je aan eerst het genoemde artikel door te nemen. In dit artikel zullen we Apache vrijgeven van de bestaande grafiek. We zullen een voorbeeldgrafiek maken en die vrijgeven, upgraden, terugdraaien, verwijderen en herstellen. Laten we de commando’s in het kort bekijken voor we ze later in het artikel gebruiken.

  1. helm zoeken: Zoek naar Helm grafieken
  2. helmrepo: Voer bewerkingen uit als toevoegen, oplijsten, verwijderen, bijwerken, en indexeren op Repository
  3. helmverwijderen: Verwijder de kaart die op zijn beurt alle Kubernetes objecten ervan verwijdert.
  4. helmstatus: Geef de status van de release weer.
  5. helmcreate: Maak een helm grafiek aan.
  6. helminstall: Installeer een grafiek die op zijn beurt zijn Kubernetes objecten aanmaakt
  7. helmupgrade: Upgrade een release met wijzigingen die we er in aangebracht hebben.
  8. roergeschiedenis: Haal de geschiedenis van de release op.
  9. helmrollback: Draai veranderingen terug naar de vorige versie.

Alvorens verder te gaan wordt aangenomen dat je bekend bent met de basisprincipes van Helm. Er wordt ook verondersteld dat je een Kubernetes cluster hebt en dat de Helm cliënt daar al in geïnstalleerd is.

Vereisten

  1. Kubernetes Cluster met minstens 1 worker node.
    Als je wilt leren hoe je een Kubernetes Cluster maakt, klik danhier. Deze gids helpt je een Kubernetes cluster te maken met 1 Master en 2 Nodes op AWS Ubuntu 18.04 EC2 Instances.
  2. Helm geïnstalleerd op je master node(Zoek naar mijn artikel met de naam “Wat is Helm en hoe installeer je het op Ubuntu 20.04 server” om de basis van Helm te begrijpen en het te installeren).

Wat zullen we doen?

  1. Geef een voorbeeldgrafiek vrij uit de repo.
  2. Maak een grafiek en geef een voorbeeld vrij.
  3. Upgrade de release.
  4. Herstel de release nadat hij verwijderd is

Geef een voorbeeldkaart uit de repo vrij

Laten we eerst controleren of de “helm” beschikbaar is op de server of niet.

helm versie

Laten we als voorbeeld proberen een Apache kaart uit de hub te installeren. Voer het volgende commando uit om Apache op de hub te zoeken.

roer zoek hub apache

Zoek een kaart op Hub

Je krijgt een reeks resultaten, kopieer de URL van een van de zoekopdrachten voor Apache. In dit geval kopieerde ik de eerste URL.

Klik op de URL in de web browser en je ziet een pagina als volgt.

Op deze pagina krijg je commando’s om een repo aan je lokale systeem toe te voegen en de kaart daaruit te installeren.

Verkrijg een URL van de Repo van de Grafiek

Voer de commando’s uit op je lokale systeem die de repository voor de Apache kaart zullen toevoegen.

roer repo toevoegen bitnami https://charts.bitnami.com/bitnami

roer repo lijst

Zodra je de repository op je systeem hebt ben je helemaal klaar om de kaart te installeren en een release voor Apache te maken met Helm.

helm install my-release bitnami/apache

Voeg een repo toe en installeer de kaart

Bij succesvolle uitvoering van de commando’s zie je de uitvoer als hierboven.

Zodra de kaart is vrijgegeven kun je objecten zien die op het Kubernetes cluster zijn aangemaakt.

kubectl get nodes

kubectl get pods

Je kunt nu het IP van de pod krijgen en met het curl commando proberen op de Apache pagina te komen.

kubectl get pods -o wide

kubectl get svc

curl 10.244.1.2:8080

Controleer Kubernetes objecten die door de grafiek zijn aangemaakt

Als je de release wilt verwijderen kun je dat eenvoudig doen met het volgende commando

helm verwijder mijn-release

Je kunt een lijst van releases op het cluster maken en zien of de release met succes verwijderd is of niet.

helm ls

roer status mijn-release

Verwijder de vrijgave

Maak een grafiek en ontplooi een voorbeeldapplicatie

In het bovenstaande scenario installeerden we een kaart die gemakkelijk beschikbaar en geconfigureerd was. We kunnen nu onze eigen kaart maken en onze toepassing vrijgeven. Het maken van een kaart is heel eenvoudig met helm. Als je het volgende commando uitvoert krijg je een grafiek met een voorbeeld toepassing van Nginx erin.

helm create my-first-chart

Verken de mappenstructuur van de grafiek die we met het bovenstaande commando maakten.

cd mijn-eerste-grafiek/

ls -l

ls -l grafieken/

ls -l sjablonen/

ls -l sjablonen/testen/

Maak een Grafiek

Controleer de inhoud van het bestand Chart.yaml.

ls -lt

cat grafieken.yaml

Zie Grafiek.yaml

Controleer de inhoud van values.yaml

ls -lt

cat waarden.yaml

Zie waarden.yaml

Laten we nu de voorbeeldapplicatie inzetten met de lokale grafiek.

pwd

cd .

ls -l | grep mijn-eerste-grafiek

kubectl get pods

helm install my-first-release my-first-chart/

Maak een release met de Chart

Zodra de kaart met succes is vrijgegeven zie je dat er een pod in het cluster is aangemaakt.

kubectl get pods

kubectl get svc

Je kunt nu via de service toegang krijgen tot de Nginx pod.

curl 10.104.229.187

Controleer Kubernetes objecten die door de grafiek zijn aangemaakt

Je kunt informatie vinden over de release die we gemaakt hebben met het volgende commando.

roer ls

helm status my-first-release

Controleer vrijgave status

Upgrade de release

In het bovenstaande scenario maakten we een grafiek met een voorbeeld Nginx toepassing. De replicatelling in het bovenstaande scenario was 1. Als je de replicatelling wilt verhogen kun je dat gemakkelijk doen door veranderingen aan te brengen in values.yaml bestand.

cat my-first-chart/values.yaml | grep replica

vim my-first-chart/values.yaml

cat my-first-chart/values.yaml | grep replica

roer ls

Nu kun je gemakkelijk je veranderingen uitrollen en je release upgraden.

helm upgrade my-first-release my-first-chart/

Je ziet zelfs dat de revisie van de release bijgewerkt is tot 2.

roer ls

Deze keer zie je twee pods in het cluster draaien, want we hadden de replicatelling op 2 gezet.

kubectl get pods

Verander de ReplicaCount en upgrade de release

roerganger ls

Als we de geschiedenis van de release bekijken zien we dat de release twee revisies heeft. Revisie één had 1 pod en later werkten we de replicatelling bij tot 2 waardoor revisie 2 van de release ontstond.

roer geschiedenis mijn-eerste-release

Als we niet willen dat de wijzigingen in revisie 2 worden vrijgegeven en terug willen naar revisie 1, kunnen we dat eenvoudig doen met het volgende rollback commando.

roer rollback mijn-eerste-release 1

roer ls

En dit zal revisie 3 voor de release aanmaken.

roer geschiedenis mijn-eerste-release

Je ziet nu dat er nog maar één pod draait in het cluster.

kubectl get pods

Controleer de geschiedenis en rol de release terug

Voor het geval je de vrijgegeven voorbeeld Nginx toepassing uit de kaart wilt verwijderen, kun je dat doen door de release te verwijderen.

helm ls

roer verwijder mijn-eerste-release

roer ls

Verwijder de vrijgave

Herstel de release nadat hij verwijderd is

In het bovenstaande scenario hebben we de release verwijderd. Maar standaard bewaart de release zijn release geschiedenis niet als hij verwijderd wordt. Als je in zo’n scenario wilt terugzetten, lukt dat niet tenzij je de optie –keep-history specificeert bij het commando delete release.

helm ls

helm install my-second-release my-first-chart/

helm ls

Als je tijdens het verwijderen van de release de optie –keep-history opgeeft, maakt de helm een nieuwe release versie aan. Op deze manier kun je terugkeren naar de vorige werkende versie, zelfs nadat je de release of toepassing verwijderd hebt.

helm verwijder mijn-second-release –keep-history

roer ls

roer ls -a

roer geschiedenis mijn-second-release

roer rollback mijn-second-release 1

roer ls

roer geschiedenis mijn-second-release

Wis en herstel de vrijgave

Conclusie

In dit artikel hebben we een voorbeeld toepassing ingezet van de Helm kaart die op het Internet beschikbaar is. We zagen zelfs de stappen om een Helm kaart op ons systeem te maken en vrij te geven. Hiernaast zagen we hoe je Helm charts kunt verwijderen, terug kunt rollen naar vorige versies en de release geschiedenis kunt bewaren, zelfs na het verwijderen van de chat.