💻 Software kubernetes Avanzato ⏱ 225 min 👁 22 visualizzazioni

GitOps con ArgoCD e Flux: Continuous Delivery su Kubernetes in Produzione

Sara Ferraro @Sara_SelfHost · 24/05/2026 · aggiornato 1 giorni fa

🧰 Materiali necessari

  • Cluster Kubernetes 1.28+ (2 cluster per test multi-cluster)
  • ArgoCD 2.10+ con argocd CLI
  • Flux 2.2+ con flux CLI
  • Git repository (GitHub, GitLab, Bitbucket)
  • kubectl configurato
  • Helm 3.14+
  • Kustomize
  • Sealed Secrets controller e kubeseal
  • External Secrets Operator
  • Argo Rollouts per progressive delivery
  • Prometheus per metric-based analysis
  • Slack per notification testing
  • OIDC provider (Keycloak, Entra, GitHub OAuth)
  • Container registry (GHCR, Docker Hub, Harbor)
GitOps rappresenta il paradigma operativo che ha rivoluzionato il continuous delivery su Kubernetes. Coniato da Weaveworks nel 2017, GitOps applica principi di software development a infrastructure operations: Git come single source of truth per lo stato desiderato, declarative configuration di tutt...
🔐

Contenuto riservato ai membri

Registrati gratis per accedere al corso completo, ai quiz e ai PDF scaricabili.

Crea account gratis → Ho già un account

📋 Passi

  1. 1
    Setup repository structure GitOps
    {"step":1,"title":"Setup repository structure GitOps","description":"Crea due repository Git: apps-source (codice, Dockerfile, CI pipeline) e apps-config (manifest Kubernetes). Struttura apps-config: clusters\/production per namespace e infra resource; apps\/myapp\/base per Kustomize base manifest; apps\/myapp\/overlays\/production per patch specifici. Configura branch protection su main: 2 approver required, signed commit, status check CI passing."}
  2. 2
    Installazione ArgoCD production-ready
    {"step":2,"title":"Installazione ArgoCD production-ready","description":"Installa ArgoCD in namespace argocd dal manifest ufficiale. Per alta disponibilita usa install\/ha.yaml con repliche multiple. Configura accesso UI via Ingress con TLS. Recupera initial admin password da secret argocd-initial-admin-secret. Cambia immediatamente password default. Verifica tutti i pod Running e UI accessibile."}
  3. 3
    OIDC integration ArgoCD
    {"step":3,"title":"OIDC integration ArgoCD","description":"Configura argocd-cm ConfigMap con sezione oidc.config: issuer URL, client ID, client secret. Configura argocd-rbac-cm con policy per mapping Group OIDC a role ArgoCD granulari. Crea custom roles: admin per operations team, developer con accesso sync limitato a namespace specifici. Disabilita local admin in produzione."}
  4. 4
    Prima Application con auto-sync
    {"step":4,"title":"Prima Application con auto-sync","description":"Crea Application manifest YAML: source con repoURL e path, destination con server in-cluster e namespace. syncPolicy con automated true, prune true per rimuovere resource non piu in Git, selfHeal true per ripristinare modifiche manuali non autorizzate. Applica con kubectl apply e verifica sync Healthy e Synced in UI. Modifica manifest in Git e osserva sync automatico."}
  5. 5
    App of Apps pattern per scaling
    {"step":5,"title":"App of Apps pattern per scaling","description":"Crea root Application che punta a folder apps con ricerca ricorsiva nelle directory. Aggiungi Application CRD per ogni servizio (app-frontend, app-backend, app-monitoring). Sync root Application: ArgoCD crea automaticamente tutte le Application figlie. Usa sync waves con annotazione: wave -1 per monitoring (prima), wave 0 per applicazioni standard."}
  6. 6
    ApplicationSet con multi-cluster
    {"step":6,"title":"ApplicationSet con multi-cluster","description":"Registra cluster aggiuntivi con argocd cluster add specificando kubeconfig context. Crea ApplicationSet con cluster generator che genera automaticamente Application per ogni cluster registrato usando variabili name e server. Esempio: deploy monitoring stack su tutti i cluster automaticamente quando un nuovo cluster viene aggiunto al registro."}
  7. 7
    Sealed Secrets per secret management in Git
    {"step":7,"title":"Sealed Secrets per secret management in Git","description":"Installa Sealed Secrets controller nel cluster dal release ufficiale. Installa kubeseal CLI localmente. Crea secret normale, seal con kubeseal specificando controller name e namespace, salva output yaml. Il SealedSecret risultante e committabile in Git in sicurezza. Dopo sync ArgoCD verifica la creazione automatica del Secret nativo corrispondente."}
  8. 8
    External Secrets Operator
    {"step":8,"title":"External Secrets Operator","description":"Installa External Secrets Operator via Helm nel namespace external-secrets. Configura ClusterSecretStore puntando a Vault con kubernetes auth method. Crea ExternalSecret CRD che riferisce path nel backend con refreshInterval desiderato. ESO sincronizza creando K8s Secret nativo aggiornato automaticamente ad ogni refresh. Application monta Secret normalmente senza modifiche al codice."}
  9. 9
    Installazione Flux come alternativa
    {"step":9,"title":"Installazione Flux come alternativa","description":"Installa Flux CLI dallo script ufficiale. Bootstrap con GitHub specificando owner, repository, branch e path per il cluster. Flux installa controller, configura deploy key automaticamente. Verifica con flux check. Crea GitRepository source e Kustomization per riconciliazione ogni minuto. Confronta il workflow con ArgoCD notando le differenze architetturali."}
  10. 10
    Helm chart deployment con Flux HelmRelease
    {"step":10,"title":"Helm chart deployment con Flux HelmRelease","description":"Crea HelmRepository source con flux create source helm specificando URL del chart repository. Crea HelmRelease CRD con chart, version, e values inline o da ConfigMap. Flux installa il vero Helm release con history completa. Rollback con helm rollback funziona normalmente. Aggiorna version nel HelmRelease in Git e osserva Flux aggiornare automaticamente."}
  11. 11
    Image automation con Flux
    {"step":11,"title":"Image automation con Flux","description":"Configura ImageRepository per scanning automatico del container registry. Definisci ImagePolicy con regola semver per selezionare latest tag nel range definito (es. >=1.0.0 <2.0.0). Configura ImageUpdateAutomation per committare automaticamente update in Git quando nuova image conforme e disponibile. Osserva il workflow completamente automatico dalla push di codice al deploy in produzione."}
  12. 12
    Progressive delivery con Argo Rollouts
    {"step":12,"title":"Progressive delivery con Argo Rollouts","description":"Installa Argo Rollouts nel namespace argo-rollouts. Sostituisci Deployment esistente con Rollout CRD e strategy.canary con steps progressivi: 20% traffico e pause 2 minuti, 40% e pause 2 minuti, 100%. Configura AnalysisTemplate che misura error rate da Prometheus: rollback automatico se superiore a soglia definita. Osserva progressive shift nel dashboard Argo Rollouts."}
  13. 13
    Notifications e alerting GitOps
    {"step":13,"title":"Notifications e alerting GitOps","description":"Configura argocd-notifications-cm con trigger (on-sync-failed, on-health-degraded, on-deployed) e template Slack con messaggio descrittivo e link. Crea Secret con token Slack. Annota Application con subscription al trigger e canale Slack. Testa con failure intenzionale: corrompi manifest in Git e verifica alert Slack con dettagli del problema."}
  14. 14
    Disaster recovery test completo
    {"step":14,"title":"Disaster recovery test completo","description":"Simula disaster recovery su fresh cluster Kubernetes vuoto. Installa ArgoCD con bootstrap manifest committato in Git. Applica root Application che punta a clusters\/production folder. ArgoCD ricrea interamente la piattaforma. Misura tempo recovery (target 30 minuti). Identifica cosa non e in Git: PVC data (Velero backup) e secret Vault (Vault snapshot). Documenta procedura verificata."}
  15. 15
    Governance e best practice production
    {"step":15,"title":"Governance e best practice production","description":"Configura ArgoCD AppProject per limitare scope per team: allowed source repo, destination namespace pattern, cluster destination autorizzati. Implementa Renovate bot per dependency update automatizzati con auto-merge su minor e patch dopo CI success. Configura webhook GitHub per immediate sync. Crea runbook per rollback rapido, manual sync, e hotfix workflow. Forma il team sul mindset GitOps."}

💬 Commenti (0)

Nessun commento ancora. Sii il primo!

Accedi per commentare.