

 **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à.

# Implementazione continua con Argo CD
<a name="argocd"></a>

Argo CD è uno strumento dichiarativo e di distribuzione GitOps continua per Kubernetes. Con Argo CD, puoi automatizzare l'implementazione e la gestione del ciclo di vita delle tue applicazioni su più cluster e ambienti. Argo CD supporta diversi tipi di sorgenti tra cui repository Git, registri Helm (HTTP e OCI) e immagini OCI, offrendo flessibilità alle organizzazioni con diversi requisiti di sicurezza e conformità.

Con EKS Capabilities, Argo CD è completamente gestito da AWS, eliminando la necessità di installare, mantenere e scalare i controller Argo CD e le loro dipendenze dai cluster.

## Come funziona Argo CD
<a name="_how_argo_cd_works"></a>

Argo CD segue GitOps lo schema, in cui la fonte dell'applicazione (repository Git, registro Helm o immagine OCI) è la fonte di verità per definire lo stato dell'applicazione desiderato. Quando si crea una `Application` risorsa Argo CD, si specifica l'origine contenente i manifesti dell'applicazione e il cluster e lo spazio dei nomi Kubernetes di destinazione. Argo CD monitora continuamente sia la sorgente che lo stato live nel cluster, sincronizzando automaticamente qualsiasi modifica per garantire che lo stato del cluster corrisponda allo stato desiderato.

**Nota**  
Con EKS Capability for Argo CD, il software Argo CD viene eseguito nel piano di AWS controllo, non sui nodi di lavoro. Ciò significa che i nodi di lavoro non hanno bisogno dell'accesso diretto ai repository Git o ai registri Helm: la funzionalità gestisce l'accesso all'origine dall'account. AWS 

Argo CD fornisce tre tipi di risorse principali:
+  **Applicazione**: definisce una distribuzione da un repository Git a un cluster di destinazione
+  **ApplicationSet**: genera più applicazioni da modelli per distribuzioni multi-cluster
+  **AppProject**: Fornisce il raggruppamento logico e il controllo degli accessi per le applicazioni

 **Esempio: creazione di un'applicazione Argo CD** 

L'esempio seguente mostra come creare una risorsa Argo CD`Application`:

```
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
```

**Nota**  
Usalo `destination.name` con il nome del cluster che hai usato durante la registrazione del cluster (come `in-cluster` per il cluster locale). Il `destination.server` campo funziona anche con il cluster EKS ARNs, ma si consiglia di utilizzare i nomi dei cluster per una migliore leggibilità.

## Vantaggi di Argo CD
<a name="_benefits_of_argo_cd"></a>

Argo CD implementa un GitOps flusso di lavoro in cui si definiscono le configurazioni delle applicazioni nei repository Git e Argo CD sincronizza automaticamente le applicazioni in modo che corrispondano allo stato desiderato. Questo approccio incentrato su Git fornisce un audit trail completo di tutte le modifiche, consente facili rollback e si integra naturalmente con i processi di revisione e approvazione del codice esistenti. Argo CD rileva e riconcilia automaticamente la deriva tra lo stato desiderato in Git e lo stato effettivo nei cluster, assicurando che le distribuzioni rimangano coerenti con la configurazione dichiarata.

Con Argo CD, è possibile distribuire e gestire applicazioni su più cluster da una singola istanza Argo CD, semplificando le operazioni in ambienti multi-cluster e multiregione. L'interfaccia utente di Argo CD offre funzionalità di visualizzazione e monitoraggio, che consentono di visualizzare lo stato di implementazione, l'integrità e la cronologia delle applicazioni. L'interfaccia utente si integra con AWS Identity Center (precedentemente AWS SSO) per un'autenticazione e un'autorizzazione senza interruzioni, consentendoti di controllare l'accesso utilizzando l'infrastruttura di gestione delle identità esistente.

Come parte di EKS Managed Capabilities, Argo CD è completamente gestito da AWS, eliminando la necessità di installare, configurare e mantenere l'infrastruttura Argo CD. AWS gestisce la scalabilità, l'applicazione di patch e la gestione operativa, permettendo ai team di concentrarsi sulla distribuzione delle applicazioni piuttosto che sulla manutenzione degli strumenti.

## Integrazione con Identity Center AWS
<a name="integration_with_shared_aws_identity_center"></a>

EKS Managed Capabilities fornisce l'integrazione diretta tra Argo CD e AWS Identity Center, consentendo l'autenticazione e l'autorizzazione senza interruzioni per gli utenti. Quando abiliti la funzionalità Argo CD, puoi configurare l'integrazione di AWS Identity Center per mappare i gruppi e gli utenti di Identity Center ai ruoli RBAC di Argo CD, consentendoti di controllare chi può accedere e gestire le applicazioni in Argo CD.

## Integrazione con altre funzionalità gestite da EKS
<a name="_integration_with_other_eks_managed_capabilities"></a>

Argo CD si integra con altre funzionalità gestite da EKS.
+  ** AWS Controller for Kubernetes (ACK)**: utilizza Argo CD per gestire l'implementazione delle risorse ACK su più cluster, abilitando i flussi di lavoro per la tua infrastruttura. GitOps AWS 
+  **kro (Kube Resource Orchestrator)**: usa Argo CD per distribuire composizioni kro su più cluster, abilitando una composizione coerente delle risorse in tutto il tuo ambiente Kubernetes.

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

Per iniziare a usare il CD EKS Capability for Argo:

1. Crea e configura un IAM Capability Role con le autorizzazioni necessarie per consentire ad Argo CD di accedere ai tuoi sorgenti e gestire le applicazioni.

1.  [Crea una risorsa con funzionalità Argo CD](create-argocd-capability.md) sul tuo cluster EKS tramite la AWS console, la AWS CLI o la tua infrastruttura preferita come strumento di codice.

1. Configura l'accesso al repository e registra i cluster per la distribuzione delle applicazioni.

1. Crea risorse applicative per distribuire le tue applicazioni dalle tue fonti dichiarative.

# Crea una funzionalità Argo CD
<a name="create-argocd-capability"></a>

Questo argomento spiega come creare una funzionalità Argo CD sul tuo cluster Amazon EKS.

## Prerequisiti
<a name="_prerequisites"></a>

Prima di creare una funzionalità Argo CD, assicurati di avere:
+ Un cluster Amazon EKS esistente che esegue una versione di Kubernetes supportata (sono supportate tutte le versioni con supporto standard ed esteso)
+  ** AWS Identity Center configurato**: necessario per l'autenticazione Argo CD (gli utenti locali non sono supportati)
+ Un ruolo di capacità IAM con autorizzazioni per Argo CD
+ Autorizzazioni IAM sufficienti per creare risorse di funzionalità sui cluster EKS
+  `kubectl`configurato per comunicare con il cluster
+ (Opzionale) L'Argo CD CLI è stata installata per una più semplice gestione di cluster e repository
+ (Per CLI/EksCtl) Lo strumento CLI appropriato installato e configurato

Per istruzioni sulla creazione dello IAM Capability Role, consulta. [Funzionalità Amazon EKS, ruolo IAM](capability-role.md) Per la configurazione di Identity Center, consulta [Guida introduttiva a AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).

**Importante**  
Il ruolo di capacità IAM fornito determina a quali AWS risorse Argo CD può accedere. Ciò include l'accesso al repository Git tramite CodeConnections e i segreti in Secrets Manager. Per indicazioni sulla creazione di un ruolo appropriato con autorizzazioni con privilegi minimi, consulta e. [Funzionalità Amazon EKS, ruolo IAM](capability-role.md) [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

## Scegli il tuo strumento
<a name="_choose_your_tool"></a>

È possibile creare una funzionalità Argo CD utilizzando la Console di gestione AWS AWS CLI o eksctl:
+  [Crea una funzionalità Argo CD utilizzando la console](argocd-create-console.md)- Usa la console per un'esperienza guidata
+  [Crea una funzionalità Argo CD utilizzando la CLI AWS](argocd-create-cli.md)- Usa la AWS CLI per lo scripting e l'automazione
+  [Crea una funzionalità Argo CD usando eksctl](argocd-create-eksctl.md)- Usa eksctl per un'esperienza nativa di Kubernetes

## Cosa succede quando si crea una funzionalità Argo CD
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Quando create una funzionalità Argo CD:

1. EKS crea il servizio di funzionalità Argo CD nel piano di controllo AWS 

1. Le definizioni di risorse personalizzate (CRDs) sono installate nel cluster

1. Viene creata automaticamente una voce di accesso per il tuo IAM Capability Role con policy di accesso specifiche per ciascuna funzionalità che concedono le autorizzazioni Kubernetes di base (vedi) [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

1. Argo CD inizia a cercare le sue risorse personalizzate (Applicazioni,,) ApplicationSets AppProjects

1. Lo stato della funzionalità cambia da a `CREATING` `ACTIVE` 

1. L'interfaccia utente di Argo CD diventa accessibile tramite il relativo URL

Una volta attiva, potete creare applicazioni Argo CD nel cluster da distribuire dalle vostre fonti dichiarative.

**Nota**  
La voce di accesso creata automaticamente non concede le autorizzazioni per distribuire applicazioni nei cluster. Per distribuire le applicazioni, è necessario configurare autorizzazioni Kubernetes RBAC aggiuntive per ogni cluster di destinazione. Vedi [Registra i cluster di destinazione](argocd-register-clusters.md) per i dettagli sulla registrazione dei cluster e sulla configurazione dell'accesso.

## Fasi successive
<a name="_next_steps"></a>

Dopo aver creato la funzionalità Argo CD:
+  [Concetti di Argo CD](argocd-concepts.md)- Scopri GitOps i principi, le politiche di sincronizzazione e i modelli multicluster
+  [Lavorare con Argo CD](working-with-argocd.md)- Configura l'accesso al repository, registra i cluster di destinazione e crea applicazioni
+  [Considerazioni su Argo CD](argocd-considerations.md)- Esplora i modelli di architettura multicluster e la configurazione avanzata

# Crea una funzionalità Argo CD utilizzando la console
<a name="argocd-create-console"></a>

Questo argomento descrive come creare una funzionalità Argo CD utilizzando. Console di gestione AWS

## Prerequisiti
<a name="_prerequisites"></a>
+  ** AWS Identity Center configurato**: Argo CD richiede AWS Identity Center per l'autenticazione. Gli utenti locali non sono supportati. Se non hai configurato AWS Identity Center, consulta [Guida introduttiva a AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) per creare un'istanza di Identity Center e [Aggiungi utenti](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) e [Aggiungi gruppi](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) per creare utenti e gruppi per l'accesso ad Argo CD.

## Crea la funzionalità Argo CD
<a name="_create_the_argo_cd_capability"></a>

1. Apri la console Amazon EKS a https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Seleziona il nome del cluster per aprire la pagina dei dettagli del cluster.

1. Scegli la scheda **Funzionalità**.

1. Nella barra di navigazione a sinistra, scegli **Argo CD**.

1. Scegli la **funzionalità Create Argo CD**.

1. Per **IAM Capability Role**:
   + Se disponi già di un IAM Capability Role, selezionalo dal menu a discesa
   + Se devi creare un ruolo, scegli **Crea ruolo Argo CD** 

     Questo apre la console IAM in una nuova scheda con policy di fiducia precompilate e accesso completo in lettura a Secrets Manager. Per impostazione predefinita, non vengono aggiunte altre autorizzazioni, ma è possibile aggiungerle se necessario. Se prevedi di utilizzare CodeCommit repository o altri AWS servizi, aggiungi le autorizzazioni appropriate prima di creare il ruolo.

     Dopo aver creato il ruolo, torna alla console EKS e il ruolo verrà selezionato automaticamente.
**Nota**  
Se prevedi di utilizzare le integrazioni opzionali con AWS Secrets Manager o AWS CodeConnections, dovrai aggiungere le autorizzazioni al ruolo. Per esempi di policy IAM e linee guida alla configurazione, consulta [Gestisci i segreti delle applicazioni con AWS Secrets Manager](integration-secrets-manager.md) e. [Connect ai repository Git con AWS CodeConnections](integration-codeconnections.md)

1. Configura AWS l'integrazione con Identity Center:

   1. Seleziona **Abilita AWS l'integrazione con Identity Center**.

   1. Scegli la tua istanza di Identity Center dal menu a discesa.

   1. Configura le mappature dei ruoli per RBAC assegnando utenti o gruppi ai ruoli di Argo CD (ADMIN, EDITOR o VIEWER)

1. Scegli **Create** (Crea).

Inizia il processo di creazione delle funzionalità.

## Verifica che la funzionalità sia attiva
<a name="_verify_the_capability_is_active"></a>

1. Nella scheda **Funzionalità**, visualizza lo stato delle funzionalità di Argo CD.

1. Attendi che lo stato cambi da `CREATING` a`ACTIVE`.

1. Una volta attiva, la funzionalità è pronta per l'uso.

Per informazioni sullo stato delle funzionalità e sulla risoluzione dei problemi, vedere[Lavorare con le risorse di capacità](working-with-capabilities.md).

## Accedere all'interfaccia utente di Argo CD
<a name="_access_the_argo_cd_ui"></a>

Dopo che la funzionalità è attiva, puoi accedere all'interfaccia utente di Argo CD:

1. Nella pagina delle funzionalità di Argo CD, scegliete **Open Argo** CD UI.

1. L'interfaccia utente di Argo CD si apre in una nuova scheda del browser.

1. Ora puoi creare applicazioni e gestire le distribuzioni tramite l'interfaccia utente.

## Fasi successive
<a name="_next_steps"></a>
+  [Lavorare con Argo CD](working-with-argocd.md)- Configura gli archivi, registra i cluster e crea applicazioni
+  [Considerazioni su Argo CD](argocd-considerations.md)- Architettura multicluster e configurazione avanzata
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestite le risorse relative alle funzionalità di Argo CD

# Crea una funzionalità Argo CD utilizzando la CLI AWS
<a name="argocd-create-cli"></a>

Questo argomento descrive come creare una funzionalità Argo CD utilizzando la AWS CLI.

## Prerequisiti
<a name="_prerequisites"></a>
+  ** AWS CLI**: versione `2.12.3` o successiva. Per verificare la tua versione, `aws --version` esegui. Per ulteriori informazioni, consulta la Guida per l'utente all'[installazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) nell'interfaccia a riga di AWS comando.
+  **`kubectl`**— Uno strumento da riga di comando per lavorare con i cluster Kubernetes. Per ulteriori informazioni, consulta [Impostazione di `kubectl` e `eksctl`](install-kubectl.md).
+  ** AWS Identity Center configurato**: Argo CD richiede AWS Identity Center per l'autenticazione. Gli utenti locali non sono supportati. Se non hai configurato AWS Identity Center, consulta [Guida introduttiva a AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) per creare un'istanza di Identity Center e [Aggiungi utenti](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) e [Aggiungi gruppi](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) per creare utenti e gruppi per l'accesso ad Argo CD.

## Fase 1: Creare un ruolo di capacità IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Crea un file di policy di fiducia:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Crea il ruolo IAM:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Nota**  
Se prevedi di utilizzare le integrazioni opzionali con AWS Secrets Manager o AWS CodeConnections, dovrai aggiungere le autorizzazioni al ruolo. Per esempi di policy IAM e indicazioni sulla configurazione, consulta [Gestisci i segreti delle applicazioni con AWS Secrets Manager](integration-secrets-manager.md) e. [Connect ai repository Git con AWS CodeConnections](integration-codeconnections.md)

## Fase 2: Creare la funzionalità Argo CD
<a name="_step_2_create_the_argo_cd_capability"></a>

Crea la risorsa di funzionalità Argo CD sul tuo cluster.

Innanzitutto, imposta le variabili di ambiente per la configurazione del tuo Identity Center:

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

Crea la funzionalità con l'integrazione di Identity Center. Sostituisci *region-code* con la AWS regione in cui si trova il cluster, *my-cluster* con il nome del cluster e *idc-region-code* con il codice regionale in cui è stato configurato lo IAM Identity Center:

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

Il comando viene restituito immediatamente, ma la funzionalità impiega del tempo per diventare attiva poiché EKS crea l'infrastruttura e i componenti di funzionalità richiesti. EKS installerà le Kubernetes Custom Resource Definitions relative a questa funzionalità nel cluster non appena viene creata.

**Nota**  
Se ricevi un errore che indica che il cluster non esiste o non disponi delle autorizzazioni, verifica:  
Il nome del cluster è corretto
La tua AWS CLI è configurata per la regione corretta
Disponi delle autorizzazioni IAM richieste

## Fase 3: Verifica che la funzionalità sia attiva
<a name="_step_3_verify_the_capability_is_active"></a>

Attendi che la funzionalità diventi attiva. Sostituiscilo *region-code* con la AWS regione in cui si trova il cluster e *my-cluster* con il nome del cluster.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

La funzionalità è pronta quando viene visualizzato lo stato`ACTIVE`. Non continuare con il passaggio successivo fino a quando lo stato non sarà raggiunto`ACTIVE`.

Puoi anche visualizzare i dettagli completi delle funzionalità:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## Fase 4: Verifica della disponibilità di risorse personalizzate
<a name="_step_4_verify_custom_resources_are_available"></a>

Dopo che la funzionalità è attiva, verificate che le risorse personalizzate di Argo CD siano disponibili nel cluster:

```
kubectl api-resources | grep argoproj.io
```

Dovresti vedere i tipi `Application` di `ApplicationSet` risorse elencati.

## Fasi successive
<a name="_next_steps"></a>
+  [Lavorare con Argo CD](working-with-argocd.md)- Configura i repository, registra i cluster e crea applicazioni
+  [Considerazioni su Argo CD](argocd-considerations.md)- Architettura multicluster e configurazione avanzata
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestisci la tua risorsa di funzionalità Argo CD

# Crea una funzionalità Argo CD usando eksctl
<a name="argocd-create-eksctl"></a>

Questo argomento descrive come creare una funzionalità Argo CD usando eksctl.

**Nota**  
I seguenti passaggi richiedono la versione eksctl o successiva. `0.220.0` Per verificare la tua versione, esegui. `eksctl version`

## Fase 1: Creare un ruolo di capacità IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Crea un file di policy di fiducia:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Crea il ruolo IAM:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Nota**  
Per questa configurazione di base, non sono necessarie politiche IAM aggiuntive. Se prevedi di utilizzare Secrets Manager per le credenziali del repository oppure CodeConnections, dovrai aggiungere le autorizzazioni al ruolo. Per esempi di policy IAM e linee guida alla configurazione, consulta e. [Gestisci i segreti delle applicazioni con AWS Secrets Manager](integration-secrets-manager.md) [Connect ai repository Git con AWS CodeConnections](integration-codeconnections.md)

## Fase 2: Ottieni la configurazione del tuo AWS Identity Center
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

Ottieni l'ARN e l'ID utente dell'istanza di Identity Center per la configurazione RBAC:

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

Prendi nota di questi valori: ti serviranno nel passaggio successivo.

## Fase 3: Creare un file di configurazione eksctl
<a name="_step_3_create_an_eksctl_configuration_file"></a>

Crea un archivio denominato `argocd-capability.yaml` con i seguenti contenuti. Sostituisci i valori segnaposto con il nome del cluster, la regione del cluster, l'ARN del ruolo IAM, l'ARN dell'istanza di Identity Center, la regione dell'Identity Center e l'ID utente:

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**Nota**  
È possibile aggiungere più utenti o gruppi alle mappature RBAC. Per i gruppi, usa `type: SSO_GROUP` e fornisci l'ID del gruppo. I ruoli disponibili sono `ADMIN``EDITOR`, e`VIEWER`.

## Fase 4: Creare la funzionalità Argo CD
<a name="_step_4_create_the_argo_cd_capability"></a>

Applica il file di configurazione:

```
eksctl create capability -f argocd-capability.yaml
```

Il comando viene restituito immediatamente, ma la funzionalità impiega del tempo per diventare attiva.

## Fase 5: Verificare che la funzionalità sia attiva
<a name="_step_5_verify_the_capability_is_active"></a>

Verifica lo stato della capacità. Sostituiscilo *region-code* con la AWS regione in cui si trova il cluster e sostituiscilo *my-cluster* con il nome del cluster.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

La funzionalità è pronta quando viene visualizzato lo stato`ACTIVE`.

## Fase 6: Verifica della disponibilità di risorse personalizzate
<a name="_step_6_verify_custom_resources_are_available"></a>

Dopo che la funzionalità è attiva, verificate che le risorse personalizzate di Argo CD siano disponibili nel cluster:

```
kubectl api-resources | grep argoproj.io
```

Dovresti vedere i tipi `Application` di `ApplicationSet` risorse elencati.

## Fasi successive
<a name="_next_steps"></a>
+  [Lavorare con Argo CD](working-with-argocd.md)- Scopri come creare e gestire applicazioni Argo CD
+  [Considerazioni su Argo CD](argocd-considerations.md)- Configura SSO e accesso multicluster
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestisci la tua risorsa di funzionalità Argo CD

# 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

# Configurare le autorizzazioni di Argo CD
<a name="argocd-permissions"></a>

La funzionalità gestita da Argo CD si integra con AWS Identity Center per l'autenticazione e utilizza ruoli RBAC integrati per l'autorizzazione. Questo argomento spiega come configurare le autorizzazioni per utenti e team.

## Come funzionano le autorizzazioni con Argo CD
<a name="_how_permissions_work_with_argo_cd"></a>

La funzionalità Argo CD utilizza AWS Identity Center per l'autenticazione e fornisce tre ruoli RBAC integrati per l'autorizzazione.

Quando un utente accede ad Argo CD:

1. Si autenticano tramite AWS Identity Center (che può essere collegato al vostro provider di identità aziendale)

1.  AWS Identity Center fornisce informazioni su utenti e gruppi su Argo CD

1. Argo CD associa utenti e gruppi ai ruoli RBAC in base alla configurazione

1. Gli utenti vedono solo le applicazioni e le risorse a cui hanno il permesso di accedere

## Ruoli RBAC integrati
<a name="_built_in_rbac_roles"></a>

La funzionalità Argo CD offre tre ruoli integrati che è possibile associare agli utenti e ai gruppi di AWS Identity Center. Si tratta di **ruoli con ambito globale** che controllano l'accesso alle risorse di Argo CD come progetti, cluster e repository.

**Importante**  
I ruoli globali controllano l'accesso ad Argo CD stesso, non a risorse relative al progetto come le Applicazioni. Gli utenti di EDITOR e VIEWER non possono visualizzare o gestire le applicazioni per impostazione predefinita: hanno bisogno di ruoli di progetto per accedere alle risorse relative al progetto. [Ruoli del progetto e accesso all'ambito del progetto](#project-roles)Per i dettagli sulla concessione dell'accesso alle applicazioni e ad altre risorse relative al progetto, consulta la sezione.

 **AMMINISTRATORE** 

Accesso completo a tutte le risorse e le impostazioni di Argo CD:
+ Crea, aggiorna ed elimina applicazioni e ApplicationSets in qualsiasi progetto
+ Gestisci la configurazione di Argo CD
+ Registra e gestisci i cluster di destinazione della distribuzione
+ Configura l'accesso al repository
+ Crea e gestisci progetti
+ Visualizza lo stato e la cronologia di tutte le candidature
+ Elenca e accedi a tutti i cluster e gli archivi

 **EDITOR** 

Può aggiornare i progetti e configurare i ruoli del progetto, ma non può modificare le impostazioni globali di Argo CD:
+ Aggiorna progetti esistenti (non può creare o eliminare progetti)
+ Configura i ruoli e le autorizzazioni del progetto
+ Visualizza chiavi e certificati GPG
+ Impossibile modificare la configurazione globale di Argo CD
+ Non è possibile gestire direttamente cluster o repository
+ Non è possibile visualizzare o gestire le applicazioni senza ruoli di progetto

 **VISUALIZZATORE** 

Accesso in sola lettura alle risorse del CD Argo:
+ Visualizza le configurazioni del progetto
+ Elenca tutti i progetti (inclusi i progetti a cui l'utente non è assegnato)
+ Visualizza chiavi e certificati GPG
+ Impossibile elencare cluster o repository
+ Impossibile apportare modifiche
+ Non è possibile visualizzare o gestire le applicazioni senza ruoli di progetto

**Nota**  
Per concedere agli utenti EDITOR o VIEWER l'accesso alle applicazioni, un ADMIN o EDITOR deve creare ruoli di progetto che associano i gruppi di Identity Center a autorizzazioni specifiche all'interno di un progetto.

## Ruoli del progetto e accesso all'ambito del progetto
<a name="project-roles"></a>

I ruoli globali (ADMIN, EDITOR, VIEWER) controllano l'accesso allo stesso Argo CD. I ruoli del progetto controllano l'accesso alle risorse e alle funzionalità all'interno di un progetto specifico, tra cui:
+  **Risorse**: applicazioni ApplicationSets, credenziali del repository, credenziali del cluster
+  **Funzionalità**: accesso ai log, accesso esecutivo ai pod delle applicazioni

 **Comprensione del modello di autorizzazione a due livelli**:
+  **Ambito globale**: i ruoli predefiniti determinano cosa possono fare gli utenti con progetti, cluster, repository e impostazioni del CD Argo
+  **Ambito del progetto**: i ruoli del progetto determinano ciò che gli utenti possono fare con le risorse e le funzionalità all'interno di un progetto specifico

Ciò significa che:
+ Gli utenti ADMIN possono accedere a tutte le risorse e le funzionalità del progetto senza configurazioni aggiuntive
+ Agli utenti EDITOR e VIEWER devono essere concessi ruoli di progetto per accedere alle risorse e alle funzionalità del progetto
+ Gli utenti di EDITOR possono creare ruoli di progetto per concedere a se stessi e ad altri l'accesso all'interno di progetti che possono aggiornare

 **Esempio di flusso di lavoro**:

1. Un ADMIN associa un gruppo Identity Center al ruolo EDITOR a livello globale

1. Un AMMINISTRATORE crea un progetto per un team

1. L'EDITOR configura i ruoli del progetto all'interno di quel progetto per concedere ai membri del team l'accesso alle risorse relative al progetto

1. I membri del team (che possono avere il ruolo globale VIEWER) possono ora visualizzare e gestire le applicazioni in quel progetto in base alle autorizzazioni relative al ruolo di progetto

Per i dettagli sulla configurazione dei ruoli del progetto, consulta. [Controllo degli accessi basato su progetti](#_project_based_access_control)

## Configurare le mappature dei ruoli
<a name="_configure_role_mappings"></a>

Associa gli utenti e i gruppi di AWS Identity Center ai ruoli di Argo CD durante la creazione o l'aggiornamento della funzionalità.

 **Esempio di mappatura dei ruoli:**

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["AdminGroup", "alice@example.com"],
    "EDITOR": ["DeveloperGroup", "DevOpsTeam"],
    "VIEWER": ["ReadOnlyGroup", "bob@example.com"]
  }
}
```

**Nota**  
I nomi dei ruoli fanno distinzione tra maiuscole e minuscole e devono essere maiuscole (ADMIN, EDITOR, VIEWER).

**Importante**  
L'integrazione di EKS Capabilities con AWS Identity Center supporta fino a 1.000 identità per funzionalità Argo CD. Un'identità può essere un utente o un gruppo.

 **Aggiorna le mappature dei ruoli**:

```
aws eks update-capability \
  --region us-east-1 \
  --cluster-name cluster \
  --capability-name capname \
  --endpoint "https://eks.ap-northeast-2.amazonaws.com" \
  --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \
  --configuration '{
    "argoCd": {
      "rbacRoleMappings": {
        "addOrUpdateRoleMappings": [
          {
            "role": "ADMIN",
            "identities": [
              { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" }
            ]
          }
        ]
      }
    }
  }'
```

## Utilizzo dell'account amministratore
<a name="_admin_account_usage"></a>

L'account amministratore è progettato per la configurazione iniziale e le attività amministrative come la registrazione di cluster e la configurazione dei repository.

 **Quando l'account amministratore è appropriato**:
+ Configurazione e configurazione delle funzionalità iniziali
+ Sviluppo individuale o dimostrazioni rapide
+ Attività amministrative (registrazione del cluster, configurazione del repository, creazione di progetti)

 **Procedure consigliate per l'account amministratore**:
+ Non affidare i token dell'account al controllo delle versioni
+ Ruota immediatamente i token se esposti
+ Limita l'utilizzo dei token dell'account alle attività di configurazione e amministrative
+ Imposta tempi di scadenza brevi (massimo 12 ore)
+ È possibile creare solo 5 token di account alla volta

 **Quando utilizzare invece l'accesso basato su progetti**:
+ Ambienti di sviluppo condivisi con più utenti
+ Qualsiasi ambiente che assomigli alla produzione
+ Quando hai bisogno di audit trail che indichino chi ha eseguito le azioni
+ Quando è necessario imporre restrizioni sulle risorse o limiti di accesso

Per ambienti di produzione e scenari multiutente, utilizza il controllo degli accessi basato su progetti con ruoli RBAC dedicati mappati ai gruppi di Identity Center. AWS 

## Controllo degli accessi basato su progetti
<a name="_project_based_access_control"></a>

Usa Argo CD Projects (AppProject) per fornire un controllo granulare degli accessi e l'isolamento delle risorse per i team.

**Importante**  
Prima di assegnare utenti o gruppi a ruoli specifici del progetto, è necessario mapparli a un ruolo globale di Argo CD (ADMIN, EDITOR o VIEWER) nella configurazione delle funzionalità. Gli utenti non possono accedere ad Argo CD senza una mappatura globale dei ruoli, anche se sono assegnati a ruoli di progetto.  
Prendi in considerazione la possibilità di associare gli utenti al ruolo VIEWER a livello globale, quindi concedi autorizzazioni aggiuntive tramite ruoli specifici del progetto. Ciò fornisce un accesso di base e consente al contempo un controllo granulare a livello di progetto.

I progetti forniscono:
+  **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 sulle risorse**: limita i tipi di risorse Kubernetes che possono essere distribuiti
+  **Integrazione RBAC**: mappa i progetti ai gruppi di AWS Identity Center o ai ruoli di Argo CD

 **Esempio di progetto per** l'isolamento del team:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Team A applications

  # Required: Specify which namespaces this project watches for Applications
  sourceNamespaces:
  - argocd

  # Source restrictions
  sourceRepos:
  - https://github.com/myorg/team-a-apps

  # Destination restrictions
  destinations:
  - namespace: team-a-*
    server: arn:aws:eks:us-west-2:111122223333:cluster/production

  # Resource restrictions
  clusterResourceWhitelist:
  - group: ''
    kind: Namespace
  namespaceResourceWhitelist:
  - group: 'apps'
    kind: Deployment
  - group: ''
    kind: Service
  - group: ''
    kind: ConfigMap
```

### Namespace di origine
<a name="_source_namespaces"></a>

Quando si utilizza la funzionalità EKS Argo CD, il `spec.sourceNamespaces` campo è obbligatorio nelle definizioni. AppProject Questo campo specifica quale spazio dei nomi può contenere applicazioni o ApplicationSets che fanno riferimento a questo progetto.

**Importante**  
La funzionalità EKS Argo CD supporta solo un singolo spazio dei nomi per le applicazioni e, in genere, lo spazio ApplicationSets dei nomi specificato durante la creazione della funzionalità. `argocd` Ciò differisce dal CD open source Argo che supporta più namespace.

 **AppProject configurazione** 

Tutti AppProjects devono includere lo spazio dei nomi configurato della funzionalità in: `sourceNamespaces`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a-project
  namespace: argocd
spec:
  description: Applications for Team A

  # Required: Specify the capability's configured namespace (configuration.argoCd.namespace)
  sourceNamespaces:
    - argocd  # Must match your capability's namespace configuration

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'

  # Destination restrictions
  destinations:
    - namespace: 'team-a-*'
      server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
```

**Nota**  
Se ometti lo spazio dei nomi della funzionalità da`sourceNamespaces`, le applicazioni o ApplicationSets in tale spazio dei nomi non possono fare riferimento a questo progetto, con conseguenti errori di distribuzione.

 **Assegna** utenti ai progetti:

I ruoli di progetto garantiscono agli utenti EDITOR e VIEWER l'accesso alle risorse del progetto (applicazioni ApplicationSets, repository e credenziali del cluster) e alle funzionalità (log, exec). Senza ruoli di progetto, questi utenti non possono accedere a queste risorse anche se dispongono di un accesso globale ai ruoli.

Gli utenti ADMIN hanno accesso a tutte le applicazioni senza bisogno di ruoli di progetto.

 **Esempio: concessione dell'accesso all'applicazione ai membri del team** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  # ... project configuration ...

  sourceNamespaces:
  - argocd

  # Project roles grant Application-level access
  roles:
  - name: developer
    description: Team A developers - can manage Applications
    policies:
    - p, proj:team-a:developer, applications, *, team-a/*, allow
    - p, proj:team-a:developer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 686103e0-f051-7068-b225-e6392b959d9e  # Identity Center group ID

  - name: viewer
    description: Team A viewers - read-only Application access
    policies:
    - p, proj:team-a:viewer, applications, get, team-a/*, allow
    - p, proj:team-a:viewer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 786203e0-f051-7068-b225-e6392b959d9f  # Identity Center group ID
```

**Nota**  
Includi ruoli `clusters, get, *, allow` nel progetto per consentire agli utenti di visualizzare i nomi dei cluster nell'interfaccia utente. Senza questa autorizzazione, il cluster di destinazione viene visualizzato come «sconosciuto».

 **Comprensione delle politiche relative ai ruoli del progetto**:

Il formato della politica è: `p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>` 

 **Politiche relative alle risorse**:
+  `applications, , team-a/, allow`- Accesso completo a tutte le applicazioni del progetto team-a
+  `applications, get, team-a/*, allow`- Accesso in sola lettura alle applicazioni
+  `applications, sync, team-a/*, allow`- Può sincronizzare le applicazioni ma non creare/eliminare
+  `applications, delete, team-a/*, allow`- Può eliminare le applicazioni (usare con cautela)
+  `applicationsets, , team-a/, allow`- Accesso completo a ApplicationSets
+  `repositories, *, *, allow`- Accesso alle credenziali del repository
+  `clusters, *, *, allow`- Accesso alle credenziali del cluster

 **Politiche di capacità**:
+  `logs, , team-a/, allow`- Accesso ai registri delle applicazioni
+  `exec, , team-a/, allow`- Accesso esecutivo ai pod delle applicazioni

**Nota**  
Gli utenti di EDITOR possono creare ruoli di progetto per concedere a se stessi e ad altri le autorizzazioni all'interno dei progetti che possono aggiornare. Ciò consente ai responsabili del team di controllare l'accesso alle risorse relative al progetto per il proprio team senza richiedere l'intervento dell'AMMINISTRATORE.

**Nota**  
Utilizza il gruppo Identity Center IDs (non i nomi dei gruppi) nel campo. `groups` È inoltre possibile utilizzare l'utente Identity Center IDs per l'accesso dei singoli utenti. Trovali IDs nella console di AWS Identity Center o utilizzando la AWS CLI.

## Schemi di autorizzazione comuni
<a name="_common_permission_patterns"></a>

 **Modello 1: team di amministrazione con accesso completo** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam", "SRETeam"]
  }
}
```

Gli utenti ADMIN possono visualizzare e gestire tutte le risorse relative al progetto senza configurazioni aggiuntive.

 **Schema 2: i responsabili del team gestiscono i progetti, gli sviluppatori accedono tramite i ruoli di progetto** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

1. ADMIN crea progetti per ogni team

1. I team leader (EDITOR) configurano i ruoli del progetto per garantire ai propri sviluppatori l'accesso alle risorse del progetto (applicazioni ApplicationSets, credenziali) e alle funzionalità (log, exec)

1. Gli sviluppatori (VIEWER) possono accedere solo alle risorse e alle funzionalità consentite dai rispettivi ruoli di progetto

 **Modello 3: accesso basato sul team con ruoli di progetto** 

1. ADMIN crea progetti e mappa i leader del team al ruolo di EDITOR a livello globale

1. I team leader (EDITOR) assegnano ai membri del team i ruoli di progetto all'interno dei loro progetti

1. Ai membri del team è richiesto solo il ruolo globale di VIEWER: i ruoli di progetto forniscono l'accesso alle risorse e alle funzionalità del progetto

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

## Best practice
<a name="_best_practices"></a>

 **Utilizza i gruppi anziché i singoli utenti: associa i gruppi di** AWS Identity Center ai ruoli di Argo CD anziché ai singoli utenti per una gestione più semplice.

 **Inizia con il privilegio minimo**: inizia con l'accesso VIEWER e concedi EDITOR o ADMIN secondo necessità.

 **Usa i progetti per l'isolamento del team**: crea ambienti separati AppProjects per team o ambienti diversi per far rispettare i limiti.

 **Sfrutta la federazione di Identity Center**: configura AWS Identity Center per la federazione con il tuo provider di identità aziendale per una gestione centralizzata degli utenti.

 Revisioni **periodiche degli accessi**: rivedi periodicamente le mappature dei ruoli e le assegnazioni dei progetti per garantire livelli di accesso appropriati.

 **Limita l'accesso al cluster**: ricorda che Argo CD RBAC controlla l'accesso alle risorse e alle operazioni di Argo CD, ma non corrisponde a Kubernetes RBAC. Gli utenti con accesso ad Argo CD possono distribuire applicazioni nei cluster a cui Argo CD ha accesso. Limita i cluster a cui Argo CD può accedere e utilizza le restrizioni sulla destinazione del progetto per controllare dove possono essere distribuite le applicazioni.

## AWS autorizzazioni di servizio
<a name="shared_aws_service_permissions"></a>

Per utilizzare AWS i servizi direttamente nelle risorse dell'applicazione (senza creare risorse di repository), collega le autorizzazioni IAM richieste al Capability Role.

 Grafici **ECR for Helm**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}
```

 **CodeCommit archivi:**

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

 **CodeConnections (GitHub GitLab, Bitbucket**):

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codeconnections:UseConnection"
      ],
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

[Configurare l'accesso al repository](argocd-configure-repositories.md)Per i dettagli sull'utilizzo di queste integrazioni, consulta la pagina.

## Fasi successive
<a name="_next_steps"></a>
+  [Lavorare con Argo CD](working-with-argocd.md)- Scopri come creare applicazioni e gestire le distribuzioni
+  [Concetti di Argo CD](argocd-concepts.md)- Comprendi i concetti di Argo CD, inclusi i progetti
+  [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)- Esamina le migliori pratiche di sicurezza per quanto riguarda le funzionalità

# Lavorare con Argo CD
<a name="working-with-argocd"></a>

Con Argo CD, definisci le applicazioni nei repository Git e Argo CD le sincronizza automaticamente con i tuoi cluster Kubernetes. Ciò consente l'implementazione di applicazioni dichiarative e controllate dalla versione con rilevamento automatico delle deviazioni.

## Prerequisiti
<a name="_prerequisites"></a>

Prima di lavorare con Argo CD, è necessario:
+ È stato creato un cluster EKS con funzionalità Argo CD (vedi) [Crea una funzionalità Argo CD](create-argocd-capability.md)
+ Un repository Git contenente i manifesti di Kubernetes
+  `kubectl`configurato per comunicare con il tuo cluster

## Attività comuni
<a name="_common_tasks"></a>

I seguenti argomenti illustrano le attività più comuni di Argo CD:

 **[Configurare l'accesso al repository](argocd-configure-repositories.md)**- Configura Argo CD per accedere ai tuoi repository Git usando AWS Secrets Manager o AWS CodeConnections Kubernetes Secrets.

 **[Registra i cluster di destinazione](argocd-register-clusters.md)**- Registra i cluster di destinazione in cui Argo CD distribuirà le applicazioni.

 **[Lavorare con Argo CD Projects](argocd-projects.md)**- Organizza le applicazioni e applica i limiti di sicurezza utilizzando Projects per ambienti multi-tenant.

 **[Crea applicazioni](argocd-create-application.md)**- Crea applicazioni che vengono distribuite dai repository Git con politiche di sincronizzazione automatizzate o manuali.

 **[Usa ApplicationSets](argocd-applicationsets.md)**- ApplicationSets Utilizzatelo per distribuire applicazioni in più ambienti o cluster utilizzando modelli e generatori.

## Accedi all'interfaccia utente di Argo CD
<a name="_access_the_argo_cd_ui"></a>

Accedi all'interfaccia utente di Argo CD tramite la console EKS:

1. Apri la console Amazon EKS

1. Seleziona il tuo cluster

1. Scegli la scheda **Funzionalità**

1. Scegli **Argo CD** 

1. Scegli **Open Argo CD UI** 

L'interfaccia utente fornisce la topologia visiva dell'applicazione, lo stato e la cronologia della sincronizzazione, lo stato e gli eventi delle risorse, i controlli di sincronizzazione manuale e la gestione delle applicazioni.

## Documentazione upstream
<a name="_upstream_documentation"></a>

Per informazioni dettagliate sulle funzionalità di Argo CD:
+  [Documentazione Argo CD - Guida utente](https://argo-cd.readthedocs.io/) completa
+  [Specifiche dell'applicazione: riferimento](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) completo all'API dell'applicazione
+  [ApplicationSet Guida](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/): ApplicationSet modelli ed esempi
+  [Argo CD GitHub](https://github.com/argoproj/argo-cd) - Codice sorgente ed esempi

# Configurare l'accesso al repository
<a name="argocd-configure-repositories"></a>

Prima di distribuire le applicazioni, configura Argo CD per accedere ai tuoi repository Git e ai registri cartografici Helm. Argo CD supporta diversi metodi di autenticazione per GitHub, GitLab Bitbucket ed ECR. AWS CodeCommit AWS 

**Nota**  
Per le integrazioni dirette dei AWS servizi (grafici ECR Helm, CodeCommit repository e CodeConnections), è possibile farvi riferimento direttamente nelle risorse dell'applicazione senza creare configurazioni di repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste. Per informazioni dettagliate, vedi [Configurare le autorizzazioni di Argo CD](argocd-permissions.md).

## Prerequisiti
<a name="_prerequisites"></a>
+ È stato creato un cluster EKS con funzionalità Argo CD
+ Archivi Git contenenti manifesti di Kubernetes
+  `kubectl`configurato per comunicare con il tuo cluster

**Nota**  
 AWS CodeConnections può connettersi a server Git situati nel AWS Cloud o in locale. Per ulteriori informazioni, consulta [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Metodi di autenticazione
<a name="_authentication_methods"></a>


| Metodo | Caso d'uso | Autorizzazioni IAM richieste | 
| --- | --- | --- | 
|   **Integrazione diretta con i servizi AWS **   | 
|  CodeCommit  |  Integrazione diretta con i AWS CodeCommit repository Git. Non è necessaria alcuna configurazione del repository.  |   `codecommit:GitPull`   | 
|  CodeConnections  |  Connect o Bitbucket con autenticazione gestita. GitHub GitLab Richiede la configurazione della connessione.  |   `codeconnections:UseConnection`   | 
|  Artefatti ECR OCI  |  Integrazione diretta con AWS ECR per grafici e immagini manifest OCI Helm. Non è necessaria alcuna configurazione del repository.  |   `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly`   | 
|   **Configurazione del repository con credenziali**   | 
|   AWS Secrets Manager (nome utente/token)  |  Memorizza token o password di accesso personali. Abilita la rotazione delle credenziali senza accesso a Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (chiave SSH)  |  Usa l'autenticazione tramite chiave SSH. Abilita la rotazione delle credenziali senza accesso a Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (GitHub App)  |  GitHub Autenticazione dell'app con chiave privata. Abilita la rotazione delle credenziali senza accesso a Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|  Kubernetes Secret  |  Metodo Argo CD standard che utilizza segreti all'interno del cluster  |  Nessuna (autorizzazioni gestite da EKS Access Entry con Kubernetes RBAC)  | 

## AWS Accesso diretto ai servizi
<a name="direct_access_to_shared_aws_services"></a>

Per quanto riguarda AWS i servizi, è possibile farvi riferimento direttamente nelle risorse dell'applicazione senza creare configurazioni del repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste.

### CodeCommit repository
<a name="_codecommit_repositories"></a>

Fai riferimento ai CodeCommit repository direttamente nelle applicazioni:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Autorizzazioni necessarie per il ruolo di capacità:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:GitPull",
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

### CodeConnections
<a name="_codeconnections"></a>

Reference GitHub o GitLab tramite Bitbucket repository. CodeConnections Il formato dell'URL del repository è derivato dall'ARN della CodeConnections connessione.

Il formato dell'URL del repository è:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Autorizzazioni necessarie per il ruolo di capacità:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codeconnections:UseConnection",
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

### Grafici ECR Helm
<a name="_ecr_helm_charts"></a>

ECR memorizza i grafici Helm come artefatti OCI. Argo CD supporta due modi per farvi riferimento:

 **Formato Helm** (consigliato per i grafici Helm):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-helm
  namespace: argocd
spec:
  source:
    repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
    helm:
      valueFiles:
        - values.yaml
```

Nota: non includere il `oci://` prefisso quando si utilizza il formato Helm. Usa il `chart` campo per specificare il nome del grafico.

 **Formato OCI** (per artefatti OCI con manifesti Kubernetes):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-oci
  namespace: argocd
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: artifact-version
    path: path-to-manifests
```

Nota: includi il prefisso quando usi il formato OCI. `oci://` Usa il `path` campo invece di. `chart`

Autorizzazioni Capability Role richieste: allega la policy gestita:

```
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

Questa politica include le autorizzazioni ECR necessarie:`ecr:GetAuthorizationToken`,, `ecr:BatchGetImage` e. `ecr:GetDownloadUrlForLayer`

## Utilizzo di AWS Secrets Manager
<a name="using_shared_aws_secrets_manager"></a>

Archivia le credenziali del repository in Secrets Manager e fai riferimento ad esse nelle configurazioni di Argo CD Repository. L'utilizzo di Secrets Manager consente la rotazione automatica delle credenziali senza richiedere l'accesso RBAC a Kubernetes: le credenziali possono essere ruotate utilizzando le autorizzazioni IAM verso Secrets Manager e Argo CD legge automaticamente i valori aggiornati.

**Nota**  
Per il riutilizzo delle credenziali su più repository (ad esempio, tutti gli archivi di un'organizzazione), utilizza i modelli di credenziali di repository con. GitHub `argocd.argoproj.io/secret-type: repo-creds` Ciò offre un'esperienza utente migliore rispetto alla creazione di segreti di repository individuali. Per ulteriori informazioni, consultate [Repository Credentials nella documentazione](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) di Argo CD.

### Autenticazione con nome utente e token
<a name="_username_and_token_authentication"></a>

Per gli archivi HTTPS con token di accesso o password personali:

 **Crea il segreto in Secrets Manager**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo \
  --description "GitHub credentials for Argo CD" \
  --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
```

 **Campi opzionali del certificato client TLS** (per server Git privati):

```
aws secretsmanager create-secret \
  --name argocd/my-private-repo \
  --secret-string '{
    "username":"your-username",
    "token":"your-token",
    "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
    "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t"
  }'
```

**Nota**  
I `tlsClientCertKey` valori `tlsClientCertData` and devono essere codificati in base 64.

 **Crea un Repository Secret facendo riferimento a Secrets** Manager:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf
  project: default
```

### autenticazione con chiave SSH
<a name="_ssh_key_authentication"></a>

Per l'accesso Git basato su SSH, memorizza la chiave privata come testo semplice (non JSON):

 **Crea il segreto con la chiave privata SSH**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo-ssh \
  --description "SSH key for Argo CD" \
  --secret-string "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----"
```

 **Crea un repository segreto per SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf
  project: default
```

### GitHub Autenticazione dell'app
<a name="_github_app_authentication"></a>

Per GitHub l'autenticazione dell'app con una chiave privata:

 **Crea il segreto con le credenziali GitHub dell'app**:

```
aws secretsmanager create-secret \
  --name argocd/github-app \
  --description "GitHub App credentials for Argo CD" \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678"
  }'
```

**Nota**  
Il `githubAppPrivateKeySecret` valore deve essere codificato in base64.

 **Campo opzionale** per Enterprise: GitHub 

```
aws secretsmanager create-secret \
  --name argocd/github-enterprise-app \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678",
    "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3"
  }'
```

 **Crea un repository segreto per GitHub l'app**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-github-app
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf
  project: default
```

### Modelli di credenziali di repository
<a name="_repository_credential_templates"></a>

Per il riutilizzo delle credenziali su più repository (ad esempio, tutti gli archivi di GitHub un'organizzazione o di un utente), utilizza i modelli di credenziali di repository con. `argocd.argoproj.io/secret-type: repo-creds` Ciò offre una migliore esperienza utente rispetto alla creazione di segreti di repository individuali per ogni repository.

 **Crea un modello di credenziali di repository:**

```
apiVersion: v1
kind: Secret
metadata:
  name: github-org-creds
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repo-creds
stringData:
  type: git
  url: https://github.com/your-org
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
```

Questo modello di credenziali si applica a tutti gli archivi che corrispondono al prefisso URL. `https://github.com/your-org` È quindi possibile fare riferimento a qualsiasi repository di questa organizzazione in Applicazioni senza creare segreti aggiuntivi.

Per ulteriori informazioni, consultate [Repository Credentials nella documentazione](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) del CD Argo.

**Importante**  
Assicurati che al tuo IAM Capability Role sia `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` associata la policy gestita o autorizzazioni equivalenti, incluse `secretsmanager:GetSecretValue` le autorizzazioni di decrittografia KMS. Vedi per la configurazione delle policy IAM[Considerazioni su Argo CD](argocd-considerations.md).

## Usando AWS CodeConnections
<a name="using_shared_aws_codeconnections"></a>

Per CodeConnections l'integrazione, vedi[Connect ai repository Git con AWS CodeConnections](integration-codeconnections.md).

CodeConnections fornisce l'autenticazione gestita per GitHub e Bitbucket senza memorizzare le credenziali. GitLab

## Utilizzo di Kubernetes Secrets
<a name="_using_kubernetes_secrets"></a>

Archivia le credenziali direttamente in Kubernetes utilizzando il metodo Argo CD standard.

 **Per HTTPS** con token di accesso personale:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  username: your-username
  password: your-personal-access-token
```

 **Per SSH:**

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ... your private key ...
    -----END OPENSSH PRIVATE KEY-----
```

## CodeCommit repository
<a name="_codecommit_repositories_2"></a>

Per AWS CodeCommit, concedi le CodeCommit autorizzazioni a IAM Capability Role ()`codecommit:GitPull`.

Configura il repository:

```
apiVersion: v1
kind: Secret
metadata:
  name: codecommit-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo
  project: default
```

Per una configurazione dettagliata delle policy IAM, consulta[Considerazioni su Argo CD](argocd-considerations.md).

## Verifica la connessione al repository
<a name="_verify_repository_connection"></a>

Controlla lo stato della connessione tramite l'interfaccia utente di Argo CD in Impostazioni → Repository. L'interfaccia utente mostra lo stato della connessione e gli eventuali errori di autenticazione.

I Repository Secrets non includono informazioni sullo stato.

## Risorse aggiuntive
<a name="_additional_resources"></a>
+  [Registra i cluster di destinazione](argocd-register-clusters.md)- Registra i cluster di destinazione per le distribuzioni
+  [Crea applicazioni](argocd-create-application.md)- Crea la tua prima applicazione
+  [Considerazioni su Argo CD](argocd-considerations.md)- Autorizzazioni IAM e configurazione di sicurezza
+  [Archivi privati: riferimento alla configurazione del repository](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/) upstream

# Registra i cluster di destinazione
<a name="argocd-register-clusters"></a>

Registra i cluster per consentire ad Argo CD di distribuire applicazioni su di essi. È possibile registrare lo stesso cluster su cui è in esecuzione Argo CD (cluster locale) o cluster remoti in account o regioni diversi. Una volta registrato, un cluster rimarrà in uno stato di connessione sconosciuto fino a quando non si crea un'applicazione all'interno di quel cluster. Per creare un'applicazione Argo CD dopo la registrazione del cluster, consulta[Crea applicazioni](argocd-create-application.md).

## Prerequisiti
<a name="_prerequisites"></a>
+ È stato creato un cluster EKS con funzionalità Argo CD
+  `kubectl`configurato per comunicare con il cluster
+ Per i cluster remoti: autorizzazioni IAM e voci di accesso appropriate

## Registra il cluster locale
<a name="_register_the_local_cluster"></a>

Per distribuire le applicazioni nello stesso cluster su cui è in esecuzione Argo CD, registratelo come obiettivo di distribuzione.

**Importante**  
La funzionalità Argo CD non registra automaticamente il cluster locale. È necessario registrarlo in modo esplicito per distribuire le applicazioni nello stesso cluster. È possibile utilizzare il nome del cluster `in-cluster` per motivi di compatibilità con la maggior parte degli esempi di Argo CD online.

**Nota**  
Un EKS Access Entry viene creato automaticamente per il cluster locale con l'Argo CD Capability Role, ma per impostazione predefinita non vengono concesse autorizzazioni RBAC per Kubernetes. Ciò segue il principio del privilegio minimo: è necessario configurare in modo esplicito le autorizzazioni richieste da Argo CD in base al caso d'uso. Ad esempio, se si utilizza questo cluster solo come hub Argo CD per gestire cluster remoti, non sono necessarie autorizzazioni di distribuzione locale. Per le opzioni di configurazione, consulta la sezione relativa ai requisiti RBAC di Access Entry di seguito.

 **Utilizzo dell'Argo CD CLI:**

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \
  --name local-cluster
```

 **Utilizzo di un segreto Kubernetes:**

```
apiVersion: v1
kind: Secret
metadata:
  name: local-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: local-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
  project: default
```

Applica la configurazione:

```
kubectl apply -f local-cluster.yaml
```

**Nota**  
Utilizza l'ARN del cluster EKS nel `server` campo, non l'URL del server API Kubernetes. La funzionalità gestita richiede ARNs l'identificazione dei cluster. L'impostazione predefinita non `kubernetes.default.svc` è supportata.

## Registra cluster remoti
<a name="_register_remote_clusters"></a>

Per eseguire la distribuzione su cluster remoti:

 **Fase 1: Creare la voce di accesso sul cluster remoto** 

Sostituisci *region-code* con la AWS regione in cui si trova il cluster remoto, sostituisci *remote-cluster* con il nome del cluster remoto e sostituisci l'ARN con il tuo ruolo di funzionalità Argo CD ARN.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD
```

 **Fase 2: Associare una politica di accesso alle autorizzazioni RBAC di Kubernetes** 

L'Access Entry richiede le autorizzazioni RBAC di Kubernetes per Argo CD per distribuire le applicazioni. Per iniziare rapidamente, puoi utilizzare: `AmazonEKSClusterAdminPolicy`

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Importante**  
`AmazonEKSClusterAdminPolicy`Fornisce l'accesso completo all'amministratore del cluster (equivalente a`system:masters`). È utile per iniziare, ma non deve essere utilizzato in produzione. Per gli ambienti di produzione, utilizza autorizzazioni più restrittive associando l'Access Entry a gruppi Kubernetes personalizzati e creando ruoli o associazioni appropriati. ClusterRole Consulta la sezione sulla configurazione di produzione di seguito per la configurazione con privilegi minimi.

 **Fase 3: Registrare il cluster in Argo CD** 

 **Utilizzo dell'Argo CD CLI:**

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \
  --name remote-cluster
```

 **Utilizzo di un segreto Kubernetes:**

```
apiVersion: v1
kind: Secret
metadata:
  name: remote-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: remote-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster
  project: default
```

Applica la configurazione:

```
kubectl apply -f remote-cluster.yaml
```

## Cluster tra account
<a name="_cross_account_clusters"></a>

Per eseguire la distribuzione su cluster con account diversi: AWS 

1. Nell'account di destinazione, creare un Access Entry sul cluster EKS di destinazione utilizzando l'ARN Argo CD IAM Capability Role dall'account di origine come principale

1. Associa una politica di accesso alle autorizzazioni Kubernetes RBAC appropriate

1. Registra il cluster in Argo CD utilizzando il relativo ARN del cluster EKS

Non è richiesta la creazione di ruoli IAM aggiuntivi o la configurazione delle policy di fiducia: EKS Access Entries gestisce l'accesso tra account.

Il formato ARN del cluster include la regione, quindi le distribuzioni interregionali utilizzano lo stesso processo delle distribuzioni nella stessa regione.

## Verifica la registrazione del cluster
<a name="_verify_cluster_registration"></a>

Visualizza i cluster registrati:

```
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
```

Oppure controlla lo stato del cluster nell'interfaccia utente di Argo CD in Impostazioni → Cluster.

## Cluster privati
<a name="_private_clusters"></a>

La funzionalità Argo CD fornisce un accesso trasparente a cluster EKS completamente privati senza richiedere peering VPC o configurazioni di rete specializzate.

 AWS gestisce automaticamente la connettività tra la funzionalità Argo CD e i cluster remoti privati.

È sufficiente registrare il cluster privato utilizzando la relativa ARN: non è richiesta alcuna configurazione di rete aggiuntiva.

## Accedi ai requisiti RBAC di ingresso
<a name="_access_entry_rbac_requirements"></a>

Quando si crea una funzionalità Argo CD, viene creata automaticamente una voce EKS Access Entry per il ruolo Capability, ma per impostazione predefinita non vengono concesse autorizzazioni RBAC per Kubernetes. Questa progettazione intenzionale segue il principio del privilegio minimo: casi d'uso diversi richiedono autorizzazioni diverse.

Ad esempio: \$1 Se si utilizza il cluster solo come hub Argo CD per gestire cluster remoti, non sono necessarie autorizzazioni di distribuzione locale\$1 Se si distribuiscono applicazioni localmente, è necessario l'accesso in lettura a livello di cluster e l'accesso in scrittura a namespace specifici \$1 Se è necessario creare, sono necessarie autorizzazioni di amministratore del cluster aggiuntive CRDs

È necessario configurare in modo esplicito le autorizzazioni richieste da Argo CD in base alle proprie esigenze.

### Autorizzazioni minime per Argo CD
<a name="_minimum_permissions_for_argo_cd"></a>

Argo CD necessita di due tipi di autorizzazioni per funzionare senza errori:

 **Autorizzazioni di lettura (a livello di cluster)**: Argo CD deve essere in grado di leggere tutti i tipi di risorse e le definizioni di risorse personalizzate (CRDs) in tutto il cluster per:
+ Scoperta delle risorse e controlli dello stato
+ Rilevamento della deriva tra lo stato desiderato e quello effettivo
+ Convalida delle risorse prima della distribuzione

 **Autorizzazioni di scrittura (specifiche dello spazio dei nomi)**: Argo CD richiede le autorizzazioni di creazione, aggiornamento ed eliminazione per le risorse definite in Applicazioni:
+ Implementa i carichi di lavoro delle applicazioni (implementazioni, servizi, ecc.) ConfigMaps
+ Applica risorse personalizzate (CRDs specifiche per le tue applicazioni)
+ Gestisci il ciclo di vita delle applicazioni

### Configurazione rapida
<a name="_quick_setup"></a>

Per iniziare rapidamente, in ambienti di test o sviluppo, utilizza: `AmazonEKSClusterAdminPolicy`

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Importante**  
`AmazonEKSClusterAdminPolicy`Fornisce l'accesso completo all'amministratore del cluster (equivalente a`system:masters`), inclusa la possibilità di creare CRDs, modificare risorse a livello di cluster e distribuirle in qualsiasi spazio dei nomi. Questa funzionalità è utile per lo sviluppo, POCs ma non deve essere utilizzata in produzione. Per la produzione, utilizzate la configurazione con privilegi minimi riportata di seguito.

### Configurazione di produzione con privilegi minimi
<a name="_production_setup_with_least_privilege"></a>

Per gli ambienti di produzione, crea un RBAC Kubernetes personalizzato che garantisca:
+ Accesso in lettura a livello di cluster a tutte le risorse (per il rilevamento e i controlli di integrità)
+ Accesso in scrittura specifico per lo spazio dei nomi (per le distribuzioni)

 **Fase 1: Associare Access Entry a un gruppo Kubernetes personalizzato** 

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \
  --access-scope type=namespace,namespaces=app-namespace
```

 **Fase 2: ClusterRole Creazione per l'accesso in lettura** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argocd-read-all
rules:
# Read access to all resources for discovery and health checks
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

 **Fase 3: Creazione di un ruolo per l'accesso in scrittura ai namespace delle applicazioni** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: argocd-deploy
  namespace: app-namespace
rules:
# Full access to deploy application resources
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
```

 **Fase 4: Associare i ruoli al gruppo Kubernetes** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argocd-read-all
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: argocd-read-all
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: argocd-deploy
  namespace: app-namespace
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: argocd-deploy
  apiGroup: rbac.authorization.k8s.io
```

**Nota**  
Il formato del nome del gruppo per Access Entries è `eks-access-entry:` seguito dall'ARN principale. Ripetere l'operazione RoleBinding per ogni namespace in cui Argo CD deve distribuire le applicazioni.

**Importante**  
Argo CD deve essere in grado di leggere tutti i tipi di risorse del cluster a fini di verifica e individuazione dello stato, anche se viene distribuito solo su namespace specifici. Senza accesso in lettura a livello di cluster, Argo CD mostrerà errori durante il controllo dello stato delle applicazioni.

## Limita l'accesso ai cluster con Projects
<a name="_restrict_cluster_access_with_projects"></a>

Usa Projects per controllare in quali cluster e namespace le applicazioni possono essere distribuite configurando i cluster e i namespace di destinazione consentiti in: `spec.destinations`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  destinations:
  - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster
    namespace: '*'
  - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster
    namespace: '*'
  sourceRepos:
  - 'https://github.com/example/production-apps'
```

Per informazioni dettagliate, vedi [Lavorare con Argo CD Projects](argocd-projects.md).

## Risorse aggiuntive
<a name="_additional_resources"></a>
+  [Lavorare con Argo CD Projects](argocd-projects.md)- Organizza le applicazioni e applica i limiti di sicurezza
+  [Crea applicazioni](argocd-create-application.md)- Implementa la tua prima applicazione
+  [Usa ApplicationSets](argocd-applicationsets.md)- Esegui la distribuzione su più cluster con ApplicationSets
+  [Considerazioni su Argo CD](argocd-considerations.md)- Modelli multi-cluster e configurazione tra più account
+  [Configurazione dichiarativa del cluster - Riferimento alla configurazione del cluster](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters) upstream

# Lavorare con Argo CD Projects
<a name="argocd-projects"></a>

Argo CD Projects (AppProject) forniscono il raggruppamento logico e il controllo degli accessi per le applicazioni. I progetti definiscono i repository Git, i cluster di destinazione e i namespace che le applicazioni possono utilizzare, abilitando limiti di multi-tenancy e sicurezza nelle istanze Argo CD condivise.

## Quando usare Projects
<a name="_when_to_use_projects"></a>

Usa Projects per:
+ Separa le applicazioni per team, ambiente o unità aziendale
+ Limita i repository da cui i team possono eseguire l'implementazione
+ Limita i cluster e i namespace in cui i team possono effettuare l'implementazione
+ Applica le quote di risorse e i tipi di risorse consentiti
+ Fornisci l'implementazione self-service delle applicazioni con guardrail

## Progetto predefinito
<a name="_default_project"></a>

Ogni funzionalità di Argo CD include un `default` progetto che consente l'accesso a tutti i repository, i cluster e i namespace. Sebbene sia utile per i test iniziali, crea progetti dedicati con restrizioni esplicite per l'uso in produzione.

Per i dettagli sulla configurazione predefinita del progetto e su come limitarla, consultate [The Default Project](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#the-default-project) nella documentazione di Argo CD.

## Creazione di un progetto
<a name="_create_a_project"></a>

Crea un progetto applicando una `AppProject` risorsa al tuo cluster.

 **Esempio: progetto specifico per il team** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Applications for Team A

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'
    - 'https://github.com/my-org/shared-libs'

  # Destination clusters and namespaces
  destinations:
    - name: dev-cluster
      namespace: team-a-dev
    - name: prod-cluster
      namespace: team-a-prod

  # Allowed resource types
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace

  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
```

Applica il progetto:

```
kubectl apply -f team-a-project.yaml
```

## Configurazione del progetto
<a name="_project_configuration"></a>

### Archivi di origine
<a name="_source_repositories"></a>

Controlla quali repository Git le applicazioni di questo progetto possono utilizzare:

```
spec:
  sourceRepos:
    - 'https://github.com/my-org/app-*'  # Wildcard pattern
    - 'https://github.com/my-org/infra'  # Specific repo
```

È possibile utilizzare caratteri jolly e schemi di negazione (`!`prefisso) per consentire o negare repository specifici. Per i dettagli, consultate [Gestione dei progetti](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) nella documentazione di Argo CD.

### Restrizioni sulla destinazione
<a name="_destination_restrictions"></a>

Limite in cui le applicazioni possono essere distribuite:

```
spec:
  destinations:
    - name: prod-cluster  # Specific cluster by name
      namespace: production
    - name: '*'  # Any cluster
      namespace: team-a-*  # Namespace pattern
```

**Importante**  
Utilizza nomi di cluster e modelli di namespace specifici anziché caratteri jolly per i progetti di produzione. In questo modo si evitano implementazioni accidentali in cluster o namespace non autorizzati.

È possibile utilizzare caratteri jolly e schemi di negazione per controllare le destinazioni. Per i dettagli, consultate [Gestione dei progetti](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) nella documentazione del CD Argo.

### Restrizioni sulle risorse
<a name="_resource_restrictions"></a>

Controlla quali tipi di risorse Kubernetes possono essere implementati:

 **Risorse con ambito cluster:**

```
spec:
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace
    - group: 'rbac.authorization.k8s.io'
      kind: Role
```

 **Risorse con ambito namespace:**

```
spec:
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
    - group: 's3.services.k8s.aws'
      kind: Bucket
```

Usa le liste nere per negare risorse specifiche:

```
spec:
  namespaceResourceBlacklist:
    - group: ''
      kind: Secret  # Prevent direct Secret creation
```

## Assegna applicazioni ai progetti
<a name="_assign_applications_to_projects"></a>

Quando crei un'applicazione, specifica il progetto nel `spec.project` campo:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: team-a  # Assign to team-a project
  source:
    repoURL: https://github.com/my-org/my-app
    path: manifests
  destination:
    name: prod-cluster
    namespace: team-a-prod
```

Le applicazioni senza un progetto specificato utilizzano il `default` progetto.

## Ruoli del progetto e RBAC
<a name="_project_roles_and_rbac"></a>

I progetti possono definire ruoli personalizzati per un controllo granulare degli accessi. Associa i ruoli del progetto agli utenti e ai gruppi di AWS Identity Center nella configurazione delle funzionalità per controllare chi può sincronizzare, aggiornare o eliminare le applicazioni.

 **Esempio: progetto con ruoli di sviluppatore e amministratore** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  sourceRepos:
    - '*'
  destinations:
    - name: '*'
      namespace: 'team-a-*'

  roles:
    - name: developer
      description: Developers can sync applications
      policies:
        - p, proj:team-a:developer, applications, sync, team-a/*, allow
        - p, proj:team-a:developer, applications, get, team-a/*, allow
      groups:
        - team-a-developers

    - name: admin
      description: Admins have full access
      policies:
        - p, proj:team-a:admin, applications, *, team-a/*, allow
      groups:
        - team-a-admins
```

Per i dettagli sui ruoli del progetto, sui token JWT per le CI/CD pipeline e sulla configurazione RBAC, consulta [Project Roles](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#project-roles) nella documentazione di Argo CD.

## Schemi comuni
<a name="_common_patterns"></a>

### Progetti basati sull'ambiente
<a name="_environment_based_projects"></a>

Crea progetti separati per ogni ambiente:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/*'
  destinations:
    - name: prod-cluster
      namespace: '*'
  # Strict resource controls for production
  clusterResourceWhitelist: []
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
```

### Progetti basati su team
<a name="_team_based_projects"></a>

Isola i team con progetti dedicati:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: platform-team
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/platform-*'
  destinations:
    - name: '*'
      namespace: 'platform-*'
  # Platform team can manage cluster resources
  clusterResourceWhitelist:
    - group: '*'
      kind: '*'
```

### Progetti multicluster
<a name="_multi_cluster_projects"></a>

Implementa su più cluster con politiche coerenti:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: global-app
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/global-app'
  destinations:
    - name: us-west-cluster
      namespace: app
    - name: eu-west-cluster
      namespace: app
    - name: ap-south-cluster
      namespace: app
```

## Best practice
<a name="_best_practices"></a>

 **Inizia con progetti restrittivi**: inizia con autorizzazioni limitate ed espandi secondo necessità anziché iniziare con un accesso ampio.

 **Usa modelli di namespace**: sfrutta i caratteri jolly nelle restrizioni dello spazio dei nomi (ad esempio`team-a-*`) per consentire flessibilità pur mantenendo i limiti.

 **Progetti di produzione separati: utilizza progetti** dedicati per la produzione con controlli più rigorosi e politiche di sincronizzazione manuale.

 **Scopi del progetto di documentazione**: utilizza il `description` campo per spiegare a cosa serve ogni progetto e chi dovrebbe utilizzarlo.

 **Rivedi regolarmente le autorizzazioni del progetto**: controlla periodicamente i progetti per assicurarti che le restrizioni siano ancora in linea con le esigenze del team e i requisiti di sicurezza.

## Risorse aggiuntive
<a name="_additional_resources"></a>
+  [Configurare le autorizzazioni di Argo CD](argocd-permissions.md)- Configurazione dell'integrazione tra RBAC e Identity Center
+  [Crea applicazioni](argocd-create-application.md)- Crea applicazioni all'interno dei progetti
+  [Usa ApplicationSets](argocd-applicationsets.md)- Utilizzabile ApplicationSets con Projects per implementazioni multi-cluster
+  [Documentazione sui progetti Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/) - Riferimento completo a upstream

# Crea applicazioni
<a name="argocd-create-application"></a>

Le applicazioni rappresentano distribuzioni nei cluster di destinazione. Ogni applicazione definisce una fonte (repository Git) e una destinazione (cluster e namespace). Una volta applicato, Argo CD creerà le risorse specificate dai manifest nel repository Git nello spazio dei nomi del cluster. Le applicazioni spesso specificano le distribuzioni dei carichi di lavoro, ma possono gestire qualsiasi risorsa Kubernetes disponibile nel cluster di destinazione.

## Prerequisiti
<a name="_prerequisites"></a>
+ È stato creato un cluster EKS con funzionalità Argo CD
+ Accesso al repository configurato (vedi) [Configurare l'accesso al repository](argocd-configure-repositories.md)
+ Cluster di destinazione registrato (vedi[Registra i cluster di destinazione](argocd-register-clusters.md))
+  `kubectl`configurato per comunicare con il cluster

## Crea un'applicazione di base
<a name="_create_a_basic_application"></a>

Definisci un'applicazione che viene distribuita da un repository Git:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: default
```

**Nota**  
Usalo `destination.name` con il nome del cluster che hai usato durante la registrazione del cluster (come `in-cluster` per il cluster locale). Il `destination.server` campo funziona anche con il cluster EKS ARNs, ma si consiglia di utilizzare i nomi dei cluster per una migliore leggibilità.

Applica l'applicazione:

```
kubectl apply -f application.yaml
```

Visualizza lo stato dell'applicazione:

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

## Configurazione dell'origine
<a name="_source_configuration"></a>

 **Archivio Git**:

```
spec:
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: kubernetes/manifests
```

 **Tag o commit Git specifici**:

```
spec:
  source:
    targetRevision: v1.2.0  # or commit SHA
```

 **Diagramma di Helm**:

```
spec:
  source:
    repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - values.yaml
      parameters:
      - name: image.tag
        value: v1.2.0
```

 **Grafico Helm con valori dal repository Git esterno (modello** multi-source):

```
spec:
  sources:
  - repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - $values/environments/production/values.yaml
  - repoURL: https://github.com/example/config-repo
    targetRevision: main
    ref: values
```

Per ulteriori informazioni, consultate [Helm Value Files from External Git Repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) nella documentazione del CD Argo.

 **Diagramma Helm tratto da ECR:**

```
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
```

Se il Capability Role dispone delle autorizzazioni ECR richieste, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi [Configurare l'accesso al repository](argocd-configure-repositories.md).

 **Repository Git da CodeCommit**:

```
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Se il Capability Role dispone delle CodeCommit autorizzazioni richieste, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi [Configurare l'accesso al repository](argocd-configure-repositories.md).

 **Repository Git da CodeConnections**:

```
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Il formato dell'URL del repository è derivato dall'ARN della CodeConnections connessione. Se il Capability Role dispone delle CodeConnections autorizzazioni richieste ed è configurata una connessione, il repository viene utilizzato direttamente e non è richiesta alcuna configurazione del repository. Per informazioni dettagliate, vedi [Configurare l'accesso al repository](argocd-configure-repositories.md).

 **Personalizza:**

```
spec:
  source:
    repoURL: https://github.com/example/kustomize-app
    targetRevision: main
    path: overlays/production
    kustomize:
      namePrefix: prod-
```

## Politiche di sincronizzazione
<a name="_sync_policies"></a>

Controlla il modo in cui Argo CD sincronizza le applicazioni.

 **Sincronizzazione manuale (impostazione predefinita)**:

Le applicazioni richiedono l'approvazione manuale per la sincronizzazione:

```
spec:
  syncPolicy: {}  # No automated sync
```

Attiva manualmente la sincronizzazione:

```
kubectl patch application guestbook -n argocd \
  --type merge \
  --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
```

 **Sincronizzazione automatica**:

Le applicazioni si sincronizzano automaticamente quando vengono rilevate modifiche a Git:

```
spec:
  syncPolicy:
    automated: {}
```

 **Autoriparazione:**

Ripristina automaticamente le modifiche manuali al cluster:

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

Se abilitato, Argo CD ripristina qualsiasi modifica manuale apportata direttamente al cluster, assicurando che Git rimanga la fonte della verità.

 **Potatura:**

Elimina automaticamente le risorse rimosse da Git:

```
spec:
  syncPolicy:
    automated:
      prune: true
```

**avvertimento**  
Il pruning eliminerà le risorse dal cluster. Usare con cautela negli ambienti di produzione.

 **Sincronizzazione automatica combinata**:

```
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

 **Riprova la configurazione**:

Configura il comportamento dei tentativi di ripetizione per le sincronizzazioni non riuscite:

```
spec:
  syncPolicy:
    retry:
      limit: 5  # Number of failed sync attempts; unlimited if less than 0
      backoff:
        duration: 5s  # Amount to back off (default unit: seconds, also supports "2m", "1h")
        factor: 2  # Factor to multiply the base duration after each failed retry
        maxDuration: 3m  # Maximum amount of time allowed for the backoff strategy
```

Ciò è particolarmente utile per le risorse che dipendono dal fatto di CRDs essere state create per prime o quando si lavora con istanze kro in cui il CRD potrebbe non essere immediatamente disponibile.

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

Configurazione di sincronizzazione aggiuntiva:

 **Crea lo spazio dei nomi se non esiste**:

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

 **Salta la corsa a secco per** le risorse mancanti:

Utile quando si applicano risorse che dipendono da CRDs ciò che non esistono ancora (come le istanze kro):

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

Questo può essere applicato anche a risorse specifiche utilizzando un'etichetta sulla risorsa stessa.

 **Convalida le risorse prima di applicarle**:

```
spec:
  syncPolicy:
    syncOptions:
    - Validate=true
```

 **Applica solo non sincronizzato**:

```
spec:
  syncPolicy:
    syncOptions:
    - ApplyOutOfSyncOnly=true
```

## Funzionalità di sincronizzazione avanzate
<a name="_advanced_sync_features"></a>

Argo CD supporta funzionalità di sincronizzazione avanzate per implementazioni complesse:
+  **Sync waves**: controlla l'ordine di creazione delle risorse con le annotazioni `argocd.argoproj.io/sync-wave`
+  **Sync hooks**: esegui i lavori prima o dopo la sincronizzazione con `argocd.argoproj.io/hook` le annotazioni (PreSync,,) PostSync SyncFail
+  **Valutazione dello stato delle risorse**: controlli di integrità personalizzati per le risorse specifiche dell'applicazione

Per i dettagli, consultate [Sync Waves](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) e [Resource Hooks nella documentazione](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) del CD Argo.

## Ignora le differenze
<a name="_ignore_differences"></a>

Impedisci ad Argo CD di sincronizzare campi specifici gestiti da altri controller (come HPA che gestisce le repliche):

```
spec:
  ignoreDifferences:
  - group: apps
    kind: Deployment
    jsonPointers:
    - /spec/replicas
```

Per i dettagli sugli schemi di ignoramento e sulle esclusioni dei campi, consultate [Diffing](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) Customization nella documentazione del CD Argo.

## Implementazione multiambiente
<a name="_multi_environment_deployment"></a>

Implementa la stessa applicazione in più ambienti:

 **Sviluppo**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-dev
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: develop
    path: overlays/development
  destination:
    name: dev-cluster
    namespace: my-app
```

 **Produzione**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-prod
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: overlays/production
  destination:
    name: prod-cluster
    namespace: my-app
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

## Monitora e gestisci le applicazioni
<a name="_monitor_and_manage_applications"></a>

 **Visualizza lo stato dell'applicazione**:

```
kubectl get application my-app -n argocd
```

 **Accedi all'interfaccia utente di Argo CD:**

Apri l'interfaccia utente di Argo CD tramite la console EKS per visualizzare la topologia dell'applicazione, lo stato di sincronizzazione, lo stato delle risorse e la cronologia di distribuzione. Vedi [Lavorare con Argo CD](working-with-argocd.md) per le istruzioni di accesso all'interfaccia utente.

 **Applicazioni di rollback**:

Ripristina una revisione precedente utilizzando l'interfaccia utente di Argo CD, l'Argo CD CLI o aggiornando le specifiche `targetRevision` dell'applicazione a un commit o tag Git precedente.

Utilizzo dell'Argo CD CLI:

```
argocd app rollback argocd/my-app <revision-id>
```

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

Per ulteriori informazioni, consulta il rollback dell'[app argocd](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/) nella documentazione di Argo CD.

## Risorse aggiuntive
<a name="_additional_resources"></a>
+  [Lavorare con Argo CD Projects](argocd-projects.md)- Organizza le applicazioni con Projects per ambienti multi-tenant
+  [Usa ApplicationSets](argocd-applicationsets.md)- Implementa su più cluster con modelli
+  [Specifiche dell'applicazione: riferimento](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) completo all'API dell'applicazione
+  [Opzioni di sincronizzazione](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/): configurazione di sincronizzazione avanzata

# Usa ApplicationSets
<a name="argocd-applicationsets"></a>

ApplicationSets genera più applicazioni da modelli, consentendoti di distribuire la stessa applicazione su più cluster, ambienti o namespace con un'unica definizione di risorsa.

## Prerequisiti
<a name="_prerequisites"></a>
+ È stato creato un cluster EKS con funzionalità Argo CD
+ Accesso al repository configurato (vedi) [Configurare l'accesso al repository](argocd-configure-repositories.md)
+  `kubectl`configurato per comunicare con il cluster

**Nota**  
Non sono necessari cluster di destinazione multipli per ApplicationSets. È possibile utilizzare generatori diversi dal generatore di cluster (come i generatori list, git o matrix) per distribuire applicazioni senza cluster remoti.

## Come funziona ApplicationSets
<a name="_how_applicationsets_work"></a>

ApplicationSets utilizzate i generatori per produrre parametri, quindi applicate tali parametri a un modello di applicazione. Ogni set di parametri generati crea un'applicazione.

Generatori comuni per le implementazioni EKS:
+  **Generatore di elenchi**: definisce in modo esplicito cluster e parametri per ogni ambiente
+  **Generatore di cluster**: implementa automaticamente su tutti i cluster registrati
+  **Generatore Git**: genera applicazioni dalla struttura del repository
+  **Generatore di matrici**: combina generatori per implementazioni multidimensionali
+  Generatore di **fusione: unisce i parametri di più generatori**

[Per un riferimento completo al generatore, consultate la Documentazione. ApplicationSet ](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/)

## Generatore di elenchi
<a name="_list_generator"></a>

Esegui la distribuzione su più cluster con configurazione esplicita:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook-all-clusters
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - environment: dev
        replicas: "2"
      - environment: staging
        replicas: "3"
      - environment: prod
        replicas: "5"
  template:
    metadata:
      name: 'guestbook-{{environment}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/guestbook
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{environment}}-cluster'
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

**Nota**  
Utilizzalo `destination.name` con i nomi dei cluster per una migliore leggibilità. ARNs Se necessario, il `destination.server` campo funziona anche con il cluster EKS.

Questo crea tre applicazioni: `guestbook-dev``guestbook-staging`, e`guestbook-prod`.

## Generatore di cluster
<a name="_cluster_generator"></a>

Implementa automaticamente su tutti i cluster registrati:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-addons
  namespace: argocd
spec:
  generators:
  - clusters: {}
  template:
    metadata:
      name: '{{name}}-addons'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/cluster-addons
        targetRevision: HEAD
        path: addons
      destination:
        server: '{{server}}'
        namespace: kube-system
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

Questo crea automaticamente un'applicazione per ogni cluster registrato.

 **Cluster di filtri:**

Utilizza `matchLabels` per includere cluster specifici o `matchExpressions` per escludere cluster:

```
spec:
  generators:
  - clusters:
      selector:
        matchLabels:
          environment: production
        matchExpressions:
        - key: skip-appset
          operator: DoesNotExist
```

## Generatori Git
<a name="_git_generators"></a>

I generatori Git creano applicazioni basate sulla struttura del repository:
+  **Generatore di directory**: distribuisci ogni directory come applicazione separata (utile per i microservizi)
+  **Generatore di file**: genera applicazioni da file di parametri (utile per le implementazioni multi-tenant)

 **Esempio: implementazione di microservizi** 

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: microservices
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://github.com/example/microservices
      revision: HEAD
      directories:
      - path: services/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/microservices
        targetRevision: HEAD
        path: '{{path}}'
      destination:
        name: my-cluster
        namespace: '{{path.basename}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - CreateNamespace=true
```

Per i dettagli sui generatori Git e sulla configurazione basata su file, consultate [Git Generator nella documentazione](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) del CD Argo.

## Generatore di matrici
<a name="_matrix_generator"></a>

Combina più generatori da implementare su più dimensioni (ambienti × cluster):

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: multi-env-multi-cluster
  namespace: argocd
spec:
  generators:
  - matrix:
      generators:
      - list:
          elements:
          - environment: dev
          - environment: staging
          - environment: prod
      - clusters:
          selector:
            matchLabels:
              region: us-west-2
  template:
    metadata:
      name: 'app-{{environment}}-{{name}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{name}}'
        namespace: 'app-{{environment}}'
```

Per i dettagli sulla combinazione dei generatori, consultate [Matrix Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) nella documentazione di Argo CD.

## Implementazione in più regioni
<a name="_multi_region_deployment"></a>

Implementa su cluster in più regioni:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: global-app
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - clusterName: prod-us-west
        region: us-west-2
      - clusterName: prod-us-east
        region: us-east-1
      - clusterName: prod-eu-west
        region: eu-west-1
  template:
    metadata:
      name: 'app-{{region}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: kubernetes
        helm:
          parameters:
          - name: region
            value: '{{region}}'
      destination:
        name: '{{clusterName}}'
        namespace: app
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

## Gestisci ApplicationSets
<a name="_manage_applicationsets"></a>

 **Visualizza ApplicationSets e genera applicazioni**:

```
kubectl get applicationsets -n argocd
kubectl get applications -n argocd -l argocd.argoproj.io/application-set-name=<applicationset-name>
```

 **Aggiorna un ApplicationSet**:

Modifica le ApplicationSet specifiche e riapplica. Argo CD aggiorna automaticamente tutte le applicazioni generate:

```
kubectl apply -f applicationset.yaml
```

 **Eliminare un ApplicationSet**:

```
kubectl delete applicationset <name> -n argocd
```

**avvertimento**  
Eliminazione ed ApplicationSet eliminazione di tutte le applicazioni generate. Se tali applicazioni lo hanno fatto`prune: true`, le relative risorse verranno eliminate anche dai cluster di destinazione.  
Per preservare le risorse distribuite durante l'eliminazione di un file ApplicationSet, impostate su `true` nelle `.syncPolicy.preserveResourcesOnDeletion` specifiche. ApplicationSet Per ulteriori informazioni, consultate [Application Pruning & Resource Deletion](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Application-Deletion/) nella documentazione del CD Argo.

**Importante**  
La ApplicationSets funzionalità di Argo CD prevede considerazioni sulla sicurezza di cui è necessario tenere conto prima di utilizzarla. ApplicationSets Per ulteriori informazioni, consultate la sezione [ApplicationSet Sicurezza](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Security/) nella documentazione del CD Argo.

## Risorse aggiuntive
<a name="_additional_resources"></a>
+  [Lavorare con Argo CD Projects](argocd-projects.md)- Organizza ApplicationSets con progetti
+  [Crea applicazioni](argocd-create-application.md)- Comprendi la configurazione dell'applicazione
+  [ApplicationSet Documentazione](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/): riferimenti e modelli completi del generatore
+  [Generator Reference](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) - Specifiche dettagliate del generatore

# Considerazioni su Argo CD
<a name="argocd-considerations"></a>

Questo argomento tratta importanti considerazioni sull'utilizzo del CD EKS Capability for Argo, tra cui pianificazione, autorizzazioni, autenticazione e modelli di distribuzione multicluster.

## Pianificazione
<a name="_planning"></a>

Prima di distribuire Argo CD, considerate quanto segue:

 **Strategia** di archiviazione: stabilite dove verranno archiviati i manifesti dell'applicazione (CodeCommit,, GitHub, GitLab Bitbucket). Pianifica la struttura del repository e la strategia di ramificazione per diversi ambienti.

 **Strategia RBAC**: pianifica quali team o utenti devono avere accesso come amministratore, editor o visualizzatore. Associali ai gruppi di AWS Identity Center o ai ruoli di Argo CD.

 **Architettura multicluster**: stabilisci se gestirai più cluster da una singola istanza Argo CD. Prendi in considerazione l'utilizzo di un cluster di gestione dedicato per Argo CD.

 **Organizzazione delle applicazioni**: pianifica come strutturerai le applicazioni e ApplicationSets. Prendi in considerazione l'utilizzo di progetti per organizzare le applicazioni per team o ambiente.

 **Criteri di sincronizzazione**: decidi se le applicazioni devono sincronizzarsi automaticamente o richiedere l'approvazione manuale. La sincronizzazione automatica è comune per lo sviluppo, quella manuale per la produzione.

## Permissions
<a name="_permissions"></a>

Per informazioni dettagliate su IAM Capability Roles, sulle policy di fiducia e sulle best practice di sicurezza, consulta [Funzionalità Amazon EKS, ruolo IAM](capability-role.md) e[Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md).

### Panoramica del ruolo di IAM Capability
<a name="_iam_capability_role_overview"></a>

Quando crei una risorsa di funzionalità Argo CD, fornisci un ruolo di capacità IAM. A differenza di ACK, Argo CD gestisce principalmente le risorse Kubernetes, non le risorse direttamente. AWS Tuttavia, lo IAM Capability Role è necessario per:
+ Accesso agli archivi Git privati in CodeCommit
+ Integrazione con AWS Identity Center per l'autenticazione
+ Accesso ai AWS segreti in Secrets Manager (se configurato)
+ Implementazioni tra cluster su altri cluster EKS

### CodeCommit integrazione
<a name="_codecommit_integration"></a>

Se utilizzi i CodeCommit repository, allega una policy con autorizzazioni di lettura:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "*"
    }
  ]
}
```

**Importante**  
Per uso in produzione, limita il `Resource` campo a un repository specifico ARNs invece di utilizzarlo. `"*"`  
Esempio:  

```
"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"
```
Ciò limita l'accesso della funzionalità Argo CD solo ai repository che deve gestire.

### Integrazione di Secrets Manager
<a name="_secrets_manager_integration"></a>

Se stai archiviando le credenziali del repository in Secrets Manager, allega la policy gestita per l'accesso in lettura:

```
arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess
```

Questa politica include le autorizzazioni necessarie:`secretsmanager:GetSecretValue`, e le autorizzazioni di `secretsmanager:DescribeSecret` decrittografia KMS.

### Configurazione di base
<a name="_basic_setup"></a>

Per le funzionalità di base di Argo CD con repository Git pubblici, non sono richieste policy IAM aggiuntive oltre alla policy di trust.

## Autenticazione
<a name="_authentication"></a>

### AWS Integrazione con Identity Center
<a name="shared_aws_identity_center_integration"></a>

La funzionalità gestita da Argo CD si integra direttamente con AWS Identity Center (precedentemente AWS SSO), consentendoti di utilizzare il tuo provider di identità esistente per l'autenticazione.

Quando configuri l'integrazione con Identity Center: AWS 

1. Gli utenti accedono all'interfaccia utente di Argo CD tramite la console EKS

1. Si autenticano utilizzando AWS Identity Center (che può essere collegato al vostro provider di identità aziendale)

1.  AWS Identity Center fornisce informazioni su utenti e gruppi su Argo CD

1. Argo CD associa utenti e gruppi ai ruoli RBAC in base alla configurazione

1. Gli utenti vedono solo le applicazioni e le risorse a cui hanno il permesso di accedere

### Semplificazione dell'accesso con i set di autorizzazioni di Identity Center
<a name="_simplifying_access_with_identity_center_permission_sets"></a>

 AWS Identity Center offre due percorsi di autenticazione distinti quando si lavora con Argo CD:

 **Autenticazione tramite API Argo CD**: Identity Center fornisce l'autenticazione SSO all'interfaccia utente e all'API di Argo CD. Questo viene configurato tramite le mappature dei ruoli RBAC della funzionalità Argo CD.

 **Accesso al cluster EKS**: la funzionalità Argo CD utilizza il ruolo IAM fornito dal cliente per l'autenticazione con i cluster EKS tramite voci di accesso. Queste voci di accesso possono essere configurate manualmente per aggiungere o rimuovere autorizzazioni.

È possibile utilizzare i [set di autorizzazioni di Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) per semplificare la gestione delle identità consentendo a una singola identità di accedere sia ai cluster Argo CD che EKS. Ciò riduce il sovraccarico richiedendo di gestire una sola identità su entrambi i sistemi, anziché mantenere credenziali separate per l'accesso ad Argo CD e l'accesso al cluster.

### Mappature dei ruoli RBAC
<a name="_rbac_role_mappings"></a>

Argo CD dispone di ruoli integrati che è possibile mappare agli utenti e ai gruppi di AWS Identity Center:

 **ADMIN**: accesso completo a tutte le applicazioni e le impostazioni. Può creare, aggiornare ed eliminare applicazioni. Può gestire la configurazione di Argo CD.

 **EDITOR**: Può creare e modificare applicazioni. Non è possibile modificare le impostazioni di Argo CD o eliminare applicazioni.

 **VIEWER**: accesso in sola lettura alle applicazioni. Può visualizzare lo stato e la cronologia dell'applicazione. Non è possibile apportare modifiche.

**Nota**  
I nomi dei ruoli fanno distinzione tra maiuscole e minuscole e devono essere maiuscole (ADMIN, EDITOR, VIEWER).

**Importante**  
L'integrazione di EKS Capabilities con AWS Identity Center supporta fino a 1.000 identità per funzionalità Argo CD. Un'identità può essere un utente o un gruppo.

## Implementazioni multicluster
<a name="_multi_cluster_deployments"></a>

La funzionalità gestita da Argo CD supporta implementazioni multi-cluster, consentendo di gestire le applicazioni in cluster di sviluppo, staging e produzione da una singola istanza Argo CD.

### Come funziona il multicluster
<a name="_how_multi_cluster_works"></a>

Quando si registrano cluster aggiuntivi con Argo CD:

1. Crei segreti del cluster che fanno riferimento ai cluster EKS di destinazione tramite ARN

1. Create applicazioni o destinate a ApplicationSets cluster diversi

1. Argo CD si connette a ciascun cluster per distribuire e controllare le risorse

1. Puoi visualizzare e gestire tutti i cluster da un'unica interfaccia utente di Argo CD

### Prerequisiti per il multicluster
<a name="_prerequisites_for_multi_cluster"></a>

Prima di registrare cluster aggiuntivi:
+ Crea una voce di accesso sul cluster di destinazione per il ruolo di funzionalità Argo CD
+ Garantite la connettività di rete tra la funzionalità Argo CD e i cluster di destinazione
+ Verifica le autorizzazioni IAM per accedere ai cluster di destinazione

### Registra un cluster
<a name="_register_a_cluster"></a>

Registra i cluster utilizzando Kubernetes Secrets nel namespace. `argocd`

Ottieni l'ARN del cluster di destinazione. Sostituiscilo *region-code* con la AWS regione in cui si trova il cluster di destinazione e *target-cluster* sostituiscilo con il nome del cluster di destinazione.

```
aws eks describe-cluster \
  --region region-code \
  --name target-cluster \
  --query 'cluster.arn' \
  --output text
```

Crea un segreto del cluster utilizzando l'ARN del cluster:

```
apiVersion: v1
kind: Secret
metadata:
  name: target-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
  name: target-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster
  project: default
```

**Importante**  
Utilizza l'ARN del cluster EKS nel `server` campo, non l'URL del server API Kubernetes. La funzionalità gestita richiede l'identificazione dei cluster ARNs di destinazione.

Applica il segreto:

```
kubectl apply -f cluster-secret.yaml
```

### Configura Access Entry sul cluster di destinazione
<a name="_configure_access_entry_on_target_cluster"></a>

Il cluster di destinazione deve disporre di un Access Entry che conceda al ruolo di funzionalità Argo CD l'autorizzazione a distribuire le applicazioni. Sostituisci *region-code* con la AWS regione in cui si trova il cluster di destinazione, sostituisci *target-cluster* con il nome del cluster di destinazione e sostituisci l'ARN con il tuo ruolo di funzionalità Argo CD ARN.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD \
  --kubernetes-groups system:masters
```

**Nota**  
Per l'uso in produzione, prendi in considerazione l'utilizzo di gruppi Kubernetes più restrittivi anziché. `system:masters`

### Accesso privato al cluster
<a name="_private_cluster_access"></a>

La funzionalità gestita da Argo CD può essere implementata su cluster EKS completamente privati senza richiedere peering VPC o configurazioni di rete specializzate. AWS gestisce automaticamente la connettività tra la funzionalità Argo CD e i cluster remoti privati. Assicurati che i controlli di accesso al repository e le politiche RBAC di Argo CD siano configurati correttamente.

### Implementazioni su più account
<a name="_cross_account_deployments"></a>

Per le distribuzioni tra account, aggiungi l'Argo CD IAM Capability Role dall'account di origine all'EKS Access Entry del cluster di destinazione:

1. Nell'account di destinazione, create un Access Entry sul cluster EKS di destinazione

1. Usa l'ARN Argo CD IAM Capability Role dell'account di origine come principale

1. Configura le autorizzazioni RBAC Kubernetes appropriate per l'Access Entry

1. Registra il cluster di destinazione in Argo CD utilizzando il relativo ARN del cluster EKS

Non è richiesta la creazione di ruoli IAM aggiuntivi o la configurazione delle policy di fiducia: EKS Access Entries gestisce l'accesso tra account.

## Best practice
<a name="_best_practices"></a>

 **Usa le fonti dichiarative come fonte di verità**: archivia tutti i manifesti delle tue applicazioni in fonti dichiarative (repository Git, registri Helm o immagini OCI), abilitando il controllo delle versioni, gli audit trail e la collaborazione.

 **Implementa un RBAC adeguato**: utilizza l'integrazione di AWS Identity Center per controllare chi può accedere e gestire le applicazioni in Argo CD. Argo CD supporta un controllo granulare degli accessi alle risorse all'interno delle applicazioni (implementazioni, pod e segreti). ConfigMaps

 **Utilizzo ApplicationSets per implementazioni multiambiente: da utilizzare per distribuire applicazioni su** più cluster o namespace ApplicationSets con configurazioni diverse.

## Gestione del ciclo di vita
<a name="_lifecycle_management"></a>

### Politiche di sincronizzazione delle applicazioni
<a name="_application_sync_policies"></a>

Controlla il modo in cui Argo CD sincronizza le applicazioni:

 **Sincronizzazione manuale**: le applicazioni richiedono l'approvazione manuale per sincronizzare le modifiche. Consigliata per ambienti **di produzione**.

 **Sincronizzazione automatica**: le applicazioni si sincronizzano automaticamente quando vengono rilevate modifiche a Git. Comune per gli ambienti di sviluppo e gestione temporanea.

 **Correzione automatica**: ripristina automaticamente le modifiche manuali apportate al cluster. Assicura che lo stato del cluster corrisponda a Git.

 **Potatura**: elimina automaticamente le risorse rimosse da Git. Usalo con cautela in quanto ciò può eliminare le risorse.

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

Argo CD monitora continuamente lo stato delle applicazioni:
+  **Salutare**: tutte le risorse funzionano come previsto
+  **Progressione**: le risorse vengono create o aggiornate
+  **Degradate**: alcune risorse non sono salutari
+  **Sospesa**: l'applicazione è in pausa
+  **Mancante**: le risorse non sono presenti nel cluster

### Sincronizza finestre
<a name="_sync_windows"></a>

Configura le finestre di sincronizzazione per controllare quando le applicazioni possono essere sincronizzate:
+ Consenti le sincronizzazioni solo durante le finestre di manutenzione
+ Blocca le sincronizzazioni durante l'orario lavorativo
+ Pianifica le sincronizzazioni automatiche per orari specifici
+ Utilizza le finestre di sincronizzazione in situazioni in cui devi apportare modifiche e interrompere qualsiasi sincronizzazione (scenari break-glass)

## Configurazione Webhook per una sincronizzazione più rapida
<a name="_webhook_configuration_for_faster_sync"></a>

Per impostazione predefinita, Argo CD esegue il polling dei repository Git ogni 6 minuti per rilevare le modifiche. Per implementazioni più reattive, configura i webhook Git per attivare sincronizzazioni immediate quando vengono inviate le modifiche.

I webhook offrono diversi vantaggi:
+ Risposta di sincronizzazione immediata quando viene inviato il codice (secondi anziché minuti)
+ Riduzione del sovraccarico di polling e miglioramento delle prestazioni del sistema
+ Uso più efficiente dei limiti di velocità delle API
+ Esperienza utente migliore con feedback più rapidi

### Endpoint Webhook
<a name="_webhook_endpoint"></a>

L'URL del webhook segue lo schema`${serverUrl}/api/webhook`, `serverUrl` dov'è l'URL del server Argo CD.

Ad esempio, se l'URL del server Argo CD è`https://abc123.eks-capabilities.us-west-2.amazonaws.com`, l'URL del webhook è:

```
https://abc123.eks-capabilities.us-west-2.amazonaws.com/api/webhook
```

### Configura i webhook tramite il provider Git
<a name="_configure_webhooks_by_git_provider"></a>

 **GitHub**: Nelle impostazioni del repository, aggiungi un webhook con l'URL del webhook Argo CD. Imposta il tipo di contenuto su `application/json` e seleziona «Just the push event».

 **GitLab**: Nelle impostazioni del progetto, aggiungi un webhook con l'URL del webhook di Argo CD. Abilita «Eventi push» e, facoltativamente, «Tag eventi push».

 **Bitbucket**: nelle impostazioni del repository, aggiungi un webhook con l'URL del webhook di Argo CD. Seleziona «Repository push» come trigger.

 **CodeCommit**: crea una EventBridge regola Amazon che si attiva in base alle modifiche dello stato del CodeCommit repository e invia notifiche all'endpoint webhook Argo CD.

[Per istruzioni dettagliate sulla configurazione dei webhook, consulta Argo CD Webhook Configuration.](https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/)

**Nota**  
I webhook completano il polling, non lo sostituiscono. Argo CD continua a sondare gli archivi come meccanismo di riserva nel caso in cui le notifiche dei webhook vengano perse.

## Fasi successive
<a name="_next_steps"></a>
+  [Lavorare con Argo CD](working-with-argocd.md)- Scopri come creare e gestire applicazioni Argo CD
+  [Risolvi i problemi relativi alle funzionalità di Argo CD](argocd-troubleshooting.md)- Risolvi i problemi relativi ad Argo CD
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestite la vostra risorsa dedicata alle funzionalità di Argo CD

# Risolvi i problemi relativi alle funzionalità di Argo CD
<a name="argocd-troubleshooting"></a>

Questo argomento fornisce linee guida per la risoluzione dei problemi del CD EKS Capability for Argo, compresi i controlli dello stato delle funzionalità, i problemi di sincronizzazione delle applicazioni, l'autenticazione del repository e le implementazioni multi-cluster.

**Nota**  
Le funzionalità EKS sono completamente gestite ed eseguite all'esterno del cluster. Non avete accesso ai log del server Argo CD o al namespace. `argocd` La risoluzione dei problemi si concentra sullo stato delle funzionalità, sullo stato dell'applicazione e sulla configurazione.

## La funzionalità è ATTIVA ma le applicazioni non si sincronizzano
<a name="_capability_is_active_but_applications_arent_syncing"></a>

Se la funzionalità Argo CD mostra `ACTIVE` lo stato ma le applicazioni non si sincronizzano, controlla lo stato della funzionalità e lo stato dell'applicazione.

 **Verifica lo stato della funzionalità**:

È possibile visualizzare i problemi relativi allo stato e allo stato delle funzionalità nella console EKS o utilizzando la AWS CLI.

 **Console**:

1. Apri la console Amazon EKS a https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Seleziona il nome del cluster.

1. Scegli la scheda **Osservabilità**.

1. Scegli **Monitora cluster**.

1. Scegli la scheda **Capacità** per visualizzare lo stato e lo stato di tutte le funzionalità.

 ** AWS CLI:**

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd

# Look for issues in the health section
```

 Cause comuni:
+  **Repository non configurato**: repository Git non aggiunto al CD Argo
+  **Autenticazione fallita**: chiave SSH, token o credenziali non validi CodeCommit 
+  **Applicazione non creata**: non esistono risorse applicative nel cluster
+  **Politica di sincronizzazione**: è richiesta la sincronizzazione manuale (la sincronizzazione automatica non è abilitata)
+  Autorizzazioni **IAM: autorizzazioni** mancanti per il nostro Secrets CodeCommit Manager

 **Controlla lo stato dell'applicazione**:

```
# List applications
kubectl get application -n argocd

# View sync status
kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}'

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

 **Verifica le condizioni della domanda**:

```
# Describe application to see detailed status
kubectl describe application my-app -n argocd

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

## Applicazioni bloccate nello stato «In corso»
<a name="_applications_stuck_in_progressing_state"></a>

Se un'applicazione viene visualizzata `Progressing` ma non arriva mai`Healthy`, controlla lo stato delle risorse e gli eventi dell'applicazione.

 **Controlla lo stato delle risorse**:

```
# View application resources
kubectl get application my-app -n argocd -o jsonpath='{.status.resources}'

# Check for unhealthy resources
kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
```

 Cause comuni:
+  **Implementazione non pronta**: i pod non si avviano o le sonde di prontezza non funzionano
+  **Dipendenze tra le risorse**: risorse in attesa che altre risorse siano pronte
+  **Errori di estrazione delle immagini**: le immagini dei contenitori non sono accessibili
+  **Risorse insufficienti**: il cluster non dispone di CPU o memoria per i pod

 **Verifica la configurazione del cluster di destinazione** (per configurazioni a più cluster):

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# View cluster secret details
kubectl get secret cluster-secret-name -n argocd -o yaml
```

## Errori di autenticazione del repository
<a name="_repository_authentication_failures"></a>

Se Argo CD non può accedere ai tuoi repository Git, verifica la configurazione di autenticazione.

 **Per CodeCommit ** i repository:

Verifica che IAM Capability Role disponga delle CodeCommit autorizzazioni:

```
# View IAM policies
aws iam list-attached-role-policies --role-name my-argocd-capability-role
aws iam list-role-policies --role-name my-argocd-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-argocd-capability-role --policy-name policy-name
```

Il ruolo richiede l'`codecommit:GitPull`autorizzazione per i repository.

 **Per i repository Git privati**:

Verifica che le credenziali del repository siano configurate correttamente:

```
# Check repository secret exists
kubectl get secret -n argocd repo-secret-name -o yaml
```

Assicurati che il segreto contenga le credenziali di autenticazione corrette (chiave SSH, token o nome utente/password).

 **Per i repository che utilizzano Secrets Manager**:

```
# Verify IAM Capability Role has Secrets Manager permissions
aws iam list-attached-role-policies --role-name my-argocd-capability-role

# Test secret retrieval
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:region-code:111122223333:secret:my-secret
```

## Problemi di distribuzione su più cluster
<a name="_multi_cluster_deployment_issues"></a>

Se le applicazioni non vengono distribuite su cluster remoti, verifica la registrazione del cluster e la configurazione dell'accesso.

 **Controlla la registrazione del cluster**:

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# Verify cluster secret format
kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
```

Assicurati che il `server` campo contenga l'ARN del cluster EKS, non l'URL dell'API Kubernetes.

 **Verifica l'accesso al cluster di destinazione**:

Sul cluster di destinazione, verifica che Argo CD Capability Role abbia un Access Entry:

```
# List access entries (run on target cluster or use AWS CLI)
aws eks list-access-entries --cluster-name target-cluster

# Describe specific access entry
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
```

 **Controlla le autorizzazioni IAM per** più account:

Per le distribuzioni tra account, verifica che Argo CD Capability Role abbia un Access Entry sul cluster di destinazione. La funzionalità gestita utilizza EKS Access Entries per l'accesso su più account, non l'assunzione di ruoli IAM.

Per ulteriori informazioni sulla configurazione multi-cluster, consulta. [Registra i cluster di destinazione](argocd-register-clusters.md)

## Fasi successive
<a name="_next_steps"></a>
+  [Considerazioni su Argo CD](argocd-considerations.md)- Considerazioni e best practice su Argo CD
+  [Lavorare con Argo CD](working-with-argocd.md)- Crea e gestisci applicazioni Argo CD
+  [Registra i cluster di destinazione](argocd-register-clusters.md)- Configurazione di implementazioni multi-cluster
+  [Risoluzione dei problemi delle funzionalità EKS](capabilities-troubleshooting.md)- Guida generale alla risoluzione dei problemi relativi alle funzionalità

# Confronto tra la funzionalità EKS per Argo CD e Argo CD autogestita
<a name="argocd-comparison"></a>

EKS Capability for Argo CD offre un'esperienza Argo CD completamente gestita che può essere eseguita in EKS. Per un confronto generale tra EKS Capabilities e soluzioni autogestite, vedi. [Considerazioni sulle funzionalità EKS](capabilities-considerations.md) Questo argomento si concentra sulle differenze specifiche di Argo CD, tra cui l'autenticazione, la gestione di più cluster e il supporto delle funzionalità upstream.

## Differenze rispetto alla versione upstream di Argo CD
<a name="_differences_from_upstream_argo_cd"></a>

EKS Capability for Argo CD si basa sull'upstream Argo CD, ma differisce nel modo in cui è accessibile, configurato e integrato con i servizi. AWS 

 **RBAC e autenticazione**: la funzionalità include tre ruoli RBAC (amministratore, editor, visualizzatore) e utilizza AWS Identity Center per l'autenticazione anziché l'autenticazione integrata di Argo CD. Configura le mappature dei ruoli tramite il `rbacRoleMapping` parametro della funzionalità per mappare i gruppi di Identity Center ai ruoli di Argo CD, non tramite Argo CD. `argocd-rbac-cm` ConfigMap L'interfaccia utente di Argo CD è ospitata con un proprio URL diretto (lo trovi nella console EKS nella scheda Capacità del cluster) e l'accesso all'API utilizza l' AWS autenticazione e l'autorizzazione tramite IAM.

 **Configurazione del cluster**: la funzionalità non configura automaticamente il cluster o le hub-and-spoke topologie locali. È possibile configurare i cluster di destinazione della distribuzione e le voci di accesso EKS. La funzionalità supporta solo i cluster Amazon EKS come obiettivi di distribuzione utilizzando il cluster EKS ARNs (non il server API Kubernetes). URLs La funzionalità non aggiunge automaticamente il cluster locale (`kubernetes.default.svc`) come obiettivo di distribuzione: per eseguire la distribuzione nello stesso cluster in cui viene creata la funzionalità, è necessario registrare esplicitamente quel cluster utilizzando il relativo ARN.

 **Accesso remoto semplificato ai cluster**: la funzionalità semplifica le implementazioni multi-cluster utilizzando EKS Access Entries per concedere l'accesso Argo CD ai cluster remoti, eliminando la necessità di configurare IAM Roles for Service Accounts (IRSA) o impostare ipotesi di ruoli IAM tra account. La funzionalità fornisce inoltre un accesso trasparente a cluster EKS completamente privati senza richiedere il peering VPC o una configurazione di rete specializzata AWS : gestisce automaticamente la connettività tra la funzionalità Argo CD e i cluster remoti privati.

 Integrazione **diretta dei AWS servizi: la funzionalità fornisce l'integrazione** diretta con i AWS servizi tramite le autorizzazioni IAM di Capability Role. È possibile fare riferimento ai CodeCommit repository, ai grafici ECR Helm e CodeConnections direttamente nelle risorse dell'applicazione senza creare configurazioni di repository. Ciò semplifica l'autenticazione ed elimina la necessità di gestire credenziali separate per i servizi. AWS Per informazioni dettagliate, vedi [Configurare l'accesso al repository](argocd-configure-repositories.md).

 **Supporto per lo spazio dei nomi**: la funzionalità richiede di specificare un unico spazio dei nomi in cui creare l'applicazione Argo CD e le risorse personalizzate ApplicationSet. AppProject 

**Nota**  
Questa restrizione dello spazio dei nomi si applica solo alle risorse personalizzate di Argo CD (Application,,). ApplicationSet AppProject I carichi di lavoro delle applicazioni possono essere distribuiti su qualsiasi namespace in qualsiasi cluster di destinazione. Ad esempio, se si crea la funzionalità con lo spazio dei nomi`argocd`, tutte le applicazioni CRs devono essere create nello spazio dei `argocd` nomi, ma tali applicazioni possono distribuire carichi di lavoro in,, o qualsiasi altro spazio dei nomi. `default` `production` `staging`

**Nota**  
La funzionalità gestita ha requisiti specifici per l'utilizzo e AppProject la configurazione della CLI:  
Quando si utilizza l'Argo CD CLI, specificare le applicazioni con il prefisso dello spazio dei nomi: `argocd app sync namespace/appname` 
AppProject le risorse devono specificare `.spec.sourceNamespaces` per definire quali namespace il progetto può controllare per le applicazioni (in genere impostate sullo spazio dei nomi specificato durante la creazione della funzionalità)
Le annotazioni di tracciamento delle risorse utilizzano il formato: `namespace_appname:group/kind:namespace/name` 

 **Funzionalità non supportate**: le seguenti funzionalità non sono disponibili nella funzionalità gestita:
+ Plugin di gestione della configurazione (CMPs) per la generazione di manifest personalizzati
+ Script Lua personalizzati per la valutazione dello stato delle risorse (sono supportati i controlli integrati per le risorse standard)
+ Il controller delle notifiche
+ Provider SSO personalizzati (è supportato solo AWS Identity Center, inclusa l'identità federata di terze parti tramite AWS Identity Center)
+ Estensioni dell'interfaccia utente e banner personalizzati
+ Accesso diretto e altre configurazioni `argocd-cm` `argocd-params` ConfigMaps
+ Modifica del timeout di sincronizzazione (fissato a 120 secondi)

 **Compatibilità**: le applicazioni ApplicationSets funzionano in modo identico alla versione upstream di Argo CD senza modifiche ai manifesti. La funzionalità utilizza lo stesso Kubernetes APIs e CRDs quindi strumenti come quelli funzionano allo stesso modo. `kubectl` La funzionalità supporta pienamente applicazioni e GitOps flussi di lavoro con sincronizzazione automatica ApplicationSets, implementazioni multi-cluster, policy di sincronizzazione (automatizzate, prune, self-heal), wave e hook di sincronizzazione, valutazione dello stato di salute per risorse Kubernetes standard, funzionalità di rollback, sorgenti di repository Git (HTTPS e SSH), Helm, Kustomize e semplici manifesti YAML, credenziali delle app, progetti per multi-tenancy ed esclusioni e inclusioni di risorse usioni. GitHub 

## Utilizzo dell'Argo CD CLI con funzionalità gestite
<a name="argocd-cli-configuration"></a>

L'Argo CD CLI funziona allo stesso modo dell'Argo CD upstream per la maggior parte delle operazioni, ma l'autenticazione e la registrazione del cluster sono diverse.

### Prerequisiti
<a name="_prerequisites"></a>

Installa l'Argo CD CLI seguendo le istruzioni di installazione [upstream](https://argo-cd.readthedocs.io/en/stable/cli_installation/).

### Configurazione
<a name="_configuration"></a>

Configura la CLI utilizzando le variabili di ambiente:

1. Ottieni l'URL del server Argo CD dalla console EKS (nella scheda **Capacità** del cluster) o utilizzando la AWS CLI. Il `https://` prefisso deve essere rimosso:

   ```
   export ARGOCD_SERVER=$(aws eks describe-capability \
     --cluster-name my-cluster \
     --capability-name my-argocd \
     --query 'capability.configuration.argoCd.serverUrl' \
     --output text \
     --region region-code | sed 's|^https://||')
   ```

1. Genera un token di account dall'interfaccia utente di Argo CD (**Impostazioni** → **Account** → **amministratore** → **Genera nuovo token**), quindi impostalo come variabile di ambiente:

   ```
   export ARGOCD_AUTH_TOKEN="your-token-here"
   ```

**Importante**  
Questa configurazione utilizza il token dell'account di amministrazione per i flussi di lavoro iniziali di configurazione e sviluppo. Per i casi d'uso in produzione, utilizza ruoli e token relativi al progetto per seguire il principio del privilegio minimo. Per ulteriori informazioni sulla configurazione dei ruoli di progetto e dell'RBAC, vedere. [Configurare le autorizzazioni di Argo CD](argocd-permissions.md)

1. Imposta l'opzione gRPC richiesta:

   ```
   export ARGOCD_OPTS="--grpc-web"
   ```

Con queste variabili di ambiente impostate, è possibile utilizzare l'Argo CD CLI senza `argocd login` il comando.

### Differenze principali
<a name="_key_differences"></a>

La funzionalità gestita presenta le seguenti limitazioni CLI:
+  `argocd admin`i comandi non sono supportati (richiedono l'accesso diretto al pod)
+  `argocd login`non è supportato (usa invece i token dell'account o del progetto)
+  `argocd cluster add`richiede il `--aws-cluster-name` flag con l'ARN del cluster EKS

### Esempio: registrare un cluster
<a name="_example_register_a_cluster"></a>

Registra un cluster EKS per la distribuzione delle applicazioni:

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

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

Per la documentazione completa della CLI di Argo CD, consultate il riferimento alla [CLI di Argo CD](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/).

## Percorso di migrazione
<a name="_migration_path"></a>

È possibile migrare da Argo CD autogestito alla funzionalità gestita:

1. Controllate la configurazione attuale di Argo CD per verificare la presenza di funzionalità non supportate (controller di notifica, controlli di integrità personalizzati CMPs, estensioni dell'interfaccia utente)

1. Ridimensiona i controller Argo CD autogestiti fino a zero repliche per evitare conflitti

1. Crea una risorsa con funzionalità Argo CD sul tuo cluster

1. Esporta le tue applicazioni esistenti ApplicationSets e AppProjects

1. Esegui la migrazione delle credenziali del repository, dei segreti del cluster e dei modelli di credenziali di repository (record)

1. Se utilizzi chiavi GPG, certificati TLS o host noti SSH, migra anche queste configurazioni

1. Aggiorna `destination.server` i campi per utilizzare i nomi dei cluster o i cluster EKS ARNs

1. Applicali all'istanza Argo CD gestita

1. Verifica che le applicazioni si sincronizzino correttamente

1. Disattiva l'installazione di Argo CD autogestita

La funzionalità gestita utilizza lo stesso CD di Argo APIs e le stesse definizioni di risorse, quindi i manifesti esistenti funzionano con modifiche minime.

## Fasi successive
<a name="_next_steps"></a>
+  [Crea una funzionalità Argo CD](create-argocd-capability.md)- Create una risorsa con funzionalità Argo CD
+  [Lavorare con Argo CD](working-with-argocd.md)- Implementa la tua prima applicazione
+  [Considerazioni su Argo CD](argocd-considerations.md)- Configurazione AWS dell'integrazione con Identity Center