

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

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

**Nota**  
Le funzionalità EKS sono completamente gestite ed 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à, sulla configurazione RBAC e sullo stato delle risorse.

## Le funzionalità sono ATTIVE ma ResourceGraphDefinitions non funzionano
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Se la tua funzionalità kro mostra `ACTIVE` lo stato ma ResourceGraphDefinitions non stai creando risorse sottostanti, controlla lo stato della capacità, le autorizzazioni RBAC e lo stato delle risorse.

 **Verifica lo stato delle capacità:**

È 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 all'indirizzo https://console.aws.amazon.com/eks/home \#/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-kro

# Look for issues in the health section
```

 Cause comuni:
+  Autorizzazioni **RBAC mancanti: kro non dispone delle autorizzazioni** per creare le risorse Kubernetes sottostanti
+  **Espressioni CEL** non valide: errori di sintassi in ResourceGraphDefinition
+  **Dipendenze dalle risorse**: risorse dipendenti non pronte
+  **Convalida dello schema: l'**istanza non soddisfa i requisiti dello schema RGD

 **Verifica le autorizzazioni RBAC:**

```
# Check if capability has cluster admin policy
kubectl get accessentry -A | grep kro
```

Se la funzionalità non dispone delle autorizzazioni richieste, associala alla voce di accesso della `AmazonEKSClusterAdminPolicy` funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi [Configura le autorizzazioni kro](kro-permissions.md).

 **Verifica lo stato: ResourceGraphDefinition **

```
# List all RGDs
kubectl get resourcegraphdefinition

# Describe specific RGD
kubectl describe resourcegraphdefinition my-rgd

# Check for validation errors
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'
```

ResourceGraphDefinitions hanno tre condizioni di stato chiave:
+  `ResourceGraphAccepted`- Se l'RGD ha superato la convalida (sintassi CEL, controllo del tipo, esistenza del campo)
+  `KindReady`- Se il CRD per l'API personalizzata è stato generato e registrato
+  `ControllerReady`- Se kro sta monitorando attivamente le istanze della tua API personalizzata

In caso `ResourceGraphAccepted` affermativo`False`, controllate il messaggio relativo alla condizione per eventuali errori di convalida, ad esempio campi sconosciuti, mancate corrispondenze tra i tipi o dipendenze circolari.

## Istanze create ma le risorse sottostanti non vengono visualizzate
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Se esistono istanze di risorse personalizzate ma le risorse Kubernetes sottostanti (Deployments, Services, ConfigMaps) non vengono create, verifica che kro disponga delle autorizzazioni e verifica la presenza di errori di composizione.

 Controlla lo stato dell'**istanza**:

```
# Describe the instance (replace with your custom resource kind and name)
kubectl describe {{custom-kind}}
         {{my-instance}}

# View instance events
kubectl get events --field-selector involvedObject.name={{my-instance}}

# Check instance status conditions
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status.conditions}'

# Check instance state
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status.state}'
```

Le istanze hanno un `state` campo che mostra lo stato di alto livello:
+  `ACTIVE`- L'istanza è in esecuzione con successo
+  `IN_PROGRESS`- L'istanza è in fase di elaborazione o riconciliazione
+  `FAILED`- Impossibile riconciliare l'istanza
+  `DELETING`- L'istanza viene eliminata
+  `ERROR`- Si è verificato un errore durante l'elaborazione

Le istanze hanno anche quattro condizioni di stato:
+  `InstanceManaged`- I finalizzatori e le etichette sono impostati correttamente
+  `GraphResolved`- Grafico di runtime creato e risorse risolte
+  `ResourcesReady`- Tutte le risorse create e pronte
+  `Ready`- Stato generale dell'istanza (lo diventa solo `True` quando tutte le condizioni secondarie lo sono`True`)

Concentrati sulla `Ready` condizione per determinare lo stato dell'istanza. In caso `Ready` `False` affermativo, controlla le condizioni secondarie per identificare quale fase non è riuscita.

 **Verifica le autorizzazioni RBAC:**

La funzionalità kro richiede le autorizzazioni per creare le risorse Kubernetes sottostanti definite nel tuo. ResourceGraphDefinitions

```
# Check if the capability has the AmazonEKSClusterAdminPolicy
kubectl get accessentry -A | grep kro
```

Se mancano le autorizzazioni, associale alla voce di accesso della `AmazonEKSClusterAdminPolicy` funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi [Configura le autorizzazioni kro](kro-permissions.md).

## Errori di espressione CEL
<a name="_cel_expression_errors"></a>

Gli errori delle espressioni CEL vengono rilevati al momento ResourceGraphDefinition della creazione, non al momento della creazione delle istanze. kro convalida tutta la sintassi CEL, controlla i tipi delle espressioni rispetto agli schemi Kubernetes e verifica l'esistenza dei campi quando crei l'RGD.

 **Errori comuni** di convalida CEL:
+  Riferimento al **campo non definito: riferimento** a un campo che non esiste nello schema o nella risorsa
+  **Mancata corrispondenza del tipo**: l'espressione restituisce un tipo errato (ad esempio, stringa in cui è previsto un numero intero)
+  **Sintassi non valida**: parentesi, virgolette o operatori mancanti nell'espressione CEL
+  **Tipo di risorsa sconosciuto**: riferimento a un CRD che non esiste nel cluster

 **Verifica lo stato di convalida RGD:**

```
# Check if RGD was accepted
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}'

# View detailed validation errors
kubectl describe resourcegraphdefinition {{my-rgd}}
```

In caso `ResourceGraphAccepted` `False` affermativo, il messaggio di condizione contiene l'errore di convalida.

 **Esempi di espressioni CEL valide**:

```
# Reference schema field
${schema.spec.appName}

# Conditional expression
${schema.spec.replicas > 1}

# String template (expressions must return strings)
name: "${schema.spec.appName}-service"

# Standalone expression (can be any type)
replicas: ${schema.spec.replicaCount}

# Resource reference
${deployment.status.availableReplicas}

# Optional field access (returns null if field doesn't exist)
${configmap.data.?DATABASE_URL}
```

## Le dipendenze delle risorse non si risolvono
<a name="_resource_dependencies_not_resolving"></a>

kro deduce automaticamente le dipendenze dalle espressioni CEL e crea le risorse nell'ordine corretto. Se le risorse non vengono create come previsto, controlla l'ordine di dipendenza e la disponibilità delle risorse.

 **Visualizza l'ordine di creazione calcolato**:

```
# See the order kro will create resources
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.topologicalOrder}'
```

Questo mostra l'ordine calcolato in base ai riferimenti delle espressioni CEL tra le risorse.

 **Verifica la disponibilità delle risorse**:

```
# View instance status to see which resources are ready
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status}'

# Check specific resource status
kubectl get deployment {{my-deployment}} -o jsonpath='{.status.conditions}'
```

 **Verifica le condizioni ReadyWhen (se utilizzate)**:

Il campo `readyWhen` è facoltativo. Se non specificato, le risorse sono considerate pronte immediatamente dopo la creazione. Se hai definito `readyWhen` delle condizioni, verifica che controllino correttamente la disponibilità delle risorse:

```
resources:
  - id: deployment
    readyWhen:
      - ${deployment.status.availableReplicas == deployment.spec.replicas}
```

 **Controlla gli eventi relativi alle risorse**:

```
# View events for the underlying resources
kubectl get events -n {{namespace}} --sort-by='.lastTimestamp'
```

## Errori di convalida dello schema
<a name="_schema_validation_failures"></a>

Se le istanze non vengono create a causa di errori di convalida dello schema, verifica che l'istanza soddisfi i requisiti dello schema RGD.

 **Controlla gli errori** di convalida:

```
# Attempt to create instance and view error
kubectl apply -f instance.yaml

# View existing instance validation status
kubectl describe {{custom-kind}}
         {{my-instance}} | grep -A 5 "Validation"
```

 Problemi di **convalida comuni**:
+  **Campi obbligatori mancanti**: l'istanza non fornisce tutti i campi dello schema obbligatori
+  **Mancata corrispondenza del tipo**: fornisce una stringa dove è previsto un numero intero
+  Valore **enum non valido: utilizzo di un valore** non presente nell'elenco consentito
+  **Mancata corrispondenza del modello**: la stringa non corrisponde al modello regex

 **Rivedi lo schema RGD**:

```
# View the schema definition
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.spec.schema}'
```

Assicurati che l'istanza fornisca tutti i campi obbligatori con i tipi corretti.

## Fasi successive
<a name="_next_steps"></a>
+  [considerazioni kro per EKS](kro-considerations.md)- considerazioni e best practice su kro
+  [Configura le autorizzazioni kro](kro-permissions.md)- Configura RBAC per i team di piattaforme e applicazioni
+  [concetti kro](kro-concepts.md)- Comprendi i concetti kro 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à