

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Résoudre les problèmes liés aux fonctionnalités Kro
<a name="kro-troubleshooting"></a>

**Note**  
Les fonctionnalités EKS sont entièrement gérées et exécutées en dehors de votre cluster. Vous n'avez pas accès aux journaux ni aux espaces de noms des contrôleurs. Le dépannage se concentre sur l'état des capacités, la configuration RBAC et l'état des ressources.

## La fonctionnalité est ACTIVE mais ResourceGraphDefinitions ne fonctionne pas
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Si votre capacité Kro affiche un `ACTIVE` état mais ResourceGraphDefinitions ne crée pas de ressources sous-jacentes, vérifiez l'état de la fonctionnalité, les autorisations RBAC et l'état des ressources.

 **Vérifiez l'état des capacités** :

Vous pouvez consulter les problèmes d'état et d'état des fonctionnalités dans la console EKS ou à l'aide de la AWS CLI.

 **Console** :

1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/home \#/clusters.

1. Sélectionnez le nom de votre cluster.

1. Sélectionnez l’onglet **Observabilité**.

1. Sélectionnez **Surveiller le cluster**.

1. Choisissez l'onglet **Fonctionnalités** pour afficher l'état et l'état de toutes les fonctionnalités.

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

 **Causes courantes :**
+  **Permissions RBAC manquantes** : kro n'a pas les autorisations nécessaires pour créer des ressources Kubernetes sous-jacentes
+  **Expressions CEL non valides** : erreurs de syntaxe dans ResourceGraphDefinition
+  **Dépendances des ressources : les** ressources dépendantes ne sont pas prêtes
+  **Validation du schéma** : l'instance ne répond pas aux exigences du schéma RGD

 **Vérifiez les autorisations RBAC** :

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

Si la fonctionnalité ne dispose pas des autorisations requises, associez-la à l'`AmazonEKSClusterAdminPolicy`entrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez [Configurer les autorisations Kro](kro-permissions.md) pour plus de détails.

 **Vérifier ResourceGraphDefinition le statut** :

```
# 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 ont trois conditions de statut clés :
+  `ResourceGraphAccepted`- Si le RGD a réussi la validation (syntaxe CEL, vérification de type, existence du champ)
+  `KindReady`- Si le CRD de votre API personnalisée a été généré et enregistré
+  `ControllerReady`- Si kro surveille activement les instances de votre API personnalisée

Si tel `ResourceGraphAccepted` est le cas`False`, vérifiez que le message de condition ne contient pas d'erreurs de validation, telles que des champs inconnus, des incohérences de type ou des dépendances circulaires.

## Instances créées mais les ressources sous-jacentes n'apparaissent pas
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Si des instances de ressources personnalisées existent mais que les ressources Kubernetes sous-jacentes (déploiements, services ConfigMaps) ne sont pas créées, vérifiez que kro dispose des autorisations nécessaires et vérifiez qu'il n'y a pas d'erreurs de composition.

 **Vérifiez l'état de l'instance** :

```
# 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}'
```

Les instances possèdent un `state` champ indiquant un statut élevé :
+  `ACTIVE`- L'instance s'exécute correctement
+  `IN_PROGRESS`- L'instance est en cours de traitement ou de réconciliation
+  `FAILED`- L'instance n'a pas pu se réconcilier
+  `DELETING`- L'instance est en cours de suppression
+  `ERROR`- Une erreur s'est produite lors du traitement

Les instances sont également soumises à quatre conditions de statut :
+  `InstanceManaged`- Les finaliseurs et les étiquettes sont correctement définis
+  `GraphResolved`- Graphe d'exécution créé et ressources résolues
+  `ResourcesReady`- Toutes les ressources créées et prêtes
+  `Ready`- Santé globale de l'instance (elle ne l'est que `True` lorsque toutes les sous-conditions le sont`True`)

Concentrez-vous sur la `Ready` condition pour déterminer l'état de santé de l'instance. Dans `Ready` l'affirmative`False`, vérifiez les sous-conditions pour identifier la phase qui a échoué.

 **Vérifiez les autorisations RBAC** :

La fonctionnalité Kro nécessite des autorisations pour créer les ressources Kubernetes sous-jacentes définies dans votre. ResourceGraphDefinitions

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

Si des autorisations sont manquantes, `AmazonEKSClusterAdminPolicy` associez-les à l'entrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez [Configurer les autorisations Kro](kro-permissions.md) pour plus de détails.

## Erreurs d'expression CEL
<a name="_cel_expression_errors"></a>

Les erreurs d'expression CEL sont détectées au moment de ResourceGraphDefinition la création, et non lors de la création des instances. kro valide toute la syntaxe des CEL, vérifie le type des expressions par rapport aux schémas Kubernetes et vérifie l'existence des champs lorsque vous créez le RGD.

 **Erreurs de validation CEL courantes** :
+  Référence de **champ non définie : référence** à un champ qui n'existe pas dans le schéma ou dans la ressource
+  **Incompatibilité de type** : l'expression renvoie un type incorrect (par exemple, une chaîne où un entier est attendu)
+  **Syntaxe non valide** : crochets, guillemets ou opérateurs manquants dans l'expression CEL
+  **Type de ressource inconnu** : référence à un CRD qui n'existe pas dans le cluster

 **Vérifiez l'état de validation du 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}}
```

Si tel `ResourceGraphAccepted` est le cas`False`, le message de condition contient l'erreur de validation.

 **Exemples d'expressions CEL valides** :

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

## Les dépendances des ressources ne sont pas résolues
<a name="_resource_dependencies_not_resolving"></a>

kro déduit automatiquement les dépendances à partir des expressions CEL et crée les ressources dans le bon ordre. Si les ressources ne sont pas créées comme prévu, vérifiez l'ordre des dépendances et l'état de préparation des ressources.

 **Afficher l'ordre de création calculé** :

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

Cela montre l'ordre calculé en fonction des références d'expression CEL entre les ressources.

 **Vérifiez l'état de préparation des ressources** :

```
# 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}'
```

 **Vérifiez les conditions ReadyWhen (si elles sont utilisées)** :

Le champ `readyWhen` est facultatif. Si elles ne sont pas spécifiées, les ressources sont considérées comme prêtes immédiatement après leur création. Si vous avez défini `readyWhen` des conditions, vérifiez qu'elles vérifient correctement l'état de préparation des ressources :

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

 **Vérifiez les événements liés aux ressources** :

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

## Défaillances de validation du schéma
<a name="_schema_validation_failures"></a>

Si les instances ne sont pas créées en raison d'erreurs de validation du schéma, vérifiez que l'instance répond aux exigences du schéma RGD.

 **Vérifiez les erreurs de validation** :

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

 **Problèmes de validation courants** :
+  **Champs obligatoires manquants** : l'instance ne fournit pas tous les champs de schéma obligatoires
+  **Incompatibilité de type** : fourniture d'une chaîne où un entier est attendu
+  **Valeur d'énumération non valide** : utilisation d'une valeur ne figurant pas dans la liste autorisée
+  **Incompatibilité du modèle** : la chaîne ne correspond pas au modèle regex

 Passez en **revue le schéma RGD** :

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

Assurez-vous que votre instance fournit tous les champs obligatoires avec les types corrects.

## Étapes suivantes
<a name="_next_steps"></a>
+  [considérations relatives à Kro pour EKS](kro-considerations.md)- considérations clés et meilleures pratiques
+  [Configurer les autorisations Kro](kro-permissions.md)- Configurer le RBAC pour les équipes chargées des plateformes et des applications
+  [concepts kro](kro-concepts.md)- Comprendre les concepts Kro et le cycle de vie des ressources
+  [Dépannage des fonctionnalités EKS](capabilities-troubleshooting.md)- Conseils généraux de résolution des problèmes liés aux fonctionnalités