Passa al contenuto principale

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 admin vi 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.

  1. Creare un file denominato app-guestbook.yaml con il seguente contenuto :

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
    name: guestbook
    namespace: argocd
    spec:
    project: default
    source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
    destination:
    server: https://kubernetes.default.svc
    namespace: guestbook
    syncPolicy:
    automated:
    prune: true
    selfHeal: true

    Questo manifest richiede ad ArgoCD di :

    • Creare un'applicazione denominata guestbook.
    • Monitorare il repository argocd-example-apps.
    • Concentrarsi sulla directory guestbook di questo repository.
    • Distribuire i manifest trovati nel namespace guestbook del cluster locale.
    • Mantenere la sincronizzazione automaticamente (automated).
  2. 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.yaml

    Opzione 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.yaml nell'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.

  1. 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 Healthy e Synced.
    • Facendo clic sulla card, puoi visualizzare tutte le risorse Kubernetes (Deployment, Service, ecc.) che sono state create.
  1. Via la riga di comando:
    • Verifica che il namespace guestbook sia stato creato:

      kubectl get ns guestbook
    • Verifica che le risorse dell'applicazione siano state distribuite correttamente in questo namespace:

      kubectl get all -n guestbook
      NAME READY STATUS RESTARTS AGE
      pod/guestbook-ui-85db984648-br6r2 1/1 Running 0 19m

      NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
      service/guestbook-ui ClusterIP 10.111.160.90 <none> 80/TCP 19m

      NAME READY UP-TO-DATE AVAILABLE AGE
      deployment.apps/guestbook-ui 1/1 1 1 19m

      NAME DESIRED CURRENT READY AGE
      replicaset.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.

  1. 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.
  2. Via kubectl:
    • Elimina il file app-guestbook.yaml che 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.