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 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 de l'ACK
ACK gère les AWS ressources via les API Kubernetes en 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 l'état 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 préservant 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 les API Kubernetes.
Débuter avec ACK
Après avoir créé la fonctionnalité ACK (voirCréation d'une fonctionnalité ACK), vous pouvez commencer à gérer les AWS ressources à l'aide des 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 compartiment 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 compartiment a été supprimé de AWS :
aws s3 ls | grepmy-unique-bucket-name-12345
Le bucket ne devrait plus apparaître dans la liste, ce qui montre qu'ACK gère le cycle de vie complet des AWS ressources.
Pour plus d'informations sur la mise en route d'ACK, consultez la section Getting Started with ACK
Cycle de vie des ressources et rapprochement
ACK utilise une boucle de réconciliation continue pour s'assurer 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 AWS d'API pour réconcilier la différence
-
ACK met à jour l'état 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, mettez à jour celle d'une ressource existante ou lorsque ACK détecte une dérive due à des modifications manuelles effectuées en AWS dehors d'ACK. spec De plus, ACK effectue un rapprochement périodique 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 de la dérive des modifications des AWS ressources en amont se produit lors de la resynchronisation périodique.
Lors de l'exécution de l'exemple de démarrage ci-dessus, ACK effectue les étapes suivantes :
-
Vérifie si un compartiment 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
-
Continue la surveillance de la dérive
Pour plus d'informations sur le fonctionnement de l'ACK, consultez la section ACK Reconciliation
Conditions de statut
Les ressources ACK utilisent des conditions de statut pour communiquer leur état. La compréhension de ces conditions vous permet de résoudre les problèmes et de 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 AWS de la 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 au lieu d'en créer une nouvelle.
-
ACK.Recoverable: indique une erreur récupérable qui peut être résolue sans mettre à jour la spécification.
-
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.IAMRoleSelected: indique si un IAMRoleSelector a été sélectionné pour gérer cette ressource.
Vérifiez l'état des ressources :
# 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 plus d'informations 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 qu'il advient AWS des 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 le compartiment S3 y reste. AWS
Cette retain politique est utile pour les bases de données de production qui devraient survivre plus longtemps que la ressource Kubernetes, les ressources partagées utilisées par plusieurs applications, les ressources contenant des données importantes qui ne devraient pas être supprimées accidentellement, ou la gestion ACK temporaire dans laquelle vous adoptez une ressource, la configurez, puis la remettez en gestion manuelle.
Pour plus d'informations 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 gestion ACK sans les recréer.
Quand utiliser l'adoption :
-
Migration de l'infrastructure existante vers la gestion ACK
-
Restauration de AWS ressources orphelines en cas de suppression accidentelle de ressources dans Kubernetes
-
Importer des 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 compartiment portant ce nom existe dans AWS
-
S'il est trouvé, ACK l'adopte (aucun appel d'API à créer)
-
ACK lit la configuration actuelle à partir de AWS
-
ACK met à jour le statut de Kubernetes pour refléter l'état réel
-
Les futures mises à jour réconcilient la ressource normalement
Une fois adoptées, les ressources sont gérées comme n'importe quelle autre ressource ACK, et la suppression de la ressource Kubernetes supprimera la ressource à moins que vous n'utilisiez la AWS politique de suppression. retain
Lors de l'adoption de ressources, AWS celles-ci doivent déjà exister et ACK a besoin d'autorisations de lecture pour la découvrir. La adopt-or-create politique adopte la ressource si elle existe, ou la crée si elle n'existe pas. Ceci est utile lorsque vous souhaitez un flux de travail déclaratif qui fonctionne, que la ressource existe ou non.
Pour plus d'informations sur l'adoption des ressources ACK, consultez la section Adoption des ressources ACK
Cross-account et ressources interrégionales
ACK peut gérer les ressources de différents AWS comptes et régions à partir d'un seul cluster.
Cross-region annotations de ressources
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 d'espaces 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 à moins qu'elles ne soient remplacées par une annotation au niveau de la ressource.
Cross-account
Utilisez les sélecteurs de rôles IAM pour mapper 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 Cross-Account des ressources ACK.
Gestion des erreurs et comportement lors des nouvelles tentatives
ACK gère automatiquement les erreurs transitoires et réessaie les opérations qui ont échoué.
Stratégie de nouvelle tentative :
-
Des erreurs transitoires (limitation du débit, problèmes de service temporaires, autorisations insuffisantes) déclenchent de nouvelles tentatives automatiques
-
La temporisation exponentielle évite de surcharger les API AWS
-
Le nombre maximum de tentatives de nouvelle tentative varie selon le type d'erreur
-
Erreurs permanentes (paramètres non valides, conflits de noms de ressources) Ne réessayez pas
Vérifiez l'état des ressources pour connaître les détails des erreurs à l'aide de kubectl describe :
kubectl describe bucket my-bucket
Recherchez les conditions d'état contenant des messages d'erreur, les événements indiquant des tentatives de rapprochement récentes 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 dans AWS, des valeurs de configuration non valides dans et spec 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 capacité EKS pour kro (Kube Resource Orchestrator). kro fournit une méthode déclarative pour 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 à l'aide de ressources ACK, consultezconcepts kro.
Étapes suivantes
-
Considérations relatives à l'ACK pour EKS- EKS-specific modèles et stratégies d'intégration