In questo esercizio, configureremo il Jenkins Slave per lavorare con il cluster Kubernetes locale di Minikube che avevamo installato sul Mac all'inizio dello Step 1. Successivamente, installeremo gli strumenti necessari (kubectl
e Helm
) sul Jenkins Slave, e ci assicureremo che la pipeline possa eseguire correttamente su Jenkins.
- Un cluster Minikube in esecuzione su Mac e il suo namespace
formazione-sou
. - Jenkins Slave correttamente configurato e accessibile.
- I seguenti strumenti devono essere installati:
- kubectl (per interagire con il cluster Kubernetes).
- Helm (per gestire le release di Kubernetes).
Esegui i seguenti comandi sul Jenkins Slave per installare kubectl
e Helm
:
-
Installa
kubectl
:curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl mv ./kubectl /usr/local/bin/kubectl
-
Installa
Helm
:curl https://get.helm.sh/helm-v3.11.0-linux-amd64.tar.gz --output helm-v3.11.0-linux-amd64.tar.gz tar -zxvf helm-v3.11.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm
-
Verifica che entrambi gli strumenti siano installati correttamente:
kubectl version --client helm version
- Copia il file di configurazione
config
e i certificati di Minikube dal MacBook al Jenkins Slave:
- Il file di configurazione di kubectl si trova in
~/.kube/config
. - I certificati di Minikube si trovano nella cartella
~/.minikube/
.
- Copia i seguenti file del Mac e incollali nel Jenkins Slave:
- ~/.kube/config
cat .kube/config
- ~/.minikube/ca.crt
cat .minikube/ca.crt
- ~/.minikube/client.crt
cat .minikube/profiles/minikube/client.crt
- ~/.minikube/client.key
cat .minikube/profiles/minikube/client.key
Per modificare i file all'interno del Jenkins Slave, installare vim
:
apt install vim
Una volta copiati i file, devi aggiornare i percorsi all’interno del file config
di Kubernetes per il Jenkins Slave:
-
Apri il file di configurazione
~/.kube/config
sul Jenkins Slave e modifica i percorsi per i certificati. Assicurati che i percorsi siano corretti in base alla posizione dove hai copiato i file:apiVersion: v1 clusters: - cluster: certificate-authority: /var/jenkins_home/.minikube/ca.crt
users: - name: minikube user: client-certificate: /var/jenkins_home/.minikube/profiles/minikube/client.crt client-key: /var/jenkins_home/.minikube/profiles/minikube/client.key
-
Dopo aver aggiornato il file di configurazione, esegui il seguente comando per esportare la configurazione di
kubectl
:export KUBECONFIG=/var/jenkins_home/.kube/config
-
Verifica che la configurazione sia corretta:
kubectl config current-context kubectl get nodes kubectl get namespace
Se tutto è configurato correttamente, vedrai l’output relativo al tuo cluster Minikube.
- Accedi alla dashboard di Jenkins.
- Crea la pipeline per eseguire l'Helm Install (è possibile reperirla sempre nella repo formazione_sou_k8s).
- Avvia la pipeline dalla dashboard di Jenkins.
La pipeline dovrebbe eseguire i seguenti passaggi:
- Clonare il repository Git contenente il progetto.
- Eseguire il test di connessione con kubectl.
- Eseguire il comando
helm upgrade --install
per distribuire l’applicazione nel namespaceformazione-sou
del cluster Minikube.
Assicurati che l’output della pipeline mostri che l’installazione è stata completata con successo e che l’applicazione è stata distribuita correttamente.
-
Dopo aver eseguito la pipeline, verifica che il rilascio di Helm sia stato eseguito correttamente:
helm list --namespace formazione-sou kubectl get pods --namespace formazione-sou kubectl get svc --namespace formazione-sou
-
Se tutto è stato eseguito correttamente, dovresti vedere i pod in esecuzione e il servizio esposto per l’accesso.
Questo esercizio ti ha guidato attraverso la configurazione del Jenkins Slave per lavorare con Minikube e l’esecuzione di una pipeline di Helm. Assicurati che tutti gli strumenti siano correttamente installati e configurati e che la pipeline possa essere eseguita senza problemi per distribuire correttamente l’applicazione nel cluster Kubernetes.