Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Configurer les pods pour accéder aux services AWS avec des comptes de service
Si un pod doit accéder aux services AWS, vous devez le configurer pour utiliser un compte de service Kubernetes. Le compte de service doit être associé à un rôle Gestion des identités et des accès AWS (IAM) disposant des autorisations nécessaires pour accéder aux services AWS.
-
Un cluster existant. Si vous n’en avez pas, vous pouvez en créer un à l’aide de l’un des guides disponibles dans Mise en route avec Amazon EKS.
-
Un compte de service Kubernetes existant et une association d’identité du pod EKS qui associe le compte de service à un rôle IAM. Le rôle doit être associé à une politique IAM contenant les autorisations dont vos pods veulent avoir pour utiliser les services AWS. Pour plus d'informations sur la façon de créer et de configurer le compte de service et le rôle, consultez Attribuer un rôle IAM à un compte de service Kubernetes.
-
La dernière version de l’AWS CLI installée et configurée sur votre appareil ou dans AWS CloudShell. Vous pouvez vérifier votre version actuelle avec
aws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package tels queyum,apt-getou Homebrew pour macOS ont souvent plusieurs versions de retard par rapport à la dernière version de l’AWS CLI. Pour installer la dernière version, consultez les sections Installation et Configuration rapide avec aws configure du Guide de l’utilisateur de l’interface de la ligne de commande AWS. La version de l’interface AWS CLI installée dans AWS CloudShell peut également être plusieurs versions en retard par rapport à la dernière version. Pour la mettre à jour, consultez la section Installation de l’AWS CLI dans votre répertoire personnel dans le Guide de l’utilisateur AWS CloudShell. -
L’outil de ligne de commande
kubectlest installé sur votre appareil ou dans AWS CloudShell. La version peut correspondre à celle utilisée par votre cluster Kubernetes, ou différer d’au plus une version mineure, qu’elle soit antérieure ou plus récente. Par exemple, si la version de votre cluster est1.29, vous pouvez utiliser la versionkubectl1.28,1.29ou1.30. Pour installer ou mettre à niveaukubectl, veuillez consulter Configuration de kubectl et eksctl. -
Un fichier existant
kubectlconfigqui contient la configuration de votre cluster. Pour créer un fichierkubectlconfig, consultez Connexion de kubectl à un cluster EKS en créant un fichier kubeconfig.-
Utilisez la commande suivante pour créer un manifeste de déploiement que vous pouvez déployer sur un pod afin de confirmer la configuration. Remplacez les
exemples de valeurspar vos propres valeurs.cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF -
Appliquez le manifeste à votre cluster.
kubectl apply -f my-deployment.yaml -
Vérifiez que les variables d’environnement requises existent pour votre pod.
-
Affichez les pods qui ont été déployés avec le déploiement à l’étape précédente.
kubectl get pods | grep my-appL'exemple qui suit illustre un résultat.
my-app-6f4dfff6cb-76cv9 1/1 Running 0 3m28s -
Vérifiez que le pod dispose d’un fichier de jeton de compte de service monté.
kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:L'exemple qui suit illustre un résultat.
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
-
-
Veuillez vérifier que vos pods peuvent interagir avec les services AWS à l’aide des autorisations que vous avez attribuées dans la politique IAM associée à votre rôle.
Note
Lorsqu’un pod utilise les informations d’identification AWS d’un rôle IAM associé à un compte de service, l’interface AWS CLI ou d’autres SDK dans les conteneurs de ce pod utilisent les informations d’identification fournies par ce rôle. Si vous ne restreignez pas l’accès aux informations d’identification fournies au rôle IAM du nœud Amazon EKS, le pod a toujours accès à ces informations d’identification. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master
. Si vos pods ne peuvent pas interagir avec les services comme prévu, suivez les étapes suivantes pour vérifier que tout est correctement configuré.
-
Vérifiez que vos pods utilisent une version du kit SDK AWS qui prend en charge l’assomption d’un rôle IAM via une association d’identité du pod EKS. Pour de plus amples informations, consultez Utiliser l’identité du pod avec le SDK AWS.
-
Vérifiez que le déploiement utilise le compte de service.
kubectl describe deployment my-app | grep "Service Account"L'exemple qui suit illustre un résultat.
Service Account: my-service-account
-
-