Distribuire applicazioni in Kubernetes può essere complesso, specialmente per i neofiti. Entra in gioco Argo CD, uno strumento dichiarativo alimentato da GitOps progettato per automatizzare i deployment delle applicazioni in Kubernetes. In questo workshop, imparerai come configurare e utilizzare Argo CD per distribuire applicazioni senza soluzione di continuità, con un percorso passo-passo creato per i principianti completi.
Cosa Imparerai
- Installare e configurare Argo CD.
- Distribuire applicazioni utilizzando i principi di GitOps.
- Monitorare i deployment e risolvere problemi.
- Ripristinare e gestire le versioni delle applicazioni.
- Proteggere Argo CD per l’uso in produzione.
Perché Argo CD?
Argo CD semplifica la gestione delle applicazioni in Kubernetes mantenendo continuamente sincronizzato il tuo cluster con i manifesti definiti nei repository Git. I vantaggi includono:
- Gestione Dichiarativa : Definisci lo stato desiderato del cluster in Git.
- Consegna Continua : Automatizza i deployment con sincronizzazione in tempo reale.
- Controllo Versioni : Ripristina facilmente versioni precedenti.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un cluster Kubernetes (usa Minikube, Kind o un servizio gestito come GKE, EKS, AKS).
kubectl
installato e configurato per connettersi al tuo cluster.- Un account GitHub o GitLab per ospitare i tuoi manifesti Kubernetes.
- Una familiarità di base con la sintassi YAML (trattata in questo workshop se sei nuovo).
Guida passo-passo
1. Configurare un Cluster Kubernetes
Passaggio 1: Installa Minikube
Se non hai un cluster, utilizza Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
Passaggio 2: Avvia Minikube
Esegui il comando minikube start
dopo aver installato Minikube sul tuo sistema:
minikube start
Passaggio 3: Verifica il Cluster
Conferma che il cluster sia in esecuzione:
kubectl cluster-info
kubectl get nodes
2. Installare Argo CD
Passaggio 1: Crea il Namespace
Argo CD viene eseguito nel proprio namespace per l’isolamento:
kubectl create namespace argocd
Passaggio 2: Installa Argo CD
Applica i manifest ufficiali per installare Argo CD:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Passaggio 3: Verifica l’Installazione
Verifica i pod di Argo CD:
kubectl get pods -n argocd
3. Accedere all’interfaccia utente di Argo CD
Passaggio 1: Esporre Argo CD
Esponi il argocd-server
al tuo computer locale:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Passo 2: Recupera le credenziali di amministrazione
Ottieni la password di amministrazione predefinita:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
Passo 3: Accedi all’interfaccia utente
- Apri https://localhost:8080 nel tuo browser.
- Accedi con:
- Nome utente: admin
- Password: Recuperato nel passaggio precedente.
4. Collegamento di Argo CD al tuo repository Git
Passo 1: Prepara un repository Git
- Crea un repository Git (ad esempio, su GitHub).
- Aggiungi i manifest di Kubernetes al repository. Utilizza questo esempio di
deployment.yaml
:
apiVersion apps/v1
kind Deployment
metadata
name nginx-deployment
labels
app nginx
spec
replicas2
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
name nginx
image nginx1.19
ports
containerPort80
Passo 2: Aggiungi il repository ad Argo CD
Dall’interfaccia utente:
- Vai su Impostazioni > Repository.
- Aggiungi l’URL del tuo repository Git e i dettagli di autenticazione (SSH o HTTPS).
Oppure, utilizza la CLI:
argocd repo add <REPO_URL> --username <USERNAME> --password <PASSWORD>
5. Distribuzione della tua prima applicazione
Passo 1: Crea un’applicazione
Nell’interfaccia utente di Argo CD:
- Clicca su Nuova App.
-
- Nome dell’app: nginx-app
- Progetto: default
- URL del repository: L’URL del tuo repository Git
- Percorso: Percorso a
deployment.yaml
- URL del cluster:
https://kubernetes.default.svc
- Namespace: default
Passo 2: Sincronizza l’applicazione
Dopo aver creato l’app:
- Clicca su Sincronizza nell’interfaccia di Argo CD.
- Guarda mentre l’app viene distribuita nel tuo cluster Kubernetes.
6. Automazione delle distribuzioni
Passo 1: Abilita Auto-Sync
Abilita la sincronizzazione continua:
argocd app set nginx-app --sync-policy automated
Passo 2: Testa le modifiche
- Modifica il
deployment.yaml
in Git. - Pusha le modifiche nel repository.
- Argo CD rileverà le modifiche e le sincronizzerà automaticamente con il cluster.
7. Monitoraggio e risoluzione dei problemi
Passo 1: Monitora la salute dell’applicazione
Nell’interfaccia, controlla:
- Salute: Indica se l’applicazione sta funzionando come previsto.
- Stato di Sincronizzazione: Garantisce che lo stato del cluster corrisponda a Git.
Passo 2: Visualizza i Log
Se qualcosa va storto:
kubectl logs -n argocd <POD_NAME>
Passo 3: Ripristina le Modifiche
Ripristina a uno stato precedente:
argocd app rollback nginx-app <REVISION>
8. Sicurezza di Argo CD
Passo 1: Cambia la Password Amministratore di Default
Cambia la password amministratore di default utilizzando il comando argocd account update-password
:
argocd account update-password
Passo 2: Integra SSO
Per ambienti di produzione, integra con soluzioni di Single Sign-On (SSO) come GitHub o LDAP.
Best Practices di GitOps
- Strategie di Branch: Usa branch separati per sviluppo, staging e produzione.
- Revisioni del Codice: Applica revisioni tra pari per modifiche ai manifesti.
- Log di Audit: Rivedi regolarmente i log di Argo CD per conformità e debugging.
Conclusione
Argo CD offre un modo potente ma accessibile per gestire le distribuzioni Kubernetes utilizzando i principi di GitOps. Questo workshop ti fornisce le competenze per distribuire, monitorare e gestire le applicazioni in modo efficiente. Seguendo queste pratiche, sei sulla buona strada per padroneggiare la consegna continua di Kubernetes.
Source:
https://dzone.com/articles/deploying-applications-in-kubernetes-with-argo-cd