Skip to content

Kubernetes

Bij Sin hebben we 2 kubernetes clusters

Wat is Kubernetes?

Kubernetes is een open-source containersysteem voor het automatiseren van applicatie-implementatie, schaling en beheer.

Waarvoor gebruiken Kubernetes bij SIN?

Met Kubernetes kunnen we gemakkelijk onze producten/services publiceren en beheren.

Hoe maak ik verbinding met onze Kubernetes cluster?

Wanneer je wil communiceren met onze Kubernetes cluster log je in via ssh op k8s-sin-cli.

Handige commando's

Op de vm k8s-sin-cli staat alles al geconfigureerd.
kubectx om de lijst van kubernetes clusters op te halen
kubectx <naam cluster> om van cluster te veranderen
kubectl get nodes om de status van de nodes op te halen
kubens om de lijst van namespaces op te halen
kubens <naam namespace> om van namespace te veranderen
kubectl get pods om de lijst van pods op te halen
kubectl logs <pod name> om naar de logs van de pod te zien
kubectl exec -it <pod name> -- /bin/bash om een shell te starten in de pod (soort van ssh)
kubectl exec -it <pod name> -- /bin/sh om een shell te starten in de pod (soort van ssh)

Hoe zelf een applicatie deployen op de Kubernetes cluster van SIN?

Vereisten

Je plaats je code in een project op gitlab van sin
Je hebt toegang tot de jenkins van sinners.

Wat moet er in het project worden toegevoegd?

Dockerfile
Jenkinsfile
kubernetes deployment

Wat moet er op Jenkins worden gedaan?

Ga naar de jenkins van sin.
Login met het sin account de gegevens hier van vind je op LastPass.
Maak een nieuw item met een duidelijke naam aan en kies voor Pipeline.

Duid bij Build Triggers 'Build when a change is pushed to GitLab. GitLab webhook URL' aan.
Klik op advanced en genereer een secret token. Kopieer de token want je hebt deze later nog nodig.
Kopieer ook de Gitlab webhook URL (deze heb je ook nog nodig).

Kies bij Pipeline voor 'Pipeline script from SCM'
Kies bij SCM 'Git'
Kopieer de ssh link van je gitlab repositorie.
En bij Credentials kies je 'jenkins (jenkins ssh key)'.
Bij Script Path vul je de naam in van je Jenkinsfile.
Je bent klaar en klikt op Save.

Automatisch deployen naar kubernetes na git push.

Als je automatisch de master branch wilt deployen naar kubernetes moet je deze stappen volgen anders mag je dit stuk overslaan.
Ga terug naar GitLab en open de Settings van je project en ga naar Integrations.
Vul de URL en Secret Token in die je ernet hebt gekopieerd en klik op 'Add webhook'.

Wat moet er op Kubernetes worden gedaan?

Login op k8s-sin-cli.
Maak daar een nieuw bestand om een namespace te genereren.
Maak daar een nieuw bestand om een ingress configuratie te maken.

Voer het commando kubectl apply -f namespace.yaml uit om de namescpace te genereren
Voer het commando kubens <namespace-name> uit om van namespace te veranderen.
Voer het commando kubectl create secret docker-registry docker-secret --docker-server=http://registry.gitlab.com --docker-username=<username> --docker-password=<password> --docker-email=jenkins@sinners.be
Vervang door het password van de gitlab gebruiker.
Run het commando kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "docker-secret"}]}'
Voer het commando kubectl apply -f ingress.yaml uit om de ingress te maken.