

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

# Implementa AWS risorse da Kubernetes con AWS Controllers for Kubernetes (ACK)
<a name="ack"></a>

 AWS Controllers for Kubernetes (ACK) ti consente di definire e gestire le risorse di servizio direttamente da Kubernetes. AWS Con AWS Controllers for Kubernetes (ACK), puoi gestire le risorse dei carichi di lavoro e l'infrastruttura cloud utilizzando le risorse personalizzate di Kubernetes, insieme ai carichi di lavoro delle applicazioni utilizzando Kubernetes e strumenti familiari. APIs 

Con EKS Capabilities, ACK è completamente gestito da, eliminando la necessità di installare AWS, mantenere e scalare i controller ACK sui cluster.

## Come funziona ACK
<a name="_how_ack_works"></a>

ACK traduce le specifiche delle risorse personalizzate di Kubernetes in chiamate API. AWS Quando crei, aggiorni o elimini una risorsa personalizzata Kubernetes che rappresenta una risorsa di AWS servizio, ACK effettua le chiamate AWS API necessarie per creare, aggiornare o eliminare la risorsa. AWS 

Ogni AWS risorsa supportata da ACK ha una propria definizione di risorsa personalizzata (CRD) che definisce lo schema dell'API Kubernetes per specificarne la configurazione. Ad esempio, ACK fornisce CRDs S3 tra cui bucket, bucket policy e altre risorse S3.

ACK riconcilia continuamente lo stato delle AWS risorse con lo stato desiderato definito nelle risorse personalizzate Kubernetes. Se una risorsa si discosta dallo stato desiderato, ACK lo rileva e intraprende azioni correttive per riportarla all'allineamento. Le modifiche alle risorse Kubernetes si riflettono immediatamente sullo stato della AWS risorsa, mentre il rilevamento passivo della deriva e la correzione delle modifiche alle AWS risorse a monte possono richiedere fino a 10 ore (il periodo di risincronizzazione), ma in genere avvengono molto prima.

 **Esempio di manifesto delle risorse di S3 Bucket** 

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-ack-bucket
spec:
  name: my-unique-bucket-name
```

Quando applichi questa risorsa personalizzata al tuo cluster, ACK crea un bucket Amazon S3 nel tuo account se non esiste ancora. Le modifiche successive a questa risorsa, ad esempio la specificazione di un livello di storage non predefinito o l'aggiunta di una policy, verranno applicate alla risorsa S3 in. AWS Quando questa risorsa viene eliminata dal cluster, il bucket S3 in AWS viene eliminato per impostazione predefinita.

## Vantaggi di ACK
<a name="_benefits_of_ack"></a>

ACK offre la gestione AWS delle risorse nativa di Kubernetes, che consente di gestire AWS le risorse utilizzando gli stessi Kubernetes APIs e gli stessi strumenti utilizzati per le applicazioni. Questo approccio unificato semplifica il flusso di lavoro di gestione dell'infrastruttura eliminando la necessità di passare da uno strumento all'altro o di apprendere sistemi separati. infrastructure-as-code Definisci AWS le tue risorse in modo dichiarativo nei manifesti di Kubernetes, abilitando i GitOps flussi di lavoro e l'infrastruttura come pratiche di codice che si integrano perfettamente con i processi di sviluppo esistenti.

ACK riconcilia continuamente lo stato desiderato delle AWS risorse con il loro stato effettivo, correggendo le deviazioni e garantendo la coerenza nell'intera infrastruttura. Questa riconciliazione continua significa che le out-of-band modifiche imperative alle AWS risorse vengono ripristinate automaticamente in modo che corrispondano alla configurazione dichiarata, mantenendo l'integrità dell'infrastruttura sotto forma di codice. È possibile configurare ACK per gestire le risorse su più AWS account e regioni, abilitando architetture multi-account complesse senza strumenti aggiuntivi.

Per le organizzazioni che migrano da altri strumenti di gestione dell'infrastruttura, ACK supporta l'adozione delle risorse, permettendo di affidare AWS le risorse esistenti alla gestione ACK senza doverle ricreare. ACK fornisce anche risorse di sola lettura per l'osservazione AWS delle risorse senza accesso alle modifiche e annotazioni per conservare facoltativamente le AWS risorse anche quando la risorsa Kubernetes viene eliminata dal cluster.

Per saperne di più e iniziare a usare EKS Capability for ACK, consulta e. [Concetti ACK](ack-concepts.md) [Considerazioni ACK per EKS](ack-considerations.md)

## AWS Servizi supportati
<a name="supported_shared_aws_services"></a>

ACK supporta un'ampia gamma di AWS servizi, tra cui, a titolo esemplificativo ma non esaustivo:
+ Amazon EC2
+ Simple Storage Service (Amazon S3)
+ Amazon RDS
+ Amazon DynamoDB
+ Amazon ElastiCache
+ Amazon EKS
+ Amazon SQS
+ Amazon SNS
+  AWS Lambda
+  AWS IAM

Tutti i AWS servizi elencati come Generally Available upstream sono supportati da EKS Capability for ACK. Per ulteriori informazioni, consulta l'[elenco completo dei AWS servizi supportati](https://aws-controllers-k8s.github.io/community/docs/community/services/).

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

ACK si integra con altre funzionalità gestite da EKS.
+  **Argo CD**: utilizza Argo CD per gestire l'implementazione delle risorse ACK su più cluster, abilitando i flussi di GitOps lavoro per la tua infrastruttura. AWS 
  + ACK estende i vantaggi dell' GitOps abbinamento con ArgoCD, ma ACK non richiede l'integrazione con git.
+  **kro (Kube Resource Orchestrator)**: Usa kro per comporre risorse complesse a partire da risorse ACK, creando astrazioni di livello superiore che semplificano la gestione delle risorse.
  + Puoi creare risorse composite personalizzate con kro che definiscono sia le risorse che le risorse Kubernetes. AWS I membri del team possono utilizzare queste risorse personalizzate per distribuire rapidamente applicazioni complesse.

## Guida introduttiva a ACK
<a name="_getting_started_with_ack"></a>

Per iniziare a usare EKS Capability for ACK:

1. Crea e configura un ruolo di capacità IAM con le autorizzazioni necessarie affinché ACK gestisca AWS le risorse per tuo conto.

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

1. Applica le risorse personalizzate Kubernetes al tuo cluster per iniziare a gestire le tue risorse in Kubernetes. AWS 

# Crea una funzionalità ACK
<a name="create-ack-capability"></a>

Questo capitolo spiega come creare una funzionalità ACK sul tuo cluster Amazon EKS.

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

Prima di creare una funzionalità ACK, assicurati di avere:
+ Cluster Amazon EKS
+ Un ruolo di capacità IAM con autorizzazioni per ACK per gestire le AWS risorse
+ Autorizzazioni IAM sufficienti per creare risorse di funzionalità sui cluster EKS
+ Lo strumento CLI appropriato installato e configurato o l'accesso alla console EKS

Per istruzioni sulla creazione dello IAM Capability Role, consulta[Funzionalità Amazon EKS, ruolo IAM](capability-role.md).

**Importante**  
ACK è una funzionalità di gestione dell'infrastruttura che consente di creare, modificare ed eliminare AWS risorse. Si tratta di una funzionalità amministrativa che deve essere controllata con attenzione. Chiunque sia autorizzato a creare risorse Kubernetes nel tuo cluster può creare risorse in modo efficace tramite ACK, fatte salve AWS le autorizzazioni IAM Capability Role. Il ruolo IAM Capability che fornisci determina quali AWS risorse ACK può creare e gestire. 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à ACK utilizzando Console di gestione AWS, AWS CLI o eksctl:
+  [Creare una funzionalità ACK utilizzando la console](ack-create-console.md)- Usa la console per un'esperienza guidata
+  [Crea una funzionalità ACK utilizzando la AWS CLI](ack-create-cli.md)- Usa la AWS CLI per lo scripting e l'automazione
+  [Crea una funzionalità ACK usando eksctl](ack-create-eksctl.md)- Usa eksctl per un'esperienza nativa di Kubernetes

## Cosa succede quando si crea una funzionalità ACK
<a name="_what_happens_when_you_create_an_ack_capability"></a>

Quando crei una funzionalità ACK:

1. EKS crea il servizio di funzionalità ACK e lo configura per monitorare e gestire le risorse nel cluster

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. La funzionalità presuppone lo IAM Capability Role fornito dall'utente

1. ACK inizia a controllare le proprie risorse personalizzate nel cluster

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

Una volta attivo, è possibile creare risorse ACK personalizzate nel cluster per gestire AWS le risorse.

**Nota**  
La voce di accesso creata automaticamente include la voce `AmazonEKSACKPolicy` che concede le autorizzazioni ACK per la gestione AWS delle risorse. Alcune risorse ACK che fanno riferimento ai segreti di Kubernetes (come i database RDS con password) richiedono politiche di accesso aggiuntive. Per ulteriori informazioni sulle voci di accesso e su come configurare autorizzazioni aggiuntive, consulta. [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

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

Dopo aver creato la funzionalità ACK:
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e inizia a usare le AWS risorse
+  [Concetti ACK](ack-concepts.md)- Scopri la riconciliazione, le esportazioni sul campo e i modelli di adozione delle risorse
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM e i modelli multi-account

# Creare una funzionalità ACK utilizzando la console
<a name="ack-create-console"></a>

Questo argomento descrive come creare una funzionalità AWS Controllers for Kubernetes (ACK) utilizzando. Console di gestione AWS

## Crea la funzionalità ACK
<a name="_create_the_ack_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 ** AWS Controllers for Kubernetes** (ACK).

1. Scegli la funzionalità **Crea AWS controller per Kubernetes**.

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 di amministratore** 

     Questo apre la console IAM in una nuova scheda con la policy di fiducia precompilata e la policy `AdministratorAccess` gestita. Se preferisci, puoi deselezionare questa policy e aggiungere altre autorizzazioni.

     Dopo aver creato il ruolo, torna alla console EKS e il ruolo verrà selezionato automaticamente.
**Importante**  
La `AdministratorAccess` politica suggerita concede ampie autorizzazioni e ha lo scopo di semplificare l'avvio. Per uso in produzione, sostituiscila con una politica personalizzata che conceda solo le autorizzazioni necessarie per i AWS servizi specifici che intendi gestire con ACK. Per indicazioni sulla creazione di politiche con privilegi minimi, consulta e. [Configurare le autorizzazioni ACK](ack-permissions.md) [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

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

Inizia il processo di creazione delle capacità.

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

1. Nella scheda **Funzionalità**, visualizza lo stato della capacità ACK.

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).

## Verifica che siano disponibili risorse personalizzate
<a name="_verify_custom_resources_are_available"></a>

Dopo che la funzionalità è attiva, verifica che le risorse personalizzate ACK siano disponibili nel cluster.

 **Utilizzo della console** 

1. Accedi al tuo cluster nella console Amazon EKS

1. Scegli la scheda **Risorse**

1. Scegli **Estensioni** 

1. Scegliere **CustomResourceDefinitions** 

Dovresti vedere una serie di AWS risorse CRDs elencate.

 **Usare kubectl** 

```
kubectl api-resources | grep services.k8s.aws
```

Dovresti vedere un certo numero di risorse APIs elencate. AWS 

**Nota**  
La funzionalità di AWS Controllers for Kubernetes installerà una serie di risorse CRDs per una varietà di risorse. AWS 

## Fasi successive
<a name="_next_steps"></a>
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e inizia
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM per altri servizi AWS 
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestisci la tua risorsa di funzionalità ACK

# Crea una funzionalità ACK utilizzando la AWS CLI
<a name="ack-create-cli"></a>

Questo argomento descrive come creare una funzionalità AWS Controllers for Kubernetes (ACK) utilizzando la CLI. AWS 

## 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).

## Fase 1: creazione di un ruolo IAM Capability
<a name="_step_1_create_an_iam_capability_role"></a>

Crea un file di policy di fiducia:

```
cat > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Allega la policy `AdministratorAccess` gestita al ruolo:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Importante**  
La `AdministratorAccess` politica suggerita concede ampie autorizzazioni e ha lo scopo di semplificare l'avvio. Per uso in produzione, sostituiscila con una politica personalizzata che conceda solo le autorizzazioni necessarie per i AWS servizi specifici che intendi gestire con ACK. Per indicazioni sulla creazione di politiche con privilegi minimi, consulta e. [Configurare le autorizzazioni ACK](ack-permissions.md) [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

## Fase 2: Creare la funzionalità ACK
<a name="_step_2_create_the_ack_capability"></a>

Crea la risorsa di funzionalità ACK sul tuo cluster. Sostituiscila *region-code* con la AWS regione in cui si trova il cluster e sostituiscila *my-cluster* con il nome del cluster.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --delete-propagation-policy RETAIN
```

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 sostituiscilo *my-cluster* con il nome del cluster.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --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-ack
```

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

Dopo che la funzionalità è attiva, verifica che le risorse personalizzate ACK siano disponibili nel cluster:

```
kubectl api-resources | grep services.k8s.aws
```

Dovresti vedere un certo numero di AWS risorse APIs elencate.

**Nota**  
La funzionalità di AWS Controllers for Kubernetes installerà una serie di risorse CRDs per una varietà di risorse. AWS 

## Fasi successive
<a name="_next_steps"></a>
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e inizia
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM per altri servizi AWS 
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestisci la tua risorsa di funzionalità ACK

# Crea una funzionalità ACK usando eksctl
<a name="ack-create-eksctl"></a>

Questo argomento descrive come creare una funzionalità AWS Controllers for Kubernetes (ACK) usando eksctl.

**Nota**  
I passaggi seguenti 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 > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Allega la policy `AdministratorAccess` gestita al ruolo:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Importante**  
La `AdministratorAccess` politica suggerita concede ampie autorizzazioni e ha lo scopo di semplificare l'avvio. Per uso in produzione, sostituiscila con una politica personalizzata che conceda solo le autorizzazioni necessarie per i AWS servizi specifici che intendi gestire con ACK. Per indicazioni sulla creazione di politiche con privilegi minimi, consulta e. [Configurare le autorizzazioni ACK](ack-permissions.md) [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)

**Importante**  
Questa politica concede le autorizzazioni per la gestione dei bucket S3 con`"Resource": "*"`, che consente le operazioni su tutti i bucket S3.  
Per uso in produzione: \$1 Limita il `Resource` campo a bucket ARNs o modelli di nomi specifici \$1 Usa le chiavi di condizione IAM per limitare l'accesso tramite tag di risorsa \$1 Concedi solo le autorizzazioni minime necessarie per il tuo caso d'uso  
Per altri AWS servizi, consulta. [Configurare le autorizzazioni ACK](ack-permissions.md)

Collegare la policy al ruolo:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/ACKS3Policy
```

## Fase 2: Creare la funzionalità ACK
<a name="_step_2_create_the_ack_capability"></a>

Crea la funzionalità ACK usando eksctl. Sostituiscilo *region-code* con la AWS regione in cui si trova il cluster e *my-cluster* sostituiscilo con il nome del cluster.

```
eksctl create capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --ack-service-controllers s3
```

**Nota**  
La `--ack-service-controllers` bandiera è facoltativa. Se omesso, ACK abilita tutti i controller disponibili. Per prestazioni e sicurezza migliori, valuta la possibilità di abilitare solo i controller di cui hai bisogno. Puoi specificare più controller: `--ack-service-controllers s3,rds,dynamodb` 

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

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

Verifica lo stato della capacità:

```
eksctl get capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack
```

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

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

Dopo che la funzionalità è attiva, verifica che le risorse personalizzate ACK siano disponibili nel cluster:

```
kubectl api-resources | grep services.k8s.aws
```

Dovresti vedere un certo numero di AWS risorse APIs elencate.

**Nota**  
La funzionalità di AWS Controllers for Kubernetes installerà una serie di risorse CRDs per una varietà di risorse. AWS 

## Fasi successive
<a name="_next_steps"></a>
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e inizia
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM per altri servizi AWS 
+  [Lavorare con le risorse di capacità](working-with-capabilities.md)- Gestisci la tua risorsa di funzionalità ACK

# Concetti ACK
<a name="ack-concepts"></a>

ACK gestisce AWS le risorse tramite Kubernetes APIs riconciliando continuamente lo stato desiderato nei manifesti con lo stato effettivo in cui si trovano. AWS Quando crei o aggiorni una risorsa personalizzata Kubernetes, ACK effettua le chiamate AWS API necessarie per creare o modificare la AWS risorsa corrispondente, quindi la monitora per rilevare eventuali variazioni e aggiorna lo stato di Kubernetes in modo che rifletta lo stato corrente. Questo approccio consente di gestire l'infrastruttura utilizzando strumenti e flussi di lavoro Kubernetes familiari, mantenendo al contempo la coerenza tra il cluster e. AWS

Questo argomento spiega i concetti fondamentali alla base del modo in cui ACK gestisce AWS le risorse tramite Kubernetes. APIs

## Guida introduttiva a ACK
<a name="_getting_started_with_ack"></a>

Dopo aver creato la funzionalità ACK (vedi[Crea una funzionalità ACK](create-ack-capability.md)), puoi iniziare a gestire AWS le risorse utilizzando i manifest Kubernetes nel tuo cluster.

Ad esempio, crea questo manifesto del bucket S3 in, scegliendo il tuo nome di bucket `bucket.yaml` univoco.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-test-bucket
  namespace: default
spec:
  name: my-unique-bucket-name-12345
```

Applica il manifesto:

```
kubectl apply -f bucket.yaml
```

Controlla lo stato:

```
kubectl get bucket my-test-bucket
kubectl describe bucket my-test-bucket
```

Verifica che il bucket sia stato creato in AWS:

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Elimina la risorsa Kubernetes:

```
kubectl delete bucket my-test-bucket
```

Verifica che il bucket sia stato eliminato da: AWS

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Il bucket non dovrebbe più apparire nell'elenco, a dimostrazione del fatto che ACK gestisce l'intero ciclo di vita delle risorse. AWS 

Per ulteriori informazioni su come iniziare a usare ACK, consulta [Getting](https://aws-controllers-k8s.github.io/community/docs/user-docs/getting-started/) Started with ACK.

## Ciclo di vita delle risorse e riconciliazione
<a name="_resource_lifecycle_and_reconciliation"></a>

ACK utilizza un ciclo di riconciliazione continuo per garantire che le AWS risorse corrispondano allo stato desiderato definito nei manifesti di Kubernetes.

 **Come funziona la riconciliazione:**

1. Crei o aggiorni una risorsa personalizzata Kubernetes (ad esempio, un bucket S3)

1. ACK rileva la modifica e confronta lo stato desiderato con lo stato effettivo in AWS 

1. Se sono diversi, ACK effettua chiamate AWS API per riconciliare la differenza

1. ACK aggiorna lo stato delle risorse in Kubernetes in modo che rifletta lo stato corrente

1. Il ciclo si ripete continuamente, in genere ogni poche ore

La riconciliazione viene attivata quando si crea una nuova risorsa Kubernetes, si aggiorna una risorsa esistente o quando ACK rileva una deviazione `spec` dovuta a modifiche manuali apportate all'esterno di ACK. AWS Inoltre, ACK esegue una riconciliazione periodica con un periodo di risincronizzazione di 10 ore. Le modifiche alle risorse Kubernetes innescano la riconciliazione immediata, mentre il rilevamento passivo della deriva delle modifiche alle risorse upstream avviene durante la risincronizzazione periodica. AWS 

Quando si esegue l'esempio introduttivo riportato sopra, ACK esegue questi passaggi:

1. Controlla se il bucket esiste in AWS 

1. In caso contrario, chiama `s3:CreateBucket` 

1. Aggiorna lo stato di Kubernetes con l'ARN e lo stato del bucket

1. Continua il monitoraggio della deriva

Per saperne di più su come funziona ACK, consulta ACK [Reconciliation](https://aws-controllers-k8s.github.io/community/docs/user-docs/reconciliation/).

## Condizioni di status
<a name="_status_conditions"></a>

Le risorse ACK utilizzano le condizioni di stato per comunicare il proprio stato. La comprensione di queste condizioni consente di risolvere i problemi e comprendere lo stato delle risorse.
+  **Pronta**: indica che la risorsa è pronta per essere consumata (condizione Kubernetes standardizzata).
+  **ACK. ResourceSynced**: Indica che le specifiche della risorsa corrispondono allo stato della AWS risorsa.
+  **ack.Terminal**: indica che si è verificato un errore irreversibile.
+  **ACK.Adopted**: indica che la risorsa è stata adottata da una risorsa esistente anziché creata nuova. AWS 
+  **ACK.Recoverable: indica un errore recuperabile** che può essere risolto senza aggiornare le specifiche.
+  **ACK.advisory: fornisce informazioni consultive sulla risorsa.**
+  **ACK. LateInitialized**: Indica se l'inizializzazione tardiva dei campi è completa.
+  **ACK. ReferencesResolved**: Indica se tutti `AWSResourceReference` i campi sono stati risolti.
+  **ACK. IAMRoleSelezionato**: indica se è stato selezionato un IAMRole selettore per gestire questa risorsa.

Verifica lo stato della risorsa:

```
# Check if resource is ready
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

# Check for terminal errors
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'
```

Esempio di stato:

```
status:
  conditions:
  - type: Ready
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.ResourceSynced
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.Terminal
    status: "True"
  ackResourceMetadata:
    arn: arn:aws:s3:::my-unique-bucket-name
    ownerAccountID: "111122223333"
    region: us-west-2
```

Per ulteriori informazioni sullo stato e le condizioni ACK, consulta [le Condizioni ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/conditions/).

## Politiche di cancellazione
<a name="_deletion_policies"></a>

La politica di eliminazione di ACK controlla cosa succede alle AWS risorse quando elimini la risorsa Kubernetes.

 **Elimina (impostazione predefinita)** 

La AWS risorsa viene eliminata quando elimini la risorsa Kubernetes: questo è il comportamento predefinito.

```
# No annotation needed - this is the default
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: temp-bucket
spec:
  name: temporary-bucket
```

L'eliminazione di questa risorsa elimina il bucket S3. AWS

 **Mantenimento** 

La AWS risorsa viene conservata quando elimini la risorsa Kubernetes:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: important-bucket
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  name: production-data-bucket
```

L'eliminazione di questa risorsa la rimuove da Kubernetes ma lascia il bucket S3 attivo. AWS

La `retain` policy è utile per i database di produzione che dovrebbero durare più a lungo della risorsa Kubernetes, per le risorse condivise utilizzate da più applicazioni, per le risorse con dati importanti che non devono essere eliminati accidentalmente o per la gestione temporanea di ACK in cui si adotta una risorsa, la si configura e poi la si rimette alla gestione manuale.

[Per ulteriori informazioni sulla politica di eliminazione ACK, consulta ACK Deletion Policy.](https://aws-controllers-k8s.github.io/community/docs/user-docs/deletion-policy/)

## Adozione delle risorse
<a name="_resource_adoption"></a>

L'adozione consente di affidare AWS le risorse esistenti alla gestione ACK senza doverle ricreare.

Quando usare l'adozione:
+ Migrazione dell'infrastruttura esistente alla gestione ACK
+ Ripristino di risorse orfane in caso di eliminazione accidentale di AWS risorse in Kubernetes
+ Importazione di risorse create da altri strumenti (, Terraform) CloudFormation

Come funziona l'adozione:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Quando crei questa risorsa:

1. ACK verifica se esiste un bucket con quel nome in AWS 

1. Se trovato, ACK lo adotta (nessuna chiamata API da creare)

1. ACK legge la configurazione corrente da AWS 

1. ACK aggiorna lo stato di Kubernetes in modo che rifletta lo stato effettivo

1. Gli aggiornamenti futuri riconciliano normalmente la risorsa

Una volta adottate, le risorse vengono gestite come qualsiasi altra risorsa ACK e l'eliminazione della risorsa Kubernetes comporterà l'eliminazione della risorsa, a meno che non si utilizzi la politica AWS di eliminazione. `retain`

Quando si adottano risorse, la AWS risorsa deve già esistere e ACK necessita delle autorizzazioni di lettura per scoprirla. La `adopt-or-create` politica adotta la risorsa se esiste o la crea se non esiste. Ciò è utile quando si desidera un flusso di lavoro dichiarativo che funzioni indipendentemente dall'esistenza o meno della risorsa.

Per ulteriori informazioni sull'adozione delle risorse ACK, consulta [ACK Resource Adoption](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/).

## Risorse tra account e regioni
<a name="_cross_account_and_cross_region_resources"></a>

ACK può gestire le risorse in diversi AWS account e regioni da un singolo cluster.

 **Annotazioni di risorse interregionali** 

È possibile specificare la regione di una AWS risorsa utilizzando un'annotazione:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: eu-bucket
  annotations:
    services.k8s.aws/region: eu-west-1
spec:
  name: my-eu-bucket
```

Puoi anche specificare la regione di tutte le AWS risorse create in un determinato namespace:

 **Annotazioni dello spazio dei nomi** 

Imposta una regione predefinita per tutte le risorse in un namespace:

```
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    services.k8s.aws/default-region: us-west-2
```

Le risorse create in questo namespace utilizzano questa regione a meno che non vengano sovrascritte da un'annotazione a livello di risorsa.

 **Più account** 

Usa IAM Role Selectors per mappare ruoli IAM specifici ai namespace:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: target-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

Le risorse create nello spazio dei nomi mappato utilizzano automaticamente il ruolo specificato.

Per ulteriori informazioni sugli IAM Role Selectors, consulta [ACK](https://aws-controllers-k8s.github.io/docs/guides/cross-account) Cross-Account Resource Management. Per i dettagli sulla configurazione tra account, consulta. [Configurare le autorizzazioni ACK](ack-permissions.md)

## Gestione degli errori e comportamento dei nuovi tentativi
<a name="_error_handling_and_retry_behavior"></a>

ACK gestisce automaticamente gli errori transitori e riprova le operazioni non riuscite.

Strategia di riprova:
+ Gli errori transitori (limitazione della velocità, problemi temporanei di servizio, autorizzazioni insufficienti) attivano nuovi tentativi automatici
+ Il backoff esponenziale impedisce il sovraccarico AWS APIs
+ Il numero massimo di tentativi di riprova varia in base al tipo di errore
+ Gli errori permanenti (parametri non validi, conflitti tra nomi di risorse) non riprovano

Controlla lo stato delle risorse per i dettagli degli errori utilizzando: `kubectl describe`

```
kubectl describe bucket my-bucket
```

Cerca le condizioni di stato con messaggi di errore, gli eventi che mostrano i recenti tentativi di riconciliazione e il `message` campo nelle condizioni di stato che spiegano gli errori. Gli errori più comuni includono autorizzazioni IAM insufficienti, conflitti tra i nomi delle risorse, valori di configurazione non validi nelle AWS quote di servizio e il `spec` superamento delle quote di servizio. AWS 

Per la risoluzione degli errori più comuni, consulta. [Risolvi i problemi relativi alle funzionalità ACK](ack-troubleshooting.md)

## Composizione delle risorse con kro
<a name="_resource_composition_with_kro"></a>

Per comporre e connettere più risorse ACK insieme, usa EKS Capability for kro (Kube Resource Orchestrator). kro fornisce un modo dichiarativo per definire gruppi di risorse, passando la configurazione tra le risorse per gestire semplicemente modelli di infrastruttura complessi.

Per esempi dettagliati di creazione di composizioni di risorse personalizzate con risorse ACK, vedi [concetti kro](kro-concepts.md) 

## Fasi successive
<a name="_next_steps"></a>
+  [Considerazioni ACK per EKS](ack-considerations.md)- Modelli e strategie di integrazione specifici per EKS

# Configurare le autorizzazioni ACK
<a name="ack-permissions"></a>

ACK richiede le autorizzazioni IAM per creare e gestire AWS risorse per tuo conto. Questo argomento spiega come IAM collabora con ACK e fornisce indicazioni sulla configurazione delle autorizzazioni per diversi casi d'uso.

## Come funziona IAM con ACK
<a name="_how_iam_works_with_ack"></a>

ACK utilizza i ruoli IAM per autenticarsi con le tue risorse AWS ed eseguire azioni sulle tue risorse. Esistono due modi per fornire le autorizzazioni a ACK:

 **Ruolo di capacità**: il ruolo IAM fornito durante la creazione della funzionalità ACK. Questo ruolo viene utilizzato di default per tutte le operazioni ACK.

 **Selettori di ruolo IAM**: ruoli IAM aggiuntivi che possono essere mappati su namespace o risorse specifici. Questi ruoli hanno la precedenza sul ruolo di capacità per le risorse che rientrano nel loro ambito.

Quando ACK deve creare o gestire una risorsa, determina quale ruolo IAM utilizzare:

1. Controlla se un IAMRole selettore corrisponde allo spazio dei nomi della risorsa

1. Se viene trovata una corrispondenza, assumi quel ruolo IAM

1. Altrimenti, usa il ruolo Capability

Questo approccio consente una gestione flessibile delle autorizzazioni, da semplici configurazioni a ruolo singolo a configurazioni complesse con più account e più team.

## Guida introduttiva: configurazione semplice delle autorizzazioni
<a name="_getting_started_simple_permission_setup"></a>

Per casi di sviluppo, test o semplici casi d'uso, puoi aggiungere tutte le autorizzazioni di servizio necessarie direttamente al Capability Role.

Questo approccio funziona bene quando:
+ Stai iniziando con ACK
+ Tutte le risorse si trovano nello stesso AWS account
+ Un unico team gestisce tutte le risorse ACK
+ Ti fidi che tutti gli utenti ACK abbiano le stesse autorizzazioni

## Best practice di produzione: IAM Role Selectors
<a name="_production_best_practice_iam_role_selectors"></a>

Per gli ambienti di produzione, utilizza IAM Role Selectors per implementare l'accesso con privilegi minimi e l'isolamento a livello di namespace.

Quando si utilizza IAM Role Selectors, il Capability Role necessita solo delle autorizzazioni per assumere i ruoli specifici del servizio. `sts:AssumeRole` `sts:TagSession` Non è necessario aggiungere alcuna autorizzazione di AWS servizio (come S3 o RDS) al Capability Role stesso: tali autorizzazioni vengono concesse ai singoli ruoli IAM assunti dal Capability Role.

 **Scelta tra modelli di autorizzazione:**

Utilizza **le autorizzazioni dirette** (aggiungendo le autorizzazioni di servizio al ruolo Capability) quando:
+ Stai iniziando e desideri la configurazione più semplice
+ Tutte le risorse si trovano nello stesso account del cluster
+ Hai requisiti di autorizzazione amministrativi a livello di cluster
+ Tutti i team possono condividere le stesse autorizzazioni

Usa **IAM Role Selectors quando**:
+ Gestione delle risorse su più account AWS 
+ Team o namespace diversi richiedono autorizzazioni diverse
+ È necessario un controllo granulare degli accessi per namespace
+ Vuoi seguire le pratiche di sicurezza con privilegi minimi

Puoi iniziare con autorizzazioni dirette e migrare a IAM Role Selectors in un secondo momento, man mano che le tue esigenze crescono.

 **Perché utilizzare IAM Role Selectors in produzione:** 
+  **Privilegio minimo**: ogni namespace ottiene solo le autorizzazioni di cui ha bisogno
+  **Isolamento del team**: il team A non può utilizzare accidentalmente le autorizzazioni del team B
+  **Controllo più semplice**: mappatura chiara di quale namespace utilizza quale ruolo
+  **Supporto per più account**: necessario per la gestione delle risorse in più account
+  **Separazione delle preoccupazioni**: servizi o ambienti diversi utilizzano ruoli diversi

### Configurazione di base di IAM Role Selector
<a name="_basic_iam_role_selector_setup"></a>

 **Fase 1: Creare un ruolo IAM specifico per il servizio** 

Crea un ruolo IAM con autorizzazioni per servizi specifici: AWS 

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

Configura la policy di fiducia per consentire al Capability Role di assumerla:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

 **Fase 2: concedere AssumeRole l'autorizzazione a Capability Role** 

Aggiungi l'autorizzazione al ruolo di capacità per assumere il ruolo specifico del servizio:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role"
    }
  ]
}
```

 **Fase 3: Creare un selettore IAMRole** 

Mappa il ruolo IAM su un namespace:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: s3-namespace-config
spec:
  arn: arn:aws:iam::111122223333:role/ACK-S3-Role
  namespaceSelector:
    names:
      - s3-resources
```

 **Fase 4: Creare risorse nello spazio dei nomi mappato** 

Le risorse nello spazio dei `s3-resources` nomi utilizzano automaticamente il ruolo specificato:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: s3-resources
spec:
  name: my-production-bucket
```

## Gestione di più account
<a name="_multi_account_management"></a>

Usa IAM Role Selectors per gestire le risorse su più AWS account.

 **Fase 1: Creare un ruolo IAM per più account** 

Nell'account di destinazione (444455556666), crea un ruolo che si fidi del ruolo di capacità dell'account di origine:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

Assegna autorizzazioni specifiche del servizio a questo ruolo.

 **Passaggio 2: concedere l'autorizzazione AssumeRole ** 

Nell'account di origine (111122223333), consenti al ruolo Capability di assumere il ruolo dell'account di destinazione:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole"
    }
  ]
}
```

 **Fase 3: Creare un selettore IAMRole** 

Mappa il ruolo tra account diversi su un namespace:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: production-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

 **Fase 4: Creare risorse** 

Le risorse nel `production` namespace vengono create nell'account di destinazione:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: production
spec:
  name: my-cross-account-bucket
```

## Tag di sessione
<a name="_session_tags"></a>

La funzionalità EKS ACK imposta automaticamente i tag di sessione su tutte le richieste AWS API. Questi tag consentono il controllo e la verifica granulari degli accessi identificando l'origine di ogni richiesta.

### Tag di sessione disponibili
<a name="_available_session_tags"></a>

I seguenti tag di sessione sono inclusi in ogni chiamata AWS API effettuata da ACK:


| Chiave del tag | Description | 
| --- | --- | 
|   `eks:eks-capability-arn`   |  L'ARN della capacità EKS che effettua la richiesta  | 
|   `eks:kubernetes-namespace`   |  Lo spazio dei nomi Kubernetes della risorsa gestita  | 
|   `eks:kubernetes-api-group`   |  Il gruppo di API Kubernetes della risorsa (ad esempio,) `s3.services.k8s.aws`  | 

### Utilizzo dei tag di sessione per il controllo degli accessi
<a name="_using_session_tags_for_access_control"></a>

Puoi utilizzare questi tag di sessione nelle condizioni delle policy IAM per limitare le risorse che ACK può gestire. Ciò fornisce un ulteriore livello di sicurezza oltre ai selettori di ruolo IAM basati su namespace.

 **Esempio: limita in base allo spazio dei nomi** 

Consenti a ACK di creare bucket S3 solo quando la richiesta proviene dal namespace: `production`

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:kubernetes-namespace": "production"
        }
      }
    }
  ]
}
```

 **Esempio: limita per capacità** 

Consenti azioni solo da una funzionalità ACK specifica:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:eks-capability-arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack"
        }
      }
    }
  ]
}
```

**Nota**  
I tag di sessione sono diversi da ACK autogestiti, che non imposta questi tag per impostazione predefinita. Ciò consente un controllo degli accessi più granulare con la funzionalità gestita.

## Modelli avanzati di IAM Role Selector
<a name="_advanced_iam_role_selector_patterns"></a>

[Per una configurazione avanzata che include selettori di etichette, mappatura dei ruoli specifici delle risorse ed esempi aggiuntivi, consulta la documentazione ACK IRSA.](https://aws-controllers-k8s.github.io/community/docs/user-docs/irsa/)

## Fasi successive
<a name="_next_steps"></a>
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti e il ciclo di vita delle risorse di ACK
+  [Concetti ACK](ack-concepts.md)- Scopri le politiche di adozione ed eliminazione delle risorse
+  [Considerazioni sulla sicurezza per EKS Capabilities](capabilities-security.md)- Comprendi le migliori pratiche di sicurezza per quanto riguarda le funzionalità

# Considerazioni ACK per EKS
<a name="ack-considerations"></a>

Questo argomento tratta importanti considerazioni sull'utilizzo di EKS Capability for ACK, tra cui la configurazione IAM, i modelli multi-account e l'integrazione con altre funzionalità EKS.

## Modelli di configurazione IAM
<a name="_iam_configuration_patterns"></a>

La funzionalità ACK utilizza un IAM Capability Role con AWS cui eseguire l'autenticazione. Scegli il modello IAM giusto in base alle tue esigenze.

### Semplice: ruolo a capacità singola
<a name="_simple_single_capability_role"></a>

Per casi di sviluppo, test o semplici casi d'uso, concedi tutte le autorizzazioni necessarie direttamente al Capability Role.

 **Quando usare**:
+ Guida introduttiva a ACK
+ Implementazioni con un solo account
+ Tutte le risorse sono gestite da un unico team
+ Ambienti di sviluppo e test

 **Esempio**: aggiungi le autorizzazioni S3 e RDS al tuo Capability Role con condizioni di etichettatura delle risorse:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["rds:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        },
      }
    }
  ]
}
```

Questo esempio limita le operazioni S3 e RDS a regioni specifiche e richiede che le risorse RDS abbiano un tag. `ManagedBy: ACK`

### Produzione: IAM Role Selectors
<a name="_production_iam_role_selectors"></a>

Per gli ambienti di produzione, utilizza IAM Role Selectors per implementare l'accesso con privilegi minimi e l'isolamento a livello di namespace.

 **Quando usare:**
+ Ambienti di produzione
+ Cluster con più team
+ Gestione delle risorse su più account
+ Requisiti di sicurezza con privilegi minimi
+ Servizi diversi richiedono autorizzazioni diverse

 **Vantaggi**:
+ Ogni namespace ottiene solo le autorizzazioni necessarie
+ Isolamento del team: il team A non può utilizzare le autorizzazioni del team B
+ Controllo e conformità più semplici
+ Necessario per la gestione delle risorse tra account

Per una configurazione dettagliata di IAM Role Selector, consulta. [Configurare le autorizzazioni ACK](ack-permissions.md)

## Integrazione con altre funzionalità EKS
<a name="_integration_with_other_eks_capabilities"></a>

### GitOps con Argo CD
<a name="_gitops_with_argo_cd"></a>

Usa il CD EKS Capability for Argo per distribuire risorse ACK dai repository Git, abilitando GitOps flussi di lavoro per la gestione dell'infrastruttura.

 **Considerazioni:**
+ Archivia le risorse ACK insieme ai manifesti delle applicazioni per end-to-end GitOps
+ Organizza per ambiente, servizio o tipo di risorsa in base alla struttura del tuo team
+ Usa la sincronizzazione automatica di Argo CD per una riconciliazione continua
+ Abilita la potatura per rimuovere automaticamente le risorse eliminate
+ Prendi in considerazione hub-and-spoke i modelli per la gestione dell'infrastruttura multicluster

GitOps fornisce audit trail, funzionalità di rollback e gestione dichiarativa dell'infrastruttura. Per ulteriori informazioni su Argo CD, vedere. [Lavorare con Argo CD](working-with-argocd.md)

### Composizione delle risorse con kro
<a name="_resource_composition_with_kro"></a>

Usa EKS Capability for kro (Kube Resource Orchestrator) per comporre più risorse ACK in astrazioni di livello superiore e personalizzate. APIs

 **Quando usare kro** con ACK:
+ Crea modelli riutilizzabili per stack di infrastruttura comuni (database \$1 backup \$1 monitoraggio)
+ Crea piattaforme self-service semplificate per i team applicativi APIs 
+ Gestisci le dipendenze delle risorse e passa i valori tra le risorse (funzione ARN a Lambda del bucket S3)
+ Standardizza le configurazioni dell'infrastruttura tra i team
+ Riduci la complessità nascondendo i dettagli di implementazione dietro risorse personalizzate

 **Modelli di esempio**:
+ Stack di applicazioni: bucket S3\$1coda SQS\$1configurazione delle notifiche
+ Configurazione del database: istanza RDS \$1 gruppo di parametri \$1 gruppo di sicurezza \$1 segreti
+ Rete: VPC \$1 sottoreti \$1 tabelle di routing \$1 gruppi di sicurezza

kro gestisce l'ordinamento delle dipendenze, la propagazione dello stato e la gestione del ciclo di vita per le risorse composte. Per ulteriori informazioni su kro, consulta. [concetti kro](kro-concepts.md)

## Organizzazione delle risorse
<a name="_organizing_your_resources"></a>

Organizza le risorse ACK utilizzando i namespace e i tag delle AWS risorse Kubernetes per migliorare la gestione, il controllo degli accessi e il monitoraggio dei costi.

### Organizzazione dei namespace
<a name="_namespace_organization"></a>

Usa gli spazi dei nomi Kubernetes per separare logicamente le risorse ACK per ambiente (produzione, gestione temporanea, sviluppo), team (piattaforma, dati, ML) o applicazione.

 **Vantaggi:**
+ RBAC con ambito namespace per il controllo degli accessi
+ Imposta le regioni predefinite per namespace utilizzando le annotazioni
+ Gestione e pulizia delle risorse più semplici
+ Separazione logica in linea con la struttura organizzativa

### Aggiunta di tag alle risorse
<a name="_resource_tagging"></a>

La funzionalità EKS ACK applica automaticamente i tag predefiniti a tutte le AWS risorse che crea. Questi tag differiscono dagli ACK autogestiti e offrono una tracciabilità avanzata.

 **Tag predefiniti applicati dalla funzionalità:**


| Tag Key | Description | 
| --- | --- | 
|   `eks:controller-version`   |  La versione del controller ACK  | 
|   `eks:kubernetes-namespace`   |  Lo spazio dei nomi Kubernetes della risorsa ACK  | 
|   `eks:kubernetes-resource-name`   |  Il nome della risorsa Kubernetes  | 
|   `eks:kubernetes-api-group`   |  Il gruppo di API Kubernetes (ad esempio,) `s3.services.k8s.aws`  | 
|   `eks:eks-capability-arn`   |  L'ARN della funzionalità EKS ACK  | 

**Nota**  
ACK autogestito utilizza diversi tag predefiniti: `services.k8s.aws/controller-version` e. `services.k8s.aws/namespace` I tag della funzionalità utilizzano il `eks:` prefisso per garantire la coerenza con altre funzionalità EKS.

 **Tag aggiuntivi consigliati:**

Aggiungi tag personalizzati per l'allocazione dei costi, il monitoraggio della proprietà e per scopi organizzativi:
+ Ambiente (produzione, allestimento, sviluppo)
+ Proprietà del team o del reparto
+ Centro di costo per l'allocazione della fatturazione
+ Nome dell'applicazione o del servizio

## Migrazione da altri Infrastructure-as-code strumenti
<a name="_migration_from_other_infrastructure_as_code_tools"></a>

Molte organizzazioni stanno trovando valore nella standardizzazione su Kubernetes oltre all'orchestrazione dei carichi di lavoro. La migrazione dell'infrastruttura e della gestione AWS delle risorse verso ACK consente di standardizzare la gestione dell'infrastruttura utilizzando Kubernetes insieme ai carichi di lavoro delle applicazioni. APIs 

 **Vantaggi della standardizzazione su Kubernetes per l'infrastruttura**:
+  **Un'unica fonte di verità**: gestisci sia le applicazioni che l'infrastruttura in Kubernetes, abilitando una pratica end-to-end GitOps 
+  **Strumenti unificati: i** team utilizzano le risorse e gli strumenti Kubernetes anziché apprendere più strumenti e framework
+  **Riconciliazione coerente: ACK riconcilia** continuamente le AWS risorse come fa Kubernetes per i carichi di lavoro, rilevando e correggendo le deviazioni rispetto agli strumenti imperativi
+  **Composizioni native**: con kro e ACK insieme, puoi fare riferimento alle risorse direttamente nelle applicazioni e nei manifesti delle risorse, passando stringhe di connessione e tra AWS le risorse ARNs 
+  **Operazioni semplificate**: un unico piano di controllo per implementazioni, rollback e osservabilità sull'intero sistema

ACK supporta l'adozione AWS delle risorse esistenti senza ricrearle, abilitando la migrazione senza tempi di inattività da Terraform o da CloudFormation risorse esterne al cluster.

 **Adotta una risorsa esistente**:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Una volta adottata, la risorsa viene gestita da ACK e può essere aggiornata tramite i manifesti di Kubernetes. È possibile migrare in modo incrementale, adottando le risorse necessarie e mantenendo gli strumenti IaC esistenti per altre risorse.

ACK supporta anche risorse di sola lettura. Per le risorse gestite da altri team o strumenti a cui desideri fare riferimento ma non modificare, combina l'adozione con la politica di `retain` eliminazione e concedi solo le autorizzazioni IAM di lettura. Ciò consente alle applicazioni di scoprire l'infrastruttura condivisa (ruoli IAMVPCs, chiavi KMS) tramite APIs Kubernetes senza rischiare modifiche.

Per ulteriori informazioni sull'adozione delle risorse, consulta. [Concetti ACK](ack-concepts.md)

## Politiche di eliminazione
<a name="_deletion_policies"></a>

Le politiche di eliminazione controllano cosa succede alle AWS risorse quando elimini la risorsa Kubernetes corrispondente. Scegli la politica giusta in base al ciclo di vita delle risorse e ai tuoi requisiti operativi.

### Elimina (impostazione predefinita)
<a name="_delete_default"></a>

La AWS risorsa viene eliminata quando elimini la risorsa Kubernetes. Ciò mantiene la coerenza tra il cluster e AWS garantisce che le risorse non si accumulino.

 **Quando usare delete**:
+ Ambienti di sviluppo e test in cui la pulizia è importante
+ Risorse temporanee legate al ciclo di vita delle applicazioni (database di test, bucket temporanei)
+ Risorse che non dovrebbero durare più a lungo dell'applicazione (code SQS, cluster) ElastiCache 
+ Ottimizzazione dei costi: ripulisci automaticamente le risorse inutilizzate
+ Ambienti gestiti GitOps in cui la rimozione delle risorse da Git dovrebbe eliminare l'infrastruttura

La politica di eliminazione predefinita è in linea con il modello dichiarativo di Kubernetes: ciò che è nel cluster corrisponde a ciò che esiste in. AWS

### Mantenimento
<a name="_retain"></a>

La AWS risorsa viene conservata quando elimini la risorsa Kubernetes. Ciò protegge i dati critici e consente alle risorse di sopravvivere più a lungo della loro rappresentazione in Kubernetes.

 **Quando usare Retain**:
+ Database di produzione con dati critici che devono sopravvivere alle modifiche dei cluster
+ Bucket di storage a lungo termine con requisiti di conformità o di controllo
+ Risorse condivise utilizzate da più applicazioni o team
+ Risorse in fase di migrazione verso diversi strumenti di gestione
+ Scenari di disaster recovery in cui si desidera preservare l'infrastruttura
+ Risorse con dipendenze complesse che richiedono uno smantellamento accurato

```
apiVersion: rds.services.k8s.aws/v1alpha1
kind: DBInstance
metadata:
  name: production-db
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  dbInstanceIdentifier: prod-db
  # ... configuration
```

**Importante**  
Le risorse conservate continuano a comportare AWS costi e devono essere eliminate manualmente quando non sono più necessarie. AWS Utilizza l'etichettatura delle risorse per tenere traccia delle risorse conservate per la pulizia.

Per ulteriori informazioni sulle politiche di eliminazione, vedere. [Concetti ACK](ack-concepts.md)

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

Per informazioni dettagliate sull'uso di ACK:
+  [Guida all'uso di ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/usage/) - Creazione e gestione delle risorse
+  [Riferimento all'API ACK](https://aws-controllers-k8s.github.io/community/reference/): documentazione API completa per tutti i servizi
+  [Documentazione ACK - Documentazione](https://aws-controllers-k8s.github.io/community/docs/) completa per l'utente

## Fasi successive
<a name="_next_steps"></a>
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM e i modelli multiaccount
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e il ciclo di vita delle risorse
+  [Risolvi i problemi relativi alle funzionalità ACK](ack-troubleshooting.md)- Risolvi i problemi ACK
+  [Lavorare con Argo CD](working-with-argocd.md)- Implementa le risorse ACK con GitOps
+  [concetti kro](kro-concepts.md)- Componi le risorse ACK in astrazioni di livello superiore

# Risolvi i problemi relativi alle funzionalità ACK
<a name="ack-troubleshooting"></a>

Questo argomento fornisce linee guida per la risoluzione dei problemi relativi a EKS Capability for ACK, compresi i controlli dello stato delle funzionalità, la verifica dello stato delle risorse e i problemi di autorizzazione IAM.

**Nota**  
Le funzionalità EKS sono completamente gestite e eseguite all'esterno del cluster. Non hai accesso ai log dei controller o ai namespace dei controller. La risoluzione dei problemi si concentra sullo stato delle funzionalità, sullo stato delle risorse e sulla configurazione IAM.

## Le funzionalità sono ATTIVE ma le risorse non vengono create
<a name="_capability_is_active_but_resources_arent_being_created"></a>

Se la tua funzionalità ACK mostra `ACTIVE` lo stato ma le risorse non vengono create AWS, controlla lo stato della capacità, lo stato delle risorse e le autorizzazioni IAM.

 **Verifica lo stato delle 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-ack

# Look for issues in the health section
```

 Cause comuni:
+  **Autorizzazioni IAM mancanti**: al Capability Role mancano le autorizzazioni per il servizio AWS 
+  **Namespace errato**: risorse create nello spazio dei nomi senza un selettore appropriato IAMRole
+  **Specifiche della risorsa non valide: controlla le condizioni di stato delle risorse per verificare la presenza** di errori di convalida
+  **Limitazione delle API: AWS vengono raggiunti i limiti di velocità delle** API
+  Webhook di **ammissione: webhook** di ammissione che impediscono al controller di correggere lo stato delle risorse

 **Controlla lo stato delle risorse:**

```
# Describe the resource to see conditions and events
kubectl describe bucket my-bucket -n default

# Look for status conditions
kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}'

# View resource events
kubectl get events --field-selector involvedObject.name=my-bucket -n default
```

 **Verifica le autorizzazioni IAM**:

```
# View the Capability Role's policies
aws iam list-attached-role-policies --role-name my-ack-capability-role
aws iam list-role-policies --role-name my-ack-capability-role

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

## Risorse create in AWS Kubernetes ma non visualizzate
<a name="resources_created_in_shared_aws_but_not_showing_in_kubernetes"></a>

ACK tiene traccia solo delle risorse create tramite i manifesti di Kubernetes. Per gestire le AWS risorse esistenti con ACK, utilizza la funzionalità di adozione.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Per ulteriori informazioni sull'adozione delle risorse, consulta[Concetti ACK](ack-concepts.md).

## Risorse per più account non create
<a name="_cross_account_resources_not_being_created"></a>

Se non vengono create risorse in un AWS account di destinazione quando utilizzi IAM Role Selectors, verifica la relazione di fiducia e la configurazione di IAMRole Selector.

 **Verifica la relazione di fiducia**:

```
# Check the trust policy in the target account role
aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'
```

La politica di fiducia deve consentire al ruolo di capacità dell'account di origine di assumerla.

 **Conferma la configurazione IAMRole del selettore**:

```
# List IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Describe specific selector
kubectl describe iamroleselector my-selector
```

 **Verifica l'allineamento dello spazio dei nomi:**

IAMRoleI selettori sono risorse con ambito cluster ma hanno come target namespace specifici. Assicurati che le tue risorse ACK si trovino in uno spazio dei nomi che corrisponda al selettore dello spazio dei nomi di Selector: IAMRole

```
# Check resource namespace
kubectl get bucket my-cross-account-bucket -n production

# List all IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Check which namespace the selector targets
kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'
```

 ** IAMRoleControlla** la condizione selezionata:

Verifica che il IAMRole selettore sia stato abbinato correttamente alla tua risorsa controllando la `ACK.IAMRoleSelected` condizione:

```
# Check if IAMRoleSelector was matched
kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
```

Se la condizione è presente `False` o manca, il IAMRole selettore dello spazio dei nomi del selettore non corrisponde allo spazio dei nomi della risorsa. Verifica che il selettore corrisponda alle etichette dello spazio dei nomi della risorsa. `namespaceSelector`

 **Verifica le autorizzazioni di Capability** Role:

I requisiti `sts:AssumeRole` e le `sts:TagSession` autorizzazioni del ruolo Capability Role per il ruolo dell'account di destinazione:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`"
    }
  ]
}
```

Per una configurazione dettagliata tra account, consulta. [Configurare le autorizzazioni ACK](ack-permissions.md)

## Fasi successive
<a name="_next_steps"></a>
+  [Considerazioni ACK per EKS](ack-considerations.md)- Considerazioni e best practice relative a ACK
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura le autorizzazioni IAM e i modelli multiaccount
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti di ACK e il ciclo di vita delle risorse
+  [Risoluzione dei problemi delle funzionalità EKS](capabilities-troubleshooting.md)- Guida generale alla risoluzione dei problemi relativi alle funzionalità

# Confronto tra la funzionalità EKS per ACK e l'ACK autogestito
<a name="ack-comparison"></a>

EKS Capability for ACK offre le stesse funzionalità dei controller ACK autogestiti, ma con vantaggi operativi significativi. 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 ACK.

## Differenze rispetto all'ACK upstream
<a name="_differences_from_upstream_ack"></a>

EKS Capability for ACK si basa sui controller ACK upstream ma si differenzia nell'integrazione IAM.

 **IAM Capability** Role: la funzionalità utilizza un ruolo IAM dedicato con una policy di fiducia che consente il `capabilities.eks.amazonaws.com` service principal, non l'IRSA (IAM Roles for Service Accounts). Puoi collegare le policy IAM direttamente al Capability Role senza la necessità di creare o annotare gli account di servizio Kubernetes o configurare i provider OIDC. Una best practice per i casi d'uso in produzione consiste nel configurare le autorizzazioni di servizio utilizzando. `IAMRoleSelector` Per ulteriori dettagli, consulta [Configurare le autorizzazioni ACK](ack-permissions.md).

 **Tag di sessione**: la funzionalità gestita imposta automaticamente i tag di sessione su tutte le richieste AWS API, abilitando il controllo e il controllo granulari degli accessi. I tag includono`eks:eks-capability-arn`, e. `eks:kubernetes-namespace` `eks:kubernetes-api-group` Ciò differisce dall'ACK autogestito, che non imposta questi tag per impostazione predefinita. [Configurare le autorizzazioni ACK](ack-permissions.md)Per ulteriori informazioni sull'utilizzo dei tag di sessione nelle policy IAM, consulta la sezione.

 **Tag delle risorse**: la funzionalità applica tag predefiniti diversi alle AWS risorse rispetto a ACK autogestiti. La funzionalità utilizza tag con `eks:` prefisso (ad esempio`eks:kubernetes-namespace`,`eks:eks-capability-arn`) anziché i `services.k8s.aws/` tag utilizzati dall'ACK autogestito. Consulta [Considerazioni ACK per EKS](ack-considerations.md) l'elenco completo dei tag di risorsa predefiniti.

 **Compatibilità delle risorse**: le risorse personalizzate ACK funzionano in modo identico a quelle di ACK upstream senza modifiche ai file YAML delle risorse ACK. La funzionalità utilizza lo stesso Kubernetes APIs e CRDs quindi gli strumenti funzionano allo stesso modo. `kubectl` Sono supportati tutti i controller e le risorse GA dell'UPstream ACK.

[Per la documentazione completa di ACK e le guide specifiche per i servizi, consulta la documentazione ACK.](https://aws-controllers-k8s.github.io/community/)

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

È possibile migrare da ACK autogestito alla funzionalità gestita senza tempi di inattività:

1. Aggiorna il controller ACK autogestito `kube-system` per utilizzarlo per i contratti di locazione elettorali per i leader, ad esempio:

   ```
   helm upgrade --install ack-s3-controller \
     oci://public.ecr.aws/aws-controllers-k8s/s3-chart \
     --namespace ack-system \
     --set leaderElection.namespace=kube-system
   ```

   In questo modo il contratto di locazione del controllore viene spostato in avanti`kube-system`, permettendo alla capacità gestita di coordinarsi con esso.

1. Crea la funzionalità ACK sul tuo cluster (vedi[Crea una funzionalità ACK](create-ack-capability.md))

1. La funzionalità gestita riconosce le AWS risorse esistenti gestite da ACK e si occupa della riconciliazione

1. Ridimensiona o rimuovi gradualmente le implementazioni di controller autogestiti:

   ```
   helm uninstall ack-s3-controller --namespace ack-system
   ```

Questo approccio consente a entrambi i controller di coesistere in modo sicuro durante la migrazione. La funzionalità gestita adotta automaticamente le risorse precedentemente gestite da controller autogestiti, garantendo una riconciliazione continua senza conflitti.

## Fasi successive
<a name="_next_steps"></a>
+  [Crea una funzionalità ACK](create-ack-capability.md)- Creazione di una risorsa con funzionalità ACK
+  [Concetti ACK](ack-concepts.md)- Comprendi i concetti e il ciclo di vita delle risorse ACK
+  [Configurare le autorizzazioni ACK](ack-permissions.md)- Configura IAM e autorizzazioni