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.
Concepts d'ACK
ACK gère les AWS ressources via Kubernetes en APIs conciliant en permanence l'état souhaité dans vos manifestes avec l'état réel dans. AWS Lorsque vous créez ou mettez à jour une ressource personnalisée Kubernetes, ACK effectue les appels d' AWS API nécessaires pour créer ou modifier la AWS ressource correspondante, puis surveille sa dérive et met à jour le statut de Kubernetes pour refléter l'état actuel. Cette approche vous permet de gérer l'infrastructure à l'aide d'outils et de flux de travail Kubernetes familiers tout en maintenant la cohérence entre votre cluster et. AWS
Cette rubrique explique les concepts fondamentaux qui sous-tendent la façon dont ACK gère les AWS ressources via Kubernetes APIs.
Commencer à utiliser ACK
Après avoir créé la fonctionnalité ACK (voirCréation d'une fonctionnalité ACK), vous pouvez commencer à gérer les AWS ressources à l'aide de manifestes Kubernetes dans votre cluster.
Par exemple, créez ce manifeste de compartiment S3 dansbucket.yaml, en choisissant votre propre nom de compartiment unique.
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-test-bucket namespace: default spec: name:my-unique-bucket-name-12345
Appliquez le manifeste :
kubectl apply -f bucket.yaml
Vérifiez le statut :
kubectl get bucket my-test-bucket kubectl describe bucket my-test-bucket
Vérifiez que le bucket a été créé dans AWS :
aws s3 ls | grepmy-unique-bucket-name-12345
Supprimez la ressource Kubernetes :
kubectl delete bucket my-test-bucket
Vérifiez que le bucket a été supprimé de AWS :
aws s3 ls | grepmy-unique-bucket-name-12345
Le bucket ne doit plus apparaître dans la liste, ce qui prouve qu'ACK gère le cycle de vie complet des AWS ressources.
Pour plus d'informations sur la prise en main d'ACK, consultez Getting Started with ACK
Cycle de vie et réconciliation des ressources
ACK utilise une boucle de réconciliation continue pour garantir que vos AWS ressources correspondent à l'état souhaité défini dans vos manifestes Kubernetes.
Comment fonctionne la réconciliation :
-
Vous créez ou mettez à jour une ressource personnalisée Kubernetes (par exemple, un compartiment S3)
-
ACK détecte le changement et compare l'état souhaité avec l'état réel dans AWS
-
S'ils diffèrent, ACK effectue des appels d' AWS API pour concilier la différence
-
ACK met à jour le statut des ressources dans Kubernetes pour refléter l'état actuel
-
La boucle se répète en continu, généralement toutes les quelques heures
La réconciliation est déclenchée lorsque vous créez une nouvelle ressource Kubernetes, que vous mettez à jour une ressource existante ou lorsque ACK détecte une dérive due à des modifications manuelles effectuées en AWS dehors d'ACK. spec En outre, ACK effectue des rapprochements périodiques avec une période de resynchronisation de 10 heures. Les modifications apportées aux ressources Kubernetes déclenchent une réconciliation immédiate, tandis que la détection passive des modifications des AWS ressources en amont se produit lors de la resynchronisation périodique.
Lorsque vous suivez l'exemple de démarrage ci-dessus, ACK exécute les étapes suivantes :
-
Vérifie si le bucket existe dans AWS
-
Si ce n'est pas le cas, appelez
s3:CreateBucket -
Met à jour le statut de Kubernetes avec l'ARN et l'état du bucket
-
Poursuite de la surveillance de la dérive
Pour en savoir plus sur le fonctionnement d'ACK, consultez ACK Reconciliation
Conditions relatives au statut
Les ressources ACK utilisent des conditions d'état pour communiquer leur état. La compréhension de ces conditions vous aide à résoudre les problèmes et à comprendre l'état des ressources.
-
Prêt : indique que la ressource est prête à être consommée (condition Kubernetes standardisée).
-
ACK. ResourceSynced: indique que la spécification de la ressource correspond à l'état de la AWS ressource.
-
ACK.terminal : indique qu'une erreur irrécupérable s'est produite.
-
ACK.adopted : indique que la ressource a été adoptée à partir d'une AWS ressource existante plutôt que créée.
-
Ack.Recoverable : indique une erreur récupérable qui peut être résolue sans mettre à jour les spécifications.
-
ACK.advisory : fournit des informations consultatives sur la ressource.
-
ACK. LateInitialized: indique si l'initialisation tardive des champs est terminée.
-
ACK. ReferencesResolved: indique si tous les
AWSResourceReferencechamps ont été résolus. -
ACK. IAMRoleSélectionné : indique si un IAMRole sélecteur a été sélectionné pour gérer cette ressource.
Vérifiez l'état de la ressource :
# 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")]}'
Exemple de statut :
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
Pour en savoir plus sur le statut et les conditions de l'ACK, consultez la section Conditions de l'ACK
Politiques de suppression
La politique de suppression d'ACK contrôle ce qui arrive aux AWS ressources lorsque vous supprimez la ressource Kubernetes.
Supprimer (par défaut)
La AWS ressource est supprimée lorsque vous supprimez la ressource Kubernetes : il s'agit du comportement par défaut.
# No annotation needed - this is the default apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: temp-bucket spec: name: temporary-bucket
La suppression de cette ressource entraîne la suppression du compartiment S3 dans AWS.
Conserver
La AWS ressource est conservée lorsque vous supprimez la ressource 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
La suppression de cette ressource la supprime de Kubernetes mais laisse le compartiment S3 dedans. AWS
Cette retain politique est utile pour les bases de données de production qui doivent survivre à la ressource Kubernetes, pour les ressources partagées utilisées par plusieurs applications, pour les ressources contenant des données importantes qui ne doivent pas être supprimées accidentellement ou pour la gestion temporaire d'ACK dans le cadre de laquelle vous adoptez une ressource, la configurez, puis la relancez à la gestion manuelle.
Pour en savoir plus sur la politique de suppression d'ACK, consultez la section Politique de suppression d'ACK
Adoption des ressources
L'adoption vous permet de placer les AWS ressources existantes sous la gestion d'ACK sans les recréer.
Quand utiliser l'adoption :
-
Migration de l'infrastructure existante vers la gestion ACK
-
Récupération de AWS ressources orphelines en cas de suppression accidentelle de ressources dans Kubernetes
-
Importation de ressources créées par d'autres outils (CloudFormation, Terraform)
Comment fonctionne l'adoption :
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
Lorsque vous créez cette ressource :
-
ACK vérifie si un bucket portant ce nom existe dans AWS
-
S'il est trouvé, ACK l'adopte (aucun appel d'API à créer)
-
ACK lit la configuration actuelle depuis AWS
-
ACK met à jour le statut de Kubernetes pour refléter l'état réel
-
Les mises à jour futures réconcilient normalement la ressource
Une fois adoptées, les ressources sont gérées comme n'importe quelle autre ressource ACK, et la suppression de la ressource Kubernetes entraîne la suppression de la AWS ressource, sauf si vous utilisez la retain politique de suppression.
Lors de l'adoption de ressources, AWS celles-ci doivent déjà exister et ACK a besoin d'autorisations de lecture pour les découvrir. La adopt-or-create politique adopte la ressource si elle existe ou la crée si elle n'existe pas. Cela est utile lorsque vous souhaitez un flux de travail déclaratif qui fonctionne, que la ressource existe ou non.
Pour en savoir plus sur l'adoption des ressources ACK, consultez la section Adoption des ressources ACK
Ressources entre comptes et entre régions
ACK peut gérer les ressources de différents AWS comptes et régions à partir d'un seul cluster.
Annotations de ressources interrégionales
Vous pouvez spécifier la région d'une AWS ressource à l'aide d'une annotation :
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
Vous pouvez également spécifier la région de toutes les AWS ressources créées dans un espace de noms donné :
Annotations relatives à l'espace de noms
Définissez une région par défaut pour toutes les ressources d'un espace de noms :
apiVersion: v1 kind: Namespace metadata: name: production annotations: services.k8s.aws/default-region: us-west-2
Les ressources créées dans cet espace de noms utilisent cette région sauf si elles sont remplacées par une annotation au niveau des ressources.
Compte croisé
Utilisez les sélecteurs de rôles IAM pour associer des rôles IAM spécifiques à des espaces de noms :
apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: target-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production
Les ressources créées dans l'espace de noms mappé utilisent automatiquement le rôle spécifié.
Pour en savoir plus sur les sélecteurs de rôles IAM, consultez la section Gestion des ressources entre comptes ACK
Gestion des erreurs et comportement des nouvelles tentatives
ACK gère automatiquement les erreurs transitoires et réessaie les opérations qui ont échoué.
Réessayez la stratégie :
-
Les erreurs transitoires (limitation du débit, problèmes de service temporaires, autorisations insuffisantes) déclenchent de nouvelles tentatives automatiques
-
Le recul exponentiel évite le surmenage AWS APIs
-
Le nombre maximal de tentatives varie en fonction du type d'erreur
-
Erreurs permanentes (paramètres non valides, conflits de noms de ressources), ne réessayez pas
Vérifiez l'état de la ressource pour obtenir des informations détaillées sur les erreurs en utilisant kubectl describe :
kubectl describe bucket my-bucket
Recherchez les conditions d'état avec des messages d'erreur, les événements indiquant les récentes tentatives de rapprochement et le message champ des conditions d'état expliquant les échecs. Les erreurs courantes incluent des autorisations IAM insuffisantes, des conflits de noms de ressources AWS, des valeurs de configuration non valides dans le spec et des quotas de AWS service dépassés.
Pour résoudre les erreurs courantes, consultezRésoudre les problèmes liés aux fonctionnalités ACK.
Composition des ressources avec kro
Pour composer et connecter plusieurs ressources ACK ensemble, utilisez la fonctionnalité EKS pour kro (Kube Resource Orchestrator). kro fournit un moyen déclaratif de définir des groupes de ressources, en transmettant la configuration entre les ressources afin de gérer simplement des modèles d'infrastructure complexes.
Pour des exemples détaillés de création de compositions de ressources personnalisées avec des ressources ACK, voir concepts kro
Étapes suivantes
-
Considérations relatives à l'ACK pour EKS- Modèles et stratégies d'intégration spécifiques à EKS