Configuration pods pour accéder aux AWS services avec des comptes de service - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

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.

Configuration pods pour accéder aux AWS services avec des comptes de service

Si un Pod a besoin d'y accéder Services AWS, vous devez le configurer pour utiliser un compte Kubernetes de service. Le compte de service doit être associé à un rôle AWS Identity and Access Management (IAM) autorisé à accéder au Services AWS.

Prérequis
  • Un cluster existant. Si vous n'en avez pas, vous pouvez en créer un en utilisant l'un des guides 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 que vous souhaitez pour vos Pods qui utilisent 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 IAM rôle à un compte Kubernetes de service.

  • La dernière version AWS CLI installée et configurée sur votre appareil ou AWS CloudShell. Vous pouvez vérifier votre version actuelle avec aws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package, par exemple yum, apt-get, Homebrew ou macOS, sont souvent antérieurs de plusieurs versions à la AWS CLI. Pour installer la dernière version, reportez-vous à la section Installation, mise à jour et désinstallation de la AWS CLI configuration rapide aws configure dans le guide de l' AWS Command Line Interface utilisateur. La AWS CLI version installée dans le AWS CloudShell peut également être en retard de plusieurs versions par rapport à la dernière version. Pour le mettre à jour, consultez la section Installation AWS CLI dans votre répertoire personnel dans le guide de AWS CloudShell l'utilisateur.

  • L'outil de ligne de commande kubectl est installé sur votre appareil ou AWS CloudShell. La version peut être identique à la version Kubernetes de votre cluster ou être maximum une version mineure antérieure ou ultérieure. Par exemple, si la version de votre cluster est 1.29, vous pouvez utiliser la version kubectl 1.28, 1.29 ou 1.30. Pour installer ou mettre à niveau kubectl, veuillez consulter Configurez kubectl et eksctl.

  • Un fichier existant kubectl config qui contient la configuration de votre cluster. Pour créer un fichier kubectl config, consultez Connectez-vous kubectl à un cluster EKS en créant un kubeconfig fichier.

Pour configurer un Pod afin qu'il utilise un compte de service
  1. Utilisez la commande suivante pour créer un manifeste de déploiement que vous pouvez déployer pour confirmer la configuration avec un Pod. Remplacez les example values par 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
  2. Appliquez le manifeste à votre cluster.

    kubectl apply -f my-deployment.yaml
  3. Vérifiez que les variables d'environnement requises existent pour votre Pod.

    1. Consultez les Pods qui ont été déployés lors du déploiement à l'étape précédente.

      kubectl get pods | grep my-app

      L'exemple qui suit illustre un résultat.

      my-app-6f4dfff6cb-76cv9   1/1     Running   0          3m28s
    2. Vérifiez que le Pod dispose d’un montage de fichier de jetons de compte de service.

      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
  4. Vérifiez que vous Pods pouvez interagir avec le Services AWS en utilisant les autorisations que vous avez attribuées dans la politique IAM associée à votre rôle.

    Note

    Lorsqu'un Pod utilise les AWS informations d'identification d'un rôle IAM associé à un compte de service, le SDK AWS CLI ou les autres SDK présents dans les conteneurs correspondants 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 de nœud Amazon EKS, Pod y aura toujours accès. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.

    Si votre Pods ne peut pas interagir avec les services comme prévu, suivez les étapes suivantes pour vérifier que tout est correctement configuré.

    1. Vérifiez que vous Pods utilisez une version du AWS SDK qui permet d'assumer un rôle IAM via une association EKS Pod Identity. Pour plus d’informations, consultez Utiliser un AWS SDK compatible.

    2. 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