Utilizzare ArgoCD per i tuoi deployment GitOps
Obiettivi
Questo tutorial spiega come utilizzare ArgoCD, lo strumento di distribuzione continua GitOps integrato nel tuo cluster Managed Kubernetes. Al termine di questa guida, saprai:
- Cos'è l'approccio GitOps.
- Come accedere all'interfaccia di ArgoCD.
- Come distribuire un'applicazione utilizzando ArgoCD per sincronizzare un repository Git.
Il principio di GitOps con ArgoCD
GitOps è una pratica che consiste nell'utilizzare un repository Git come unica fonte di verità per dichiarare lo stato desiderato della propria infrastruttura e delle proprie applicazioni.
ArgoCD è lo strumento che implementa questo principio. Monitora costantemente un repository Git e confronta lo stato in esso definito (tramite manifest Kubernetes) con lo stato effettivo del cluster. Se rileva una differenza, applica automaticamente le modifiche affinché il cluster corrisponda a quanto dichiarato in Git.
I vantaggi sono numerosi:
- Distribuzioni affidabili e riproducibili.
- Tracciabilità completa di tutte le modifiche tramite la cronologia Git.
- Ripristino rapido dopo un incidente tornando a un commit precedente.
- Sicurezza migliorata limitando gli accessi diretti al cluster.
Accedere all'interfaccia ArgoCD
L'interfaccia web di ArgoCD è esposta su un URL interno del vostro cluster. Per accedervi, dovete essere connessi alla rete interna del cluster (ad esempio, tramite un server bastion o un VPN).
L'URL da utilizzare è il seguente, sostituendo <votre-identifiant-de-cluster> :
http://argocd.internal.<votre-identifiant-de-cluster>.mk.ms-cloud-temple.com
È possibile ottenere l'indirizzo IP interno dell'Ingress ArgoCD con il seguente comando :
kubectl get ingress argocd-server -n argocd
ℹ️ La password per l'account
adminvi viene fornita dai team Cloud Temple al momento della consegna del vostro cluster.
Deployare un'applicazione con ArgoCD
Ora distribuiremo un'applicazione di test utilizzando l'approccio GitOps.
1. Il repository Git
ArgoCD ha bisogno di un repository Git contenente i manifest Kubernetes dell'applicazione da distribuire. Per questo tutorial, utilizzeremo il repository di esempi di ArgoCD: https://github.com/argoproj/argocd-example-apps. Distribuiremo l'applicazione guestbook che si trova in questo repository.
2. Preparare il Namespace di destinazione
Affinché l'applicazione possa essere distribuita in un namespace gestito da Capsule, dobbiamo prima creare questo namespace e applicargli il label del tenant appropriato.
Eseguire i seguenti comandi :
# Crea il namespace
kubectl create namespace guestbook
# Applica il label per associarlo al tenant "default" di Capsule (se necessario, poiché il namespace è probabilmente già stato associato al tuo tenant durante la sua creazione)
kubectl label namespace guestbook capsule.clastix.io/tenant=default
3. Creare l'applicazione in ArgoCD
Ora che il namespace è pronto, possiamo dichiarare l'applicazione ad ArgoCD.
-
Creare un file denominato
app-guestbook.yamlcon il seguente contenuto :apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata:name: guestbooknamespace: argocdspec:project: defaultsource:repoURL: https://github.com/argoproj/argocd-example-apps.gittargetRevision: HEADpath: guestbookdestination:server: https://kubernetes.default.svcnamespace: guestbooksyncPolicy:automated:prune: trueselfHeal: trueQuesto manifest richiede ad ArgoCD di :
- Creare un'applicazione denominata
guestbook. - Monitorare il repository
argocd-example-apps. - Concentrarsi sulla directory
guestbookdi questo repository. - Distribuire i manifest trovati nel namespace
guestbookdel cluster locale. - Mantenere la sincronizzazione automaticamente (
automated).
- Creare un'applicazione denominata
-
Sono disponibili due opzioni per creare l'applicazione in ArgoCD :
Opzione A : Tramite
kubectl(Approccio GitOps)Applicare questo manifest direttamente al cluster. Questo è il metodo consigliato poiché segue il principio GitOps di gestione dichiarativa.
kubectl apply -f app-guestbook.yamlOpzione B : Tramite l'interfaccia web di ArgoCD
È inoltre possibile creare l'applicazione direttamente dall'interfaccia grafica :
- Nell'UI di ArgoCD, fare clic su "+ NEW APP".
- In alto a destra nella schermata di creazione, fare clic su "EDIT AS YAML".
- Incollare il contenuto del file
app-guestbook.yamlnell'editor. - Fare clic su "CREATE".
4. Verificare la sincronizzazione
Non appena applichi il manifest, ArgoCD rileva questa nuova risorsa Application e inizia il suo lavoro.
- Via l'interfaccia web:
- Accedi all'interfaccia di ArgoCD.
- Dovresti vedere una nuova card per l'applicazione
guestbook. - Dopo qualche istante, il suo stato dovrebbe passare a
HealthyeSynced. - Facendo clic sulla card, puoi visualizzare tutte le risorse Kubernetes (Deployment, Service, ecc.) che sono state create.
- Via la riga di comando:
-
Verifica che il namespace
guestbooksia stato creato:kubectl get ns guestbook -
Verifica che le risorse dell'applicazione siano state distribuite correttamente in questo namespace:
kubectl get all -n guestbookNAME READY STATUS RESTARTS AGEpod/guestbook-ui-85db984648-br6r2 1/1 Running 0 19mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/guestbook-ui ClusterIP 10.111.160.90 <none> 80/TCP 19mNAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/guestbook-ui 1/1 1 1 19mNAME DESIRED CURRENT READY AGEreplicaset.apps/guestbook-ui-85db984648 1 1 1 19m
-
5. Il ciclo GitOps
Ora, se modifichi un manifesto nel repository Git, ArgoCD rileverà la modifica e aggiornerà automaticamente l'applicazione nel cluster. È la magia del GitOps!
Pulizia
Per eliminare l'applicazione e tutte le risorse associate, è sufficiente eliminare la risorsa Application di ArgoCD.
- Via l'interfaccia web:
- Nell'interfaccia utente di ArgoCD, individua l'applicazione
guestbook. - Fai clic sui tre punti (...) per aprire il menu e seleziona "Delete".
- Seleziona l'opzione "Foreground" per assicurarti che tutte le risorse gestite (pod, servizi, ecc.) vengano eliminate a cascata.
- Nell'interfaccia utente di ArgoCD, individua l'applicazione
- Via
kubectl:-
Elimina il file
app-guestbook.yamlche hai creato:kubectl delete -f app-guestbook.yaml
-
ArgoCD eliminerà ora tutti i componenti dell'applicazione guestbook. Una volta completata la sincronizzazione di eliminazione, il namespace guestbook sarà vuoto. Potrai quindi eliminarlo con il seguente comando:
kubectl delete namespace guestbook
ℹ️[Per approfondire: la gestione dei segreti] Questo tutorial utilizza un repository pubblico senza dati sensibili. Per le tue applicazioni in produzione, è fondamentale non memorizzare mai segreti (password, chiavi API) in chiaro nel tuo repository Git. >Soluzioni come Sealed Secrets o OpenTofu si integrano con ArgoCD per gestire i tuoi segreti in modo sicuro.
Conclusione
Avete distribuito la vostra prima applicazione con ArgoCD seguendo i principi GitOps. Questo potente approccio vi consente di gestire le vostre distribuzioni in modo dichiarativo, affidabile e sicuro. Vi incoraggiamo ad adottarlo per tutte le vostre applicazioni su Managed Kubernetes.