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.
Autoriser les charges de travail Kubernetes à utiliser les comptes de service Kubernetes AWS
Jetons de compte de service
La BoundServiceAccountTokenVolume
-
Go version
0.15.7et ultérieure -
Python version
12.0.0et ultérieure -
Java version
9.0.0et ultérieure -
JavaScript version
0.10.3et versions ultérieures -
Branche
masterRuby -
Haskell version
0.3.0.0 -
Version C#
7.0.5et ultérieure
Si votre charge de travail utilise une version client antérieure, vous devez la mettre à jour. Afin de permettre une migration fluide des clients vers les nouveaux jetons de compte de service à durée limitée, Kubernetes ajoute une période d’expiration prolongée au jeton de compte de service, au-delà de l’heure par défaut. Pour les clusters Amazon EKS, la période d'expiration prolongée est de 90 jours. Le serveur API Kubernetes de votre cluster Amazon EKS rejette les demandes dont les jetons ont plus de 90 jours. Nous vous recommandons de vérifier vos applications et leurs dépendances pour vous assurer que les SDK des clients Kubernetes sont de versions identiques ou ultérieures aux versions répertoriées ci-dessus.
Lorsque le serveur API reçoit des requêtes avec des jetons de plus d'une heure, il annote l'événement du journal d'audit de l'API avec annotations.authentication.k8s.io/stale-token. La valeur de l'annotation ressemble à l'exemple suivant :
subject: system:serviceaccount:common:fluent-bit, seconds after warning threshold: 4185802.
Si votre cluster a une journalisation de plan de contrôle activée, les annotations se trouvent dans les journaux d'audit. Vous pouvez utiliser la requête CloudWatch Logs Insights suivante pour identifier tous les pods de votre cluster Amazon EKS qui utilisent des jetons périmés :
fields @timestamp |filter @logStream like /kube-apiserver-audit/ |filter @message like /seconds after warning threshold/ |parse @message "subject: *, seconds after warning threshold:*\"" as subject, elapsedtime
Le subject fait référence au compte de service utilisé par le pod. Le elapsedtime indique le temps écoulé (en secondes) après la lecture du dernier jeton. Les demandes adressées au serveur d'API sont refusées lorsque le elapsedtime dépasse 90 jours (7 776 000 secondes). Il est recommandé de mettre à jour de manière proactive le kit SDK client Kubernetes de vos applications afin d’utiliser l’une des versions répertoriées précédemment qui actualisent automatiquement le jeton. Si le jeton de compte de service utilisé approche les 90 jours et que vous ne disposez pas de suffisamment de temps pour mettre à jour les versions de votre kit SDK client avant l’expiration du jeton, vous pouvez résilier les pods existants et en créer de nouveaux. Il en résulte une récupération du jeton de compte de service, ce qui vous donne 90 jours supplémentaires pour mettre à jour les kits SDK de votre version client.
Si le pod fait partie d’un déploiement, la suggestion pour résilier les pods tout en conservant une haute disponibilité consiste à effectuer un déploiement à l’aide de la commande suivante. Remplacez my-deployment par le nom de votre déploiement.
kubectl rollout restart deployment/my-deployment
Modules complémentaires de cluster
Les modules complémentaires de cluster suivants ont été mis à jour afin d’utiliser les SDK clients Kubernetes qui récupèrent automatiquement les jetons de compte de service. Nous vous recommandons de vous assurer que les versions répertoriées, ou des versions ultérieures, sont installées sur votre cluster.
-
Plug-in CNI Amazon VPC pour Kubernetes et plug-ins d’aide aux métriques version
1.8.0et ultérieure. Pour vérifier votre version actuelle ou la mettre à jour, consultez Attribuer des adresses IP aux pods avec Amazon VPC CNI et cni-metrics-helper. -
CoreDNS version
1.8.4et ultérieure. Pour vérifier votre version actuelle ou la mettre à jour, consultez Gestion de CoreDNS pour DNS dans les clusters Amazon EKS. -
AWS Version du Load Balancer Controller
2.0.0et versions ultérieures. Pour vérifier votre version actuelle ou la mettre à jour, consultez Acheminez le trafic Internet avec le AWS Load Balancer Controller. -
Une version actuelle de
kube-proxy. Pour vérifier votre version actuelle ou la mettre à jour, consultez Gérer kube-proxy dans les Clusters Amazon EKS. -
AWS pour la version Fluent Bit
2.25.0ou ultérieure. Pour mettre à jour votre version actuelle, consultez la section Releaseson GitHub. -
Version d'image Fluentd 1.14.6-1.2
ou version ultérieure et plug-in de filtre Fluentd pour les métadonnées de Kubernetes version 2.11.1 ou ultérieure.
Octroi AWS d'autorisations Identity and Access Management aux charges de travail sur les clusters Amazon Elastic Kubernetes Service
Amazon EKS propose deux méthodes pour accorder des autorisations AWS Identity and Access Management aux charges de travail exécutées dans des clusters Amazon EKS : les rôles IAM pour les comptes de service et les identités EKS Pod.
- Rôles IAM pour les comptes de service
-
Les rôles IAM pour les comptes de service (IRSA) configurent les applications Kubernetes exécutées AWS avec des autorisations IAM précises pour accéder à diverses autres ressources telles que les compartiments Amazon AWS S3, les tables Amazon DynamoDB, etc. Vous pouvez exécuter plusieurs applications ensemble dans le même cluster Amazon EKS, et vous assurer que chaque application ne dispose que de l’ensemble minimum d’autorisations dont elle a besoin. L'IRSA a été conçu pour prendre en charge diverses options de déploiement de Kubernetes prises en charge AWS par Amazon EKS, Amazon EKS Anywhere, Red Hat OpenShift Service on et les clusters Kubernetes autogérés sur AWS les instances Amazon EC2. Ainsi, l'IRSA a été conçu à l'aide de AWS services de base tels que IAM, et ne dépendait pas directement du service Amazon EKS et de l'API EKS. Pour de plus amples informations, veuillez consulter Rôles IAM pour les comptes de service.
- Identités d'EKS Pod
-
EKS Pod Identity offre aux administrateurs de clusters un flux de travail simplifié pour authentifier les applications afin d'accéder à diverses autres AWS ressources telles que les compartiments Amazon S3, les tables Amazon DynamoDB, etc. L’identité du pod EKS est réservée uniquement à EKS et, par conséquent, elle simplifie la manière dont les administrateurs de cluster peuvent configurer les applications Kubernetes pour obtenir des autorisations IAM. Ces autorisations peuvent désormais être facilement configurées en moins d'étapes directement via AWS Management Console l'API EKS et la AWS CLI, et il n'y a aucune action à effectuer au sein du cluster dans aucun objet Kubernetes. Les administrateurs de clusters n’ont pas besoin de basculer entre les services EKS et IAM, ni d’utiliser des opérations IAM privilégiées pour configurer les autorisations requises par vos applications. Les rôles IAM peuvent désormais être utilisés dans plusieurs clusters sans qu’il soit nécessaire de mettre à jour la politique d’approbation des rôles lors de la création de nouveaux clusters. Les informations d’identification IAM fournies par l’identité du pod EKS comprennent des balises de session de rôle, avec des attributs tels que le nom du cluster, l’espace de noms, le nom du compte de service. Les balises de session de rôle permettent aux administrateurs de créer un rôle unique qui peut fonctionner avec tous les comptes de service en autorisant l'accès aux AWS ressources en fonction des balises correspondantes. Pour de plus amples informations, veuillez consulter Découvrir comment l’identité du pod Amazon EKS accorde aux pods l’accès aux services AWS.
Comparaison de l’identité du pod EKS et de l’IRSA
À un niveau élevé, l’identité du pod EKS et l’IRSA vous permettent tous deux d’accorder des autorisations IAM aux applications exécutées sur des clusters Kubernetes. Mais ils sont fondamentalement différents dans la façon dont vous les configurez, les limites prises en charge et les fonctionnalités activées. Ci-dessous, nous comparons certains des aspects clés des deux solutions.
Note
AWS recommande d'utiliser EKS Pod Identities pour accorder l'accès aux AWS ressources à vos pods dans la mesure du possible. Pour de plus amples informations, veuillez consulter Découvrir comment l’identité du pod Amazon EKS accorde aux pods l’accès aux services AWS.
| Attribut | Identité du pod EKS | IRSA |
|---|---|---|
|
Extensibilité des rôles |
Vous devez configurer chaque rôle une fois pour établir la confiance avec le nouveau principal de service Amazon EKS |
Vous devez mettre à jour la politique d’approbation du rôle IAM avec le nouveau point de terminaison du fournisseur OIDC du cluster EKS chaque fois que vous voulez utiliser le rôle dans un nouveau cluster. |
|
Capacité de mise à l’échelle des clusters |
L’identité du pod EKS n’exige pas des utilisateurs qu’ils configurent le fournisseur IAM OIDC, cette limite ne s’applique donc pas. |
Chaque cluster EKS est associé à une URL d’émetteur OpenID Connect (OIDC). Pour utiliser IRSA, un fournisseur OpenID Connect unique doit être créé pour chaque cluster EKS dans IAM. IAM a une limite globale par défaut de 100 fournisseurs OIDC pour chaque AWS compte. Si vous prévoyez d'avoir plus de 100 clusters EKS pour chaque AWS compte IRSA, vous atteindrez la limite de fournisseurs IAM OIDC. |
|
Capacité de mise à l’échelle des rôles |
L’identité du pod EKS n’exige pas des utilisateurs qu’ils définissent une relation d’approbation entre le rôle IAM et le compte de service dans la politique d’approbation, cette limite ne s’applique donc pas. |
Dans IRSA, vous définissez la relation d’approbation entre un rôle IAM et un compte de service dans la politique d’approbation du rôle. Par défaut, la longueur de la politique d’approbation est |
|
Utilisation du quota d’API STS |
EKS Pod Identity simplifie la transmission des AWS informations d'identification à vos pods et ne nécessite pas que votre code passe des appels directement avec le AWS Security Token Service (STS). Le service EKS gère l'attribution des rôles et fournit des informations d'identification aux applications écrites à l'aide du AWS SDK dans vos pods sans que vos pods communiquent avec AWS STS ou n'utilisent le quota d'API STS. |
Dans IRSA, les applications écrites à l'aide du AWS SDK dans vos pods utilisent des jetons pour appeler l' |
|
Réutilisation des rôles |
AWS Les informations d'identification temporaires STS fournies par EKS Pod Identity incluent des balises de session de rôle, telles que le nom du cluster, l'espace de noms, le nom du compte de service. Les balises de session de rôle permettent aux administrateurs de créer un rôle IAM unique qui peut être utilisé avec plusieurs comptes de service, avec des autorisations effectives différentes, en autorisant l'accès aux AWS ressources en fonction des balises qui leur sont associées. C’est ce qu’on appelle le contrôle d’accès par attributs (ABAC). Pour de plus amples informations, veuillez consulter Accordez aux Pods l'accès aux AWS ressources en fonction des balises. |
AWS Les balises de session STS ne sont pas prises en charge. Vous pouvez réutiliser un rôle entre les clusters, mais chaque pod reçoit toutes les autorisations du rôle. |
|
Environnements pris en charge |
L’identité du pod EKS est uniquement disponible sur Amazon EKS. |
L'IRSA peut être utilisé comme Amazon EKS, Amazon EKS Anywhere, Red Hat OpenShift Service on AWS et les clusters Kubernetes autogérés sur les instances Amazon EC2. |
|
Versions EKS prises en charge |
Toutes les versions de clusters EKS prises en charge. Pour les versions de plateforme spécifiques, consultez Versions du cluster de l’identité du pod EKS. |
Toutes les versions de clusters EKS prises en charge. |