In questo step, creerai uno script che verifica se il Deployment dell'applicazione Flask (gestita tramite Helm) soddisfa le best practices in Kubernetes. In particolare, lo script controllerà la presenza dei seguenti elementi:
- Readiness Probes
- Liveness Probes
- Resource Requests
- Resource Limits
Se uno o più di questi elementi non sono configurati, lo script restituirà un errore.
-
Accesso al Cluster Kubernetes
- Assicurati di avere configurato correttamente
kubectl
sul tuo ambiente, con accesso al cluster Kubernetes dove è stato rilasciato il Deployment. - Lo script richiede l'accesso tramite un Service Account con il ruolo
cluster-reader
(definito nel filerbac.yaml
).
- Assicurati di avere configurato correttamente
-
Service Account e RBAC configurati
- Prima di eseguire lo script, assicurati di aver creato il Service Account e il relativo ClusterRoleBinding (seguendo i passaggi descritti nei file
serviceaccount.yaml
eclusterrolebinding.yaml
).
- Prima di eseguire lo script, assicurati di aver creato il Service Account e il relativo ClusterRoleBinding (seguendo i passaggi descritti nei file
-
Installazione di
jq
- Lo script utilizza
jq
per processare l'output JSON dikubectl
. Se non haijq
installato nel tuo ambiente (per esempio, nel container Jenkins Slave), esegui il comando:apt install jq
- Lo script utilizza
Lo script che verrà creato si chiama check_deployment.sh
ed effettua le seguenti operazioni:
-
Autenticazione tramite Service Account: Utilizzerà un Service Account di tipo
cluster-reader
per ottenere l'accesso al cluster Kubernetes. -
Recupero del Deployment: Lo script eseguirà il comando
kubectl get deployment
per ottenere la configurazione del deploymentformazione-sou-deployment
nel namespaceformazione-sou
. -
Verifica della configurazione: Lo script controllerà se sono presenti:
- Readiness Probe
- Liveness Probe
- Resource Requests
- Resource Limits
-
Output di Errore: Se una o più delle configurazioni richieste sono mancanti, lo script restituirà un errore con il dettaglio delle configurazioni mancanti.
-
Salva lo script su una macchina locale o sul container Jenkins come
check_deployment.sh
oppurecheck_deployent.py
:Lo script è in questa repo, sia in versione bash che python.
-
Esegui lo script nel tuo ambiente (possibile sia nel container Jenkins Slave sia sul Mac):
bash check_deployment.sh
bash check_deployment.py
Se lo script rileva che una o più configurazioni mancano nel
Deployment
, restituirà un errore indicando le voci mancanti (ad esempio, “Liveness Probe”, “Readiness Probe”, ecc.). -
Verifica il risultato: Se lo script restituisce un messaggio di errore, aggiorna il tuo
values.yaml
e ildeployment.yaml
per includere le configurazioni mancanti (comelivenessProbe
,readinessProbe
,requests
elimits
).- Dopo aver aggiornato i file, rilancia la pipeline su Jenkins per applicare le modifiche.
L’esecuzione dello script garantirà che il tuo Deployment rispetti le best practices in Kubernetes, assicurando che siano configurati correttamente i Readiness Probes, Liveness Probes, Resource Requests e Resource Limits. Se mancano, lo script ti indicherà cosa manca, così potrai aggiornare la configurazione e migliorare la stabilità e l’affidabilità della tua applicazione.