Introduzione
Argo CD è una popolare implementazione open source per eseguire la continuous delivery di GitOps su Kubernetes. Le tue applicazioni, definizioni, configurazioni e ambienti dovrebbero essere dichiarativi e versionati. Inoltre, il rilascio delle applicazioni e la gestione del ciclo di vita dovrebbero essere automatizzati, auditabili e facili da capire. Tutto questo può essere fatto utilizzando Argo.
Argo CD aderisce agli stessi modelli e principi di GitOps, mantenendo quindi lo stato del tuo cluster utilizzando un approccio dichiarativo. La sincronizzazione avviene tramite un repository Git, dove sono memorizzati i manifesti Kubernetes. I manifesti Kubernetes possono essere specificati in diversi modi:
- Applicazioni Kustomize.
- Chart Helm.
- Applicazioni Ksonnet.
- File Jsonnet.
- Directory semplice di manifesti YAML/json.
- Qualsiasi strumento di gestione della configurazione personalizzato configurato come plugin di gestione della configurazione.
Come ogni applicazione che viene eseguita in un cluster Kubernetes, Argo CD è configurato tramite definizioni di risorse personalizzate (CRD) memorizzate all’interno di manifesti YAML. La più importante è la CRD Application. In un’applicazione Argo CD, si definisce quale repository Git deve essere utilizzato per sincronizzare quale cluster Kubernetes. Può essere lo stesso cluster Kubernetes dove è distribuito Argo CD, o uno esterno.
Argo CD è implementato come un Controller Kubernetes che monitora continuamente le applicazioni in esecuzione e confronta lo stato corrente (o live) con lo stato target desiderato (come specificato nel repository Git). Un’applicazione distribuita il cui stato live si discosta dallo stato target è considerata OutOfSync
. Argo CD segnala e visualizza le differenze, fornendo strumenti per sincronizzare automaticamente o manualmente lo stato live con lo stato target desiderato.
Argo CD offre molte funzionalità, tra le più importanti:
- Supporto per vari strumenti di gestione/configurazione dei dati, come:
Kustomize
,Helm
,Ksonnet
,Jsonnet
,plain-YAML
. - Capacità di gestire e distribuire su più cluster.
- Integrazione SSO (
OIDC
,OAuth2
,LDAP
,SAML 2.0
,GitHub
,GitLab
,Microsoft
,LinkedIn
). - Multi-tenancy e politiche RBAC per l’autorizzazione.
- Analisi dello stato di salute delle risorse dell’applicazione.
- Rollback/Roll-anywhere a qualsiasi configurazione dell’applicazione commessa nel repository Git.
- Rilevamento della deriva della configurazione automatizzata e visualizzazione.
- Interfaccia utente Web che fornisce una visualizzazione in tempo reale dell’attività dell’applicazione.
- CLI per l’automazione e l’integrazione CI.
- Integrazione Webhook (GitHub, BitBucket, GitLab).
- Hook PreSync, Sync, PostSync per supportare rollout complessi dell’applicazione (ad esempio, aggiornamenti blue/green e canary).
- Metriche di Prometheus.
In questo tutorial, imparerai a:
- Utilizzare
Helm
per approvvigionareArgo CD
al tuo clusterDOKS
. - Mantenere sincronizzato lo stato delle applicazioni del cluster Kubernetes con un repository
Git
(utilizzare i principiGitOps
). - Effettuare il deploy e gestire le applicazioni tramite Argo CD.
Dopo aver completato tutti i passaggi di questo tutorial, dovresti avere un cluster DOKS
con Argo CD
deployato, che:
- Gestisce la riconciliazione del cluster, tramite CRD dell’Applicazione.
- Gestisce i rilasci di Helm, utilizzando le fonti Helm definite all’interno dei CRD dell’applicazione.
DOKS e Argo CD per Panoramica dei Rilasci di Helm
Il diagramma seguente mostra come Argo CD gestisce le applicazioni Helm ospitate utilizzando un repository Git:
Tabella dei Contenuti
- Introduzione
- Prerequisiti
- Comprensione dei Concetti di Argo CD per il Deployment dell’Applicazione
- Installazione di Argo CD
- Accesso ed Esplorazione dell’Interfaccia Web di Argo CD
- Conoscere la CLI di Argo CD
- Avvio delle Applicazioni Argo CD
- Utilizzo dei Set di Applicazioni di Argo CD
- Disinstallazione delle Applicazioni Argo CD
- Conclusione
Prerequisiti
Per completare questo tutorial, avrai bisogno di:
- A working
DOKS
cluster that you have access to. Please follow the Starter Kit DOKS Setup Guide to find out more.to find out more. - A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
- A Git client, for cloning the
Starter Kit
repository. - Kubectl CLI, per l’interazione con
Kubernetes
. Segui queste istruzioni per connetterti al tuo cluster conkubectl
edoctl
. - Argo CLI, per interagire con
Argo CD
utilizzando l’interfaccia della riga di comando. - Kubeseal, per la crittografia delle segrete e l’interazione con il controller di Sealed Secrets.
- Helm, per gestire rilasci e aggiornamenti di
Argo CD
(opzionale, ma generalmente consigliato per i sistemi in produzione).
Comprensione dei concetti di Argo CD per il rilascio delle applicazioni
Argo CD utilizza il concetto centrale di Applicazione per gestire il rilascio e il ciclo di vita delle applicazioni. All’interno di un manifesto dell’applicazione di Argo CD, si definisce il repository Git che ospita le definizioni dell’applicazione, così come il cluster Kubernetes corrispondente per distribuire le applicazioni. In altre parole, un’applicazione di Argo CD definisce la relazione tra un repository di origine e un cluster Kubernetes. Si tratta di un design molto conciso e scalabile, dove è possibile associare più origini (repository Git) e relativi cluster Kubernetes.
A major benefit of using applications is that you don’t need to deploy Argo to each cluster individually. You can use a dedicated cluster for Argo, and deploy applications to all clusters at once from a single place. This way, you avoid Argo CD downtime or loss, in case other environments have issues or get decommissioned.
Inoltre, è possibile raggruppare applicazioni simili in un Progetto. I progetti consentono di raggruppare logicamente le applicazioni e i ruoli/autorizzazioni associati quando si lavora con più team. Quando non specificato, ogni nuova applicazione appartiene al default
progetto. Il progetto default
viene creato automaticamente e non ha restrizioni. Il progetto predefinito può essere modificato, ma non eliminato.
Il Kit di Avvio
utilizza il progetto default
per un rapido avvio utilizzando Argo CD. Successivamente, imparerai come creare un Applicazione
per ogni componente del Kit di Avvio
, e utilizzare i chart di Helm
come sorgente dell'applicazione
. Argo CD non è limitato solo alle sorgenti Helm, e puoi anche sfruttare la potenza di Kustomize, Ksonnet, Jsonnet, ecc. Si prega di consultare la pagina delle sorgenti dell’applicazione per maggiori dettagli.
Sebbene tu possa utilizzare l’interfaccia utente grafica (interfaccia web) di Argo CD per creare applicazioni, il Kit di Avvio si basa sul modo dichiarativo di GitOps, tramite manifesti YAML. Ogni configurazione YAML funge da ricetta per ciascuna applicazione, quindi può essere memorizzata in un repository Git. Ciò significa che puoi sempre ricreare la tua configurazione di Argo CD se ricrei il tuo ambiente o ti sposti su un altro cluster. Inoltre, è possibile eseguire audit e tenere traccia di ogni modifica tramite la cronologia di Git. È una pratica consigliata avere anche i file di configurazione di Argo CD in un repository Git separato rispetto a quello utilizzato per lo sviluppo dell’applicazione. Puoi leggere la pagina delle pratiche consigliate sul sito web della documentazione ufficiale di Argo CD per ulteriori informazioni sull’argomento.
Nota importante:
Un aspetto importante da tenere presente è che per impostazione predefinita Argo CD non sincronizza automaticamente le nuove applicazioni. Quando viene creata per la prima volta un’applicazione ArgoCD, il suo stato è OutOfSync
. Significa che lo stato del repository Git indicato dall’applicazione ArgoCD non corrisponde allo stato del cluster Kubernetes. La creazione di una nuova applicazione ArgoCD non attiva un dispiegamento automatico nel cluster di destinazione.
Per abilitare la sincronizzazione automatica e l’eliminazione delle risorse orfane (pruning), è necessario creare una syncPolicy
. È anche possibile configurare Argo CD per ripristinare automaticamente le modifiche manuali apportate tramite kubectl
. Puoi leggere ulteriori informazioni sulle politiche di sincronizzazione automatica sul sito ufficiale della documentazione.
Il tipico CRD dell'Applicazione
che utilizza una sorgente del repository Git appare come segue:
Spiegazioni per la configurazione sopra riportata:
spec.project
: Indica ad Argo CD quale progetto utilizzare per l’applicazione (default
in questo esempio).spec.source.repoURL
: URL del repository Git utilizzato per sincronizzare lo stato del cluster.spec.source.targetRevision
: Revisione del repository Git utilizzata per la sincronizzazione (può essere anche il nome di un ramo o di un tag).spec.source.path
: Percorso del repository Git dove sono memorizzati i file sorgente (manifest YAML).spec.destination.server
: Indirizzo del cluster Kubernetes di destinazione. Di solito punta ahttps://kubernetes.default.svc
, se Argo CD sta utilizzando lo stesso cluster in cui è distribuito.spec.destination.namespace
: Namespace Kubernetes da utilizzare per la tua applicazione.spec.syncPolicy.automated
: Abilita la sincronizzazione automatica delle applicazioni nel tuo cluster con un repository Git.spec.syncPolicy.automated.prune
: Prune specifica se eliminare le risorse dal cluster che non sono più presenti nelle origini come parte della sincronizzazione automatica.spec.syncPolicy.automated.selfHeal
: Specifica se ripristinare le risorse allo stato desiderato in caso di modifica manuale nel cluster (ad esempio tramitekubectl
).
Puoi anche utilizzare i repository di Helm come origine per installare applicazioni nel tuo cluster. Un tipico CRD dell'applicazione
che utilizza una sorgente del repository di Helm, appare come segue (simile all’esempio del repository Git, tranne che viene utilizzato un repository di chart di Helm):
Spiegazioni per la configurazione sopra:
spec.source.chart
: Chart Helm da utilizzare come origine per l’applicazione.spec.source.repoURL
: URL del repository del chart di Helm.spec.source.targetRevision
: Versione del chart di Helm da utilizzare per l’applicazione.spec.source.helm.releaseName
: Nome del rilascio di Helm da creare nel tuo cluster Kubernetes.spec.source.helm.values
: Specifica i valori di Helm da passare al template di helm, tipicamente definiti come un blocco.spec.destination.server
: Indirizzo del cluster Kubernetes di destinazione. Di solito punta ahttps://kubernetes.default.svc
, se Argo CD sta utilizzando lo stesso cluster in cui è distribuito.spec.destination.namespace
: Spazio dei nomi Kubernetes da utilizzare per la tua applicazione.
Per favore, continua a leggere di più sui concetti di base di Argo CD sul sito ufficiale della documentazione. Successivamente, scoprirai le opzioni di installazione disponibili per distribuire Argo CD nel tuo cluster Kubernetes.
Installazione di Argo CD
Argo CD può essere installato utilizzando kubectl
o Helm
:
- Utilizzando
kubectl
e un file manifesto di installazione. Questo metodo non offre un controllo diretto per vari parametri di installazione. Se non sei molto familiare con le installazioni basate su Helm, questa è l’opzione più diretta con cui iniziare. - Installazione basata su Helm. Offre un controllo più granulare per la distribuzione e il ciclo di vita dell’applicazione Argo CD. Consigliato per configurazioni ad
HA
(Alta Affidabilità) e se Argo CD viene utilizzato inproduzione
.
Successivamente, a seconda delle funzionalità che desideri disponibili, hai due opzioni:
- Modalità
Multi-Tenant
. Questo tipo di installazione viene tipicamente utilizzato per servire più team di sviluppatori di applicazioni nell’organizzazione ed è gestito da un team di piattaforma. Gli utenti finali possono accedere ad Argo CD tramite ilserver API
utilizzando l’interfaccia utente Web
oargocd
CLI. - Modalità solo
Core
. Questa è un’installazione ridotta, senza l’interfaccia utente grafica, il server API, SSO, ecc., e installa la versione leggera (non-HA) di ciascun componente.
Kit di avvio sta utilizzando le modalità Multi-Tenant
e Alta Disponibilità
per installare Argo CD nel tuo cluster DOKS. In questo modo, avrai una configurazione affidabile ed esplorerai tutte le funzionalità disponibili, inclusa l’interfaccia utente. Si prega di visitare la pagina di documentazione sui metodi di installazione per maggiori informazioni sull’argomento.
Installazione basata su Kubectl
Questo metodo richiede kubectl
, ed è un processo in due fasi:
- Creare uno
namespace
per distribuire Argo CD stesso. - Eseguire il manifesto di installazione HA tramite
kubectl
.
Si prega di eseguire i comandi seguenti nell’ordine indicato:
Ora, si prega di procedere e verificare se l’installazione è stata eseguita con successo. Innanzitutto, controllare se tutti i deployment di Argo CD sono sani:
Il risultato assomiglia a (controllare la colonna READY
– tutti i Pods
devono essere in esecuzione):
Il server Argo CD deve avere un valore minimo di 2
per il replicaset
in modalità HA
. Se per qualche motivo alcuni deployment non sono sani, controllare gli eventi di Kubernetes e i log per i Pods del componente interessato.
Installazione basata su Helm
Questo metodo richiede che Helm sia installato sul tuo computer locale. Il kit di avvio fornisce un file di valori Helm pronto all’uso per iniziare e installa Argo CD in modalità HA (senza autoscaling).
Segui i passaggi seguenti per completare l’installazione basata su Helm:
- Prima, clona la directory del kit di avvio (se non lo hai già fatto), e cambia la directory nella tua copia locale:
- Successivamente, aggiungi il repository Helm di Argo CD:
- Ora, cerca nel repository Helm di
argo
i grafici disponibili da installare:
Il risultato assomiglia a questo:
- Quindi, apri e ispeziona il file di valori Helm di Argo CD fornito nel repository del kit di avvio utilizzando un editor a tua scelta (preferibilmente con supporto per il lint YAML). Ad esempio, puoi usare VS Code:
- Infine, distribuisci Argo CD nel tuo cluster DOKS:
–create-namespace \
Nota:
Viene utilizzata una versione specifica
per il grafico di Helm
. In questo caso, viene selezionata la versione 4.9.4
, che corrisponde alla versione 2.4.0
dell’applicazione. È una buona pratica, in generale, bloccarsi su una versione specifica. Questo aiuta ad avere risultati prevedibili e consente il controllo della versione tramite Git
.
Ora, controlla se il rilascio di Helm è stato eseguito con successo:
L’output assomiglia a (STATUS
il valore della colonna dovrebbe essere impostato su deployed
):
Infine, verifica lo stato del rilascio dell’applicazione Argo CD:
L’output assomiglia a (controlla la colonna READY
– tutti i Pods
devono essere in esecuzione):
Il server Argo CD deve avere un valore minimo di replicaset
di 2
per la modalità HA
. Se, per qualche motivo, alcuni rilasci non sono sani, controllare gli eventi di Kubernetes e i log per i Pods
del componente interessato.
È anche possibile trovare ulteriori informazioni sulla chart di Helm di Argo CD accedendo al repository mantenuto dalla community.
Successivamente, imparerai come accedere ed esplorare le principali funzionalità dell’interfaccia utente grafica fornita da Argo CD.
Accesso ed Esplorazione dell’Interfaccia Web di Argo CD
Una delle caratteristiche interessanti che Argo CD ha da offrire è l’interfaccia web, utilizzata per eseguire varie attività amministrative e visualizzare lo stato del deployment dell’applicazione. Puoi creare applicazioni utilizzando l’interfaccia utente grafica e interagire con Argo CD in vari modi. Un’altra funzionalità importante è la capacità di ispezionare lo stato di ciascuna applicazione e accedere agli eventi di Kubernetes, così come ai log delle tue applicazioni. Inoltre, Argo CD fornisce una rappresentazione visiva di tutti gli oggetti Kubernetes (replicasets, pod, ecc.) utilizzati da ciascun deployment dell’applicazione.
L’interfaccia web può essere accessa tramite il port-forwarding del servizio Kubernetes argocd-server
. Si prega di eseguire il comando seguente in un terminale shell:
Ora, apri un browser web e vai su localhost:8080 (ignora per ora i certificati TLS non validi). Ti verrà mostrata la pagina di accesso di Argo CD. Il nome utente amministratore predefinito è admin
, e la password viene generata casualmente al momento dell’installazione. Puoi recuperarla eseguendo il comando seguente:
Successivamente, verrai reindirizzato alla pagina del dashboard delle applicazioni. Da qui, puoi visualizzare, creare o gestire applicazioni tramite l’interfaccia utente (è disponibile anche un editor YAML), nonché eseguire operazioni di sincronizzazione o aggiornamento:
Se fai clic su una qualsiasi delle applicazioni, verrà mostrata anche una rappresentazione visiva di tutti gli oggetti coinvolti:
Nella sezione successiva, puoi gestire i tuoi progetti di applicazioni, repository e cluster:
Infine, la sezione delle informazioni utente mostra gli utenti disponibili e consente di aggiornare la password dell’amministratore:
È possibile giocare e esplorare ogni sezione e sottosezione in dettaglio per vedere tutte le funzionalità disponibili. Successivamente, imparerai come utilizzare il corrispettivo CLI, chiamato argocd
.
Argo CD consente di utilizzare lo stesso set di funzionalità sia tramite l’interfaccia web che tramite il CLI. Per utilizzare il CLI argocd
, è necessario aprire una finestra di shell separata e digitare semplicemente argocd
senza argomenti. Per impostazione predefinita, visualizzerà i comandi e le opzioni disponibili:
Per qualsiasi comando o sottocomando, è possibile richiamare la pagina di aiuto corrispondente utilizzando il seguente pattern: argocd <comando/sottocomando> --help
. Ad esempio, se si desidera verificare quali opzioni sono disponibili per il comando app
:
# Ottenere i dettagli di un’applicazione
Si prega di procedere e esplorare anche gli altri comandi/sottocomandi per vedere tutte le opzioni disponibili. Successivamente, imparerai come avviare la tua prima applicazione Argo CD, che distribuirà automaticamente tutti i componenti del kit di avvio.
Avvio delle Applicazioni Argo CD
In una nuova installazione, Argo CD non sa da dove sincronizzare le tue applicazioni, né quali repository Git sono disponibili per l’estrazione dei manifesti dell’applicazione. Quindi, il primo passo è eseguire un’operazione chiamata bootstrap, che si effettua una sola volta. Puoi eseguire tutte le operazioni presentate in questa sezione utilizzando sia la CLI argocd che l’interfaccia utente grafica.
Esistono diversi modi per avviare il tuo cluster (ad esempio, tramite script), ma di solito gli utenti di Argo CD fanno uso del modello app of apps
. Significa che inizierai creando un’applicazione principale utilizzando la CLI good
(o l’interfaccia web), che a sua volta farà riferimento e avvierà il resto delle applicazioni nel tuo cluster Kubernetes.
Preparazione della Struttura del Repository Git
Prima devi preparare il layout del tuo repository Git per utilizzare una struttura coerente. Nell’esempio seguente, creerai una struttura di layout del repository Git simile a:
- Apri una terminale e segui i passaggi seguenti per creare il layout per il tuo repository Git:
- Prima di tutto, clona il repository git utilizzato per testare Argo CD (assicurati di sostituire i segnaposto
<>
di conseguenza):
- Successivamente, cambia la directory alla tua copia locale e crea la struttura delle directory (assicurati di sostituire i segnaposto
<>
di conseguenza):
- Copia i manifest delle applicazioni forniti per ciascun componente nel repository Starter Kit (puoi anche dare un’occhiata e vedere come è strutturato ciascun manifest):
Infine, esegui il commit delle modifiche e pusha all’origine.
Successivamente, creerai il deployment dell’applicazione principale e permetterai ad Argo CD di sincronizzare automaticamente tutte le applicazioni dello Starter Kit nel tuo cluster DOKS.
Utilizzando il Pattern App of Apps tramite la CLI di Argo CD
In questa sezione, imparerai come utilizzare la CLI di argocd
per creare e fare uso del pattern app of apps
per distribuire tutti i componenti dello Starter Kit nel tuo cluster DOKS. La seguente immagine illustra il concetto principale:
Prima di tutto, devi port-forwardare il server principale di Argo CD sulla tua macchina locale in una finestra del terminale separata:
Successivamente, è necessario l’accesso al server API di Argo CD affinché funzioni l’interfaccia della riga di comando argocd
. Utilizzando un’altra finestra di terminale, è necessario autenticare il client argocd
con l’istanza del server Argo CD:
L’output sarà simile a:
Successivamente, eseguire il comando seguente per creare l’applicazione principale starter-kit-apps
(assicurarsi di sostituire i segnaposto <>
di conseguenza):
- –dest-namespace argocd \
- –dest-server https://kubernetes.default.svc \
- Il comando sopra creerà una nuova applicazione
Argo CD
chiamatastarter-kit-apps
nello spazio dei nomiargocd
, configurata per:
Puntare allo stesso cluster Kubernetes dove è distribuito Argo CD, poiché --dest-server
è impostato su https://kubernetes.default.svc
.
Utilizzare il repository GitHub impostato dall’argomento --repo
per sincronizzare il tuo cluster.
Scansionare ed applicare tutti i manifesti dell’applicazione trovati nella directory clusters/dev/helm
(argomento --path
).
Successivamente, è necessario sincronizzare l’applicazione starter-kit-apps
(ricorda che Argo CD non sincronizza nulla per impostazione predefinita a meno che non venga specificato):
L’output sarà simile a:
Dopo che il comando sopra è stato completato, dovresti vedere una nuova applicazione presente nella dashboard principale del tuo server Argo CD. Si prega di aprire un browser web e navigare su http://localhost:8080. Quindi selezionare la scheda Applicazioni
, e fare clic sulla scheda starter-kit-apps
(notare il modello app delle app
guardando il grafico di composizione):
È anche possibile ispezionare le nuove applicazioni tramite la CLI:
L’output appare simile a:
L’applicazione genitore starter-kit-apps
apparirà come sincronizzata ma le app figlio saranno fuori sincronia. Successivamente, è possibile sincronizzare tutto utilizzando l’interfaccia web o tramite la CLI:
L’operazione di sincronizzazione potrebbe richiedere del tempo per completarsi (anche fino a 5-10 minuti), a seconda della complessità e del numero di oggetti Kubernetes di tutte le applicazioni in fase di distribuzione.
Dopo un po’, si prega di elencare nuovamente tutte le applicazioni:
- L’output appare simile a (notare che tutte le applicazioni sono ora sincronizzate):
Il rilascio dell’applicazione Velero fallirà e verrà lasciato appositamente nello stato SyncError
come esercizio per il lettore per familiarizzare e imparare come diagnosticare i problemi dell’applicazione in Argo CD. Consultare la sezione Indizi di seguito per vedere come diagnosticare i problemi dell’applicazione Argo CD.
L’avviamento dell’applicazione principale è un’operazione unica. Alle modifiche successive di Git per ciascuna applicazione, Argo CD rileverà lo scostamento e applicherà le modifiche necessarie. Argo CD utilizza un meccanismo di polling
per default per rilevare le modifiche nel repository Git. L’intervallo di aggiornamento predefinito
è impostato su 3 minuti
. Invece di fare affidamento su un meccanismo di polling, è anche possibile sfruttare la potenza dei webhook di Git. Si prega di visitare il sito web della documentazione ufficiale per apprendere come creare e configurare Argo CD per utilizzare i webhook di Git.
Indizi: Se si desidera, è possibile configurare l’applicazione principale per essere sincronizzata automaticamente (e abilitare anche l’autoguarigione e il pruning automatico), è possibile utilizzare il seguente comando (non dimenticare di sostituire i segnaposto <>
di conseguenza):
–dest-namespace argocd \
–dest-server https://kubernetes.default.svc \
–sync-policy automated \
–auto-prune \
In caso di eventuali fallimenti di sincronizzazione, puoi sempre ispezionare gli eventi di Kubernetes per l’applicazione in questione (tramite argocd app get <application_name>
):
L’output è simile a:
- Successivamente, imparerai come utilizzare il
modello di app di app
e eseguire gli stessi passaggi tramite l’interfaccia utente grafica di Argo CD. - Utilizzo del Modello di App di App tramite l’Interfaccia Web di Argo CD
- In questa sezione, imparerai come utilizzare l’interfaccia web di Argo CD per creare e utilizzare il
modello di app di app
per distribuire tutti i componenti Starter Kit nel tuo cluster DOKS. L’immagine seguente illustra il concetto principale: - Come mostra il diagramma sopra, l’avvio di una nuova applicazione tramite l’interfaccia web è molto simile alla controparte CLI. L’unica differenza è che navigherai tra pannelli/finestre diversi e utilizzerai operazioni di puntamento e clic. Dietro le quinte, Argo CD creerà i CRD dell’applicazione necessari e applicherà le modifiche al tuo cluster Kubernetes.
- Per prima cosa, apri un browser web e accedi alla console web di Argo CD. Il nome utente predefinito è
admin
, e la password predefinita è ottenuta tramite: - Una volta effettuato l’accesso, verrai reindirizzato alla pagina del dashboard delle applicazioni (in una nuova installazione, il dashboard è vuoto). Successivamente, fai clic sul pulsante
Crea Applicazione
. Viene visualizzato un nuovo pannello che chiede i dettagli dell’applicazione: - Per favore compila ogni campo correttamente:
Nome Applicazione
: Il nuovo nome dell’applicazione (ad esempio, starter-kit-apps
).
Progetto
: Il nome del progetto a cui appartiene questa applicazione (quando si utilizza Argo CD per la prima volta, è possibile utilizzare default
).
Politica di Sincronizzazione
e Opzioni di Sincronizzazione
: Configura la politica di sincronizzazione e le opzioni (ad esempio, Manuale
, Automatico
, numero di tentativi, intervallo tra i tentativi, ecc).
URL del Repository di Origine
: L’indirizzo URL del tuo repository GitHub – ad esempio, https://github.com/<IL_TUO_NOME_UTENTE_GITHUB>/<NOME_REPO_ARGOCD_GITHUB>.git
.
Percorso di Origine
: Percorso della directory del repository GitHub dove sono memorizzati i manifesti dell’applicazione (ad esempio, clusters/dev/helm
).
URL del Cluster di Destinazione
: Cluster Kubernetes di destinazione da sincronizzare con il tuo repository GitHub (ad esempio, https://kubernetes.default.svc
per il cluster locale dove è distribuito Argo CD).
Namespace
di Destinazione: Namespace del cluster Kubernetes di destinazione da utilizzare per le applicazioni Argo CD (argocd
, di solito).
Dopo aver compilato tutti i dettagli dell’applicazione, fai clic sul pulsante Crea in alto. Comparirà una nuova tessera dell’applicazione sulla pagina del dashboard:
Se si fa clic sull’icona dell’applicazione, è possibile osservare il modello di app delle app
, guardando il grafico di composizione:
Se si guarda l’immagine sopra, si noterà che tutte le applicazioni sono contrassegnate come OutOfSync
. Il passo successivo è avviare un’operazione di sincronizzazione sull’applicazione genitore. Quindi, tutte le applicazioni figlio verranno sincronizzate anche. Procedere premendo il pulsante Sync
sull’icona dell’applicazione genitore. Compare un nuovo pannello sul lato destro (notare che tutte le app figlio sono selezionate in basso):
Lasciare i valori predefiniti, quindi premere il pulsante Synchronize
in alto e osservare come Argo CD propaga l’operazione di sincronizzazione a tutte le applicazioni:
Il rilascio dell’applicazione Velero fallirà e verrà lasciato intenzionalmente nello stato SyncError
come esercizio per il lettore per familiarizzare e imparare come diagnosticare i problemi delle applicazioni in Argo CD. Consultare la sezione Indizi di seguito per vedere come diagnosticare i problemi delle applicazioni Argo CD.
Se tutto va bene, tutte le applicazioni dovrebbero avere un bordo verde e lo stato dovrebbe essere Salutare
e Sincronizzato
. Il processo di bootstrap è un’operazione unica. Con le modifiche successive di Git per ogni applicazione, Argo CD rileverà lo scostamento e applicherà le modifiche richieste. Argo CD utilizza un meccanismo di polling
per default per rilevare le modifiche nel tuo repository Git. L’intervallo di aggiornamento predefinito
è impostato su 3 minuti
. Invece di affidarsi a un meccanismo di polling, puoi anche sfruttare la potenza dei webhook di Git. Si prega di visitare il sito della documentazione ufficiale per apprendere come creare e configurare Argo CD per utilizzare i webhook di Git.
Suggerimenti: Se desiderato, puoi configurare l’applicazione principale per essere sincronizzata automaticamente impostando il valore del campo POLICY DI SINCRONIZZAZIONE
su Automatico
. Per abilitare l’autoguarigione e l’eliminazione automatica, seleziona le caselle di controllo PRUNE RESOURCES
e SELF HEAL
:
In caso di errori di sincronizzazione, puoi sempre ispezionare gli eventi di Kubernetes per l’applicazione in questione. Utilizzando l’interfaccia web, puoi navigare nella casella dell’applicazione interessata:
Quindi, clicca sul link del messaggio Errore di sincronizzazione
contrassegnato in rosso, dalla sezione ULTIMO RISULTATO DELLA SINCRONIZZAZIONE
nell’intestazione della pagina dell’applicazione. Si aprirà un nuovo pannello, mostrando informazioni utili su perché l’operazione di sincronizzazione è fallita:
- Nella prossima sezione, imparerai come gestire più applicazioni contemporaneamente utilizzando un singolo CRD – il
ApplicationSet
. - Utilizzo di Argo CD Application Sets
Application Sets è un’altra potente funzionalità offerta da Argo CD. Il Controller di ApplicationSet è un sottoprogetto di Argo CD, che aggiunge automazione delle applicazioni tramite definizioni templatizzate. Questa funzionalità ti aiuta ad evitare ripetizioni nei manifesti delle tue applicazioni (utilizzando il principio DRY).
Il Controller di ApplicationSet è installato insieme ad Argo CD (nello stesso namespace) e genera automaticamente Applicazioni Argo CD in base ai contenuti di un nuovo Custom Resource (CR) di ApplicationSet.
Nota:
A partire dalla versione 2.3.x
di Argo CD, non è necessario installare il Controller di ApplicationSet
separatamente perché fa parte dell’installazione principale di Argo CD. Starter Kit utilizza version >= 2.3.1
, quindi non è necessario modificare nulla.
L’idea principale di un ApplicationSet
si basa sull’avere una lista di valori che agiscono come un generatore
, e un modello
che viene popolato dai valori della lista di input. Per ogni elemento della lista, viene generato un nuovo modello di applicazione in sequenza. Fondamentalmente, si definisce un CRD di ApplicationSet e poi si lascia che generi per voi tanti CRD di Applicazione ArgoCD, quanti ne volete, basati sui valori di input. Così, invece di creare e gestire più manifesti di Applicazione
, si gestisce tutto tramite un unico manifesto
– l’ApplicationSet
.
Questo concetto semplifica anche la gestione di setup multi-cluster
e multi-ambiente
utilizzando modelli di applicazione parametrizzati. Gli insiemi di applicazioni includono anche altri generatori, oltre ai Generatori di Lista:
Generatore Cluster: Utilizza i cluster definiti da Argo CD per i modelli di applicazione.
Generatore Git: Utilizza i file/cartelle di un repository Git per i modelli di applicazione.
Un tipico CRD di ApplicationSet
che utilizza un Generatore di Lista
, appare come segue:
Applicando l’ApplicationSet
sopra al vostro cluster Kubernetes, si otterranno tre applicazioni Argo CD. Ad esempio, l’applicazione per l’ambiente dev
viene generata come mostrato di seguito:
I motori di template sono molto potenti per natura e offrono molte possibilità. Si prega di visitare il sito web principale della documentazione di ApplicationSet per saperne di più su questa funzionalità.
Disinstallazione delle Applicazioni Argo CD
La disinstallazione (o eliminazione) delle applicazioni gestite da Argo CD avviene eliminando il manifesto corrispondente dalla sorgente del repository Git. Nel caso delle applicazioni create utilizzando il modello di app di app
, è necessario eliminare solo l’applicazione genitore (tramite CLI o interfaccia web). Quindi, tutte le applicazioni figlio saranno eliminate come parte del processo.
- Come eliminare l’applicazione genitore
starter-kit-apps
(incluso le app figlio) utilizzando la CLIargocd
: - Se si desidera garantire che le app figlio e tutte le loro risorse vengano eliminate quando viene eliminata l’app genitore, assicurarsi di aggiungere il
finalizzatore
appropriato alladefinizione dell'applicazione
:
Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd