

 **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 su che si trova nel riquadro destro di ogni pagina.

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

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

ACK gestisce AWS le risorse tramite le API Kubernetes riconciliando continuamente lo stato desiderato nei tuoi manifest con lo stato effettivo in. 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 ne monitora l'eventuale deriva e aggiorna lo stato di Kubernetes per riflettere lo stato corrente. Questo approccio consente di gestire l'infrastruttura utilizzando strumenti e flussi di lavoro Kubernetes familiari, mantenendo la coerenza tra il cluster e. AWS

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

## 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 di Kubernetes nel tuo cluster.

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

```
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 che ACK gestisce l'intero ciclo di vita delle risorse. AWS 

Per ulteriori informazioni su come iniziare con ACK, consulta [ Getting Started with ACK ](https://aws-controllers-k8s.github.io/docs/getting-started) sul sito Web ACK.

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

ACK utilizza un ciclo di riconciliazione continuo per garantire che AWS le 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 differiscono, ACK effettua chiamate AWS API per riconciliare la differenza

1. ACK aggiorna lo stato delle risorse in Kubernetes per riflettere 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 quella di una risorsa esistente o quando ACK rileva `spec` 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 una riconciliazione immediata, mentre il rilevamento passivo della deriva delle modifiche alle risorse a monte avviene durante la risincronizzazione periodica. AWS 

Seguendo 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 ulteriori informazioni su come funziona ACK, vedere [ ACK Reconciliation ](https://aws-controllers-k8s.github.io/docs/concepts#reconciliation-loop) sul sito Web ACK.

## Condizioni relative allo stato
<a name="_status_conditions"></a>

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

Controlla 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")]}'
```

Stato di esempio:

```
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: "False"
  ackResourceMetadata:
    arn: arn:aws:s3:::my-unique-bucket-name
    ownerAccountID: "111122223333"
    region: us-west-2
```

Per ulteriori informazioni sullo stato e sulle condizioni ACK, vedere Condizioni [ ACK ](https://aws-controllers-k8s.github.io/docs/concepts#conditions) sul sito Web ACK.

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

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

 **Elimina (impostazione predefinita) ** 

La AWS risorsa viene eliminata quando si elimina 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 comporta l'eliminazione del bucket S3 in. AWS

 **Mantenimento** 

La AWS risorsa viene conservata quando si elimina 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 sopravvivere alla risorsa Kubernetes, alle risorse condivise utilizzate da più applicazioni, alle risorse con dati importanti che non devono essere eliminati accidentalmente o alla gestione temporanea degli ACK in cui si adotta una risorsa, la si configura e la si rilascia nuovamente alla gestione manuale.

Per ulteriori informazioni sulla politica di eliminazione degli ACK, consulta la Politica di eliminazione degli ACK sul sito [ Web ACK. ](https://aws-controllers-k8s.github.io/docs/guides/deletion-policy)

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

L'adozione consente di sottoporre AWS le risorse esistenti alla gestione ACK senza ricrearle.

Quando utilizzare l'adozione:
+ Migrazione dell'infrastruttura esistente alla gestione ACK
+ Recupero di risorse orfane in caso di eliminazione accidentale delle 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 controlla se esiste un bucket con quel nome 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 base allo stato attuale

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 eliminerà la risorsa a meno che non si utilizzi la politica AWS di eliminazione. `retain`

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

Per ulteriori informazioni sull'adozione delle risorse ACK, vedere [ ACK Resource Adoption ](https://aws-controllers-k8s.github.io/docs/guides/adoption) sul sito Web ACK.

## Cross-account e risorse interregionali
<a name="_cross_account_and_cross_region_resources"></a>

ACK è in grado di gestire risorse in diversi AWS account e regioni da un singolo cluster.

 **Cross-region annotazioni sulle risorse ** 

È 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 relative allo 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 con un'annotazione a livello di risorsa.

 **Cross-account** 

Usa i selettori di ruolo IAM 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 nel namespace mappato utilizzano automaticamente il ruolo specificato.

Per saperne di più sui selettori di ruolo IAM, vedi [ ACK Resource Management. Cross-Account ](https://aws-controllers-k8s.github.io/docs/guides/cross-account) Per i dettagli sulla configurazione tra più account, consulta. [Configurare le autorizzazioni ACK](ack-permissions.md)

## Gestione degli errori e comportamento dei 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 frequenza, problemi temporanei di servizio, autorizzazioni insufficienti) attivano nuovi tentativi automatici
+ Il backoff esponenziale impedisce il sovraccarico delle API AWS 
+ Il numero massimo di tentativi di ripetizione varia in base al tipo di errore
+ Gli errori permanenti (parametri non validi, conflitti tra i nomi delle risorse) non si riprovano

Controlla lo stato della risorsa per i dettagli degli errori utilizzando: `kubectl describe`

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

Cerca le condizioni di stato con i messaggi di errore, gli eventi che mostrano i recenti tentativi di riconciliazione e il `message` campo nelle condizioni di stato che spiega gli errori. Gli errori più comuni includono autorizzazioni IAM insufficienti, conflitti tra i nomi delle risorse AWS, valori di configurazione non validi e quote di servizio superate`spec`. 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 sulla 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)- EKS-specific modelli e strategie di integrazione