

 **Contribuisci a migliorare questa pagina** 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Concetti di Argo CD
<a name="argocd-concepts"></a>

Argo CD implementa GitOps trattando Git come l'unica fonte di verità per le implementazioni delle applicazioni. Questo argomento illustra un esempio pratico, quindi spiega i concetti fondamentali da comprendere quando si lavora con il CD EKS Capability for Argo.

## Guida introduttiva ad Argo CD
<a name="_getting_started_with_argo_cd"></a>

Dopo aver creato la funzionalità Argo CD (vedi[Crea una funzionalità Argo CD](create-argocd-capability.md)), puoi iniziare a distribuire le applicazioni. Questo esempio illustra la registrazione di un cluster e la creazione di un'applicazione.

### Fase 1: configurazione
<a name="_step_1_set_up"></a>

 **Registra il tuo cluster** (richiesto)

Registra il cluster in cui desideri distribuire le applicazioni. Per questo esempio, registreremo lo stesso cluster su cui è in esecuzione Argo CD (potete usare il nome `in-cluster` per motivi di compatibilità con la maggior parte degli esempi di Argo CD):

```
# Get your cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster using Argo CD CLI
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

**Nota**  
Per informazioni sulla configurazione dell'Argo CD CLI per funzionare con la funzionalità Argo CD in EKS, vedere. [Utilizzo dell'Argo CD CLI con funzionalità gestite](argocd-comparison.md#argocd-cli-configuration)

In alternativa, registra il cluster utilizzando un Kubernetes Secret (vedi per i dettagli). [Registra i cluster di destinazione](argocd-register-clusters.md)

 **Configura l'accesso al repository (opzionale)**

Questo esempio utilizza un GitHub archivio pubblico, quindi non è richiesta alcuna configurazione del repository. Per gli archivi privati, configura l'accesso utilizzando AWS Secrets Manager o Kubernetes Secrets (vedi [Configurare l'accesso al repository](argocd-configure-repositories.md) per i dettagli). CodeConnections

Per AWS i servizi (grafici ECR for Helm e CodeCommit) CodeConnections, puoi farvi riferimento direttamente nelle risorse dell'applicazione senza creare un repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste. Per informazioni dettagliate, vedi [Configurare l'accesso al repository](argocd-configure-repositories.md).

### Fase 2: crea un'applicazione
<a name="_step_2_create_an_application"></a>

Crea questo manifesto dell'applicazione in`my-app.yaml`:

```
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:
    name: in-cluster
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

Applica l'applicazione:

```
kubectl apply -f my-app.yaml
```

Dopo aver applicato questa applicazione, Argo CD: 1. Sincronizza l'applicazione da Git al tuo cluster (distribuzione iniziale) 2. Monitora il repository Git per le modifiche 3. Sincronizza automaticamente le modifiche successive al cluster 4. Rileva e corregge qualsiasi deriva dallo stato desiderato 5. Fornisce lo stato di salute e la cronologia di sincronizzazione nell'interfaccia utente

Visualizza lo stato dell'applicazione:

```
kubectl get application guestbook -n argocd
```

È inoltre possibile visualizzare l'applicazione utilizzando la CLI di Argo CD o l'interfaccia utente di Argo CD (accessibile dalla console EKS nella scheda Capacità del cluster).

**Nota**  
Quando si utilizza l'Argo CD CLI con la funzionalità gestita, specificare le applicazioni con il prefisso dello spazio dei nomi:. `argocd app get argocd/guestbook`

**Nota**  
Usa il nome del cluster in `destination.name` (il nome che hai usato durante la registrazione del cluster). La funzionalità gestita non supporta l'impostazione predefinita locale all'interno del cluster ()`kubernetes.default.svc`.

## Concetti principali
<a name="_core_concepts"></a>

### GitOps principi e tipi di fonti
<a name="_gitops_principles_and_source_types"></a>

Argo CD implementa GitOps, in cui la fonte dell'applicazione è l'unica fonte attendibile per le implementazioni:
+  **Dichiarativo**: lo stato desiderato viene dichiarato utilizzando i manifesti YAML, i grafici Helm o gli overlay Kustomize
+  **Versionato: ogni modifica viene tracciata con un audit trail completo**
+  **Automatizzato**: Argo CD monitora continuamente le sorgenti e sincronizza automaticamente le modifiche
+  **Riparazione automatica:** rileva e corregge lo scostamento tra lo stato desiderato e quello effettivo del cluster

 **Tipi di sorgenti supportati:**
+  **Archivi Git** - GitHub GitLab, Bitbucket, CodeCommit (HTTPS, SSH o) CodeConnections
+  Registri **Helm: registri** HTTP (simili) e registri OCI (simili) `https://aws.github.io/eks-charts` `public.ecr.aws`
+  **Immagini OCI: immagini** dei contenitori contenenti manifesti o grafici Helm (come) `oci://registry-1.docker.io/user/my-app`

Questa flessibilità consente alle organizzazioni di scegliere fonti che soddisfino i propri requisiti di sicurezza e conformità. Ad esempio, le organizzazioni che limitano l'accesso a Git dai cluster possono utilizzare ECR per i grafici Helm o le immagini OCI.

Per ulteriori informazioni, consultate [Application Sources nella documentazione](https://argo-cd.readthedocs.io/en/stable/user-guide/application-sources/) del CD Argo.

### Sincronizzazione e riconciliazione
<a name="_sync_and_reconciliation"></a>

Argo CD monitora continuamente le sorgenti e i cluster per rilevare e correggere le differenze:

1. Esamina le fonti delle modifiche (impostazione predefinita: ogni 6 minuti)

1. Confronta lo stato desiderato con lo stato del cluster

1. Contrassegna le applicazioni come o `Synced` `OutOfSync` 

1. Sincronizza automaticamente le modifiche (se configurate) o attende l'approvazione manuale

1. Monitora lo stato delle risorse dopo la sincronizzazione

 **Le onde di sincronizzazione controllano** l'ordine di creazione delle risorse utilizzando le annotazioni:

```
metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "0"  # Default if not specified
```

Le risorse vengono applicate in ordine ondulatorio (partendo dai numeri più bassi, inclusi i numeri negativi come`-1`). Wave `0` è l'impostazione predefinita se non specificata. Ciò consente di creare dipendenze come i namespace (wave) prima delle distribuzioni (wave`-1`) prima dei servizi (wave`0`). `1`

 **La riparazione automatica annulla automaticamente le modifiche manuali:**

```
spec:
  syncPolicy:
    automated:
      selfHeal: true
```

**Nota**  
La funzionalità gestita utilizza il tracciamento delle risorse basato sulle annotazioni (non basato su etichette) per una migliore compatibilità con le convenzioni Kubernetes e altri strumenti.

[Per informazioni dettagliate sulle fasi di sincronizzazione, gli hook e i pattern avanzati, consulta la documentazione di sincronizzazione con Argo CD.](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/)

### Integrità dell'applicazione
<a name="_application_health"></a>

Argo CD monitora lo stato di tutte le risorse dell'applicazione:

 **Stati di salute** ****: \$1 Integro: tutte le risorse funzionano come previsto \$1 In corso di **avanzamento** - Risorse in fase di creazione o aggiornamento \$1 **Degradate** - Alcune risorse non integre (pod bloccati, processi non riusciti) \$1 **Sospesa - Applicazione intenzionalmente sospesa** \$1 Mancante - Risorse definite in Git non presenti nel cluster****

Argo CD include controlli di integrità integrati per le risorse Kubernetes più comuni (implementazioni, lavori, ecc.) e supporta controlli di integrità personalizzati per. StatefulSets CRDs

Lo stato dell'applicazione è determinato da tutte le sue risorse: se una risorsa lo è, l'applicazione sì. `Degraded` `Degraded`

Per ulteriori informazioni, consultate [Resource Health](https://argo-cd.readthedocs.io/en/stable/operator-manual/health/) nella documentazione del CD Argo.

### Schemi multicluster
<a name="_multi_cluster_patterns"></a>

Argo CD supporta due modelli di implementazione principali:

 **H ub-and-spoke** - Esegui Argo CD su un cluster di gestione dedicato che viene distribuito su più cluster di carichi di lavoro: \$1 Controllo e visibilità centralizzati \$1 Policy coerenti su tutti i cluster \$1 Un'istanza Argo CD da gestire \$1 Chiara separazione tra piano di controllo e carichi di lavoro

 Per **cluster**: esegui Argo CD su ogni cluster, gestendo solo le applicazioni del cluster: \$1 Separazione del cluster (un errore non influisce sugli altri) \$1 Rete più semplice (nessuna comunicazione tra cluster) \$1 Configurazione iniziale più semplice (nessuna registrazione del cluster)

Scegliete tra hub-and-spoke i team di piattaforma che gestiscono più cluster o per i team indipendenti per i cluster o quando i cluster devono essere completamente isolati.

Per una configurazione multi-cluster dettagliata, consulta. [Considerazioni su Argo CD](argocd-considerations.md)

### Progetti
<a name="_projects"></a>

I progetti forniscono il raggruppamento logico e il controllo degli accessi per le applicazioni:
+  **Restrizioni all'origine**: limita i repository Git che possono essere utilizzati
+  **Restrizioni sulla destinazione**: limita i cluster e i namespace a cui è possibile rivolgersi
+  **Restrizioni alle risorse**: limita i tipi di risorse Kubernetes che possono essere distribuiti
+  **Integrazione RBAC**: mappa i progetti all'utente e al gruppo di Identity Center AWS IDs

Le applicazioni appartengono a un singolo progetto. Se non specificato, usano il `default` progetto, che di default non ha restrizioni. Per uso in produzione, modificate il `default` progetto per limitare l'accesso e creare nuovi progetti con le restrizioni appropriate.

Per la configurazione del progetto e i modelli RBAC, vedere. [Configurare le autorizzazioni di Argo CD](argocd-permissions.md)

### Opzioni di sincronizzazione
<a name="_sync_options"></a>

Ottimizza il comportamento di sincronizzazione con opzioni comuni:
+  `CreateNamespace=true`- Crea automaticamente lo spazio dei nomi di destinazione
+  `ServerSideApply=true`- Utilizza server-side apply per una migliore risoluzione dei conflitti
+  `SkipDryRunOnMissingResource=true`- Salta il dry run quando CRDs non esistono ancora (utile per le istanze kro)

```
spec:
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
    - ServerSideApply=true
    - SkipDryRunOnMissingResource=true
```

Per un elenco completo delle opzioni di sincronizzazione, consultate la documentazione sulle opzioni di sincronizzazione di [Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/).

## Fasi successive
<a name="_next_steps"></a>
+  [Configurare l'accesso al repository](argocd-configure-repositories.md)- Configura l'accesso al repository Git
+  [Registra i cluster di destinazione](argocd-register-clusters.md)- Registra i cluster di destinazione per la distribuzione
+  [Crea applicazioni](argocd-create-application.md)- Crea la tua prima applicazione
+  [Considerazioni su Argo CD](argocd-considerations.md)- Modelli specifici di EKS, integrazione con Identity Center e configurazione multicluster
+  Documentazione [su Argo CD - Documentazione](https://argo-cd.readthedocs.io/en/stable/) completa su Argo CD, inclusi hook di sincronizzazione, controlli di integrità e modelli avanzati