Configuration du AWS Security Token Service point de terminaison pour un compte 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 du AWS Security Token Service point de terminaison pour un compte de service

Si vous utilisez un compte de Kubernetes service avecRôles IAM pour les comptes de service, vous pouvez configurer le type de AWS Security Token Service point de terminaison utilisé par le compte de service si la version de votre cluster et de votre plateforme est identique ou ultérieure à celles répertoriées dans le tableau suivant. Si la version de votre Kubernetes ou celle de votre plateforme est antérieure à celles répertoriées dans le tableau, alors vos comptes de service ne peuvent utiliser que le point de terminaison international.

Version de Kubernetes Version de la plateforme Type de point de terminaison par défaut
1.30 eks.2 Régional
1.29 eks.1 Régional
1.28 eks.1 Régional
1.27 eks.1 Régional
1.26 eks.1 Régional
1.25 eks.1 Régional
1.24 eks.2 Régional
1.23 eks.1 Régional

AWS recommande d'utiliser les AWS STS points de terminaison régionaux plutôt que le point de terminaison global. Cela réduit la latence, fournit une redondance intégrée et augmente la validité des jetons de session. Le AWS Security Token Service doit être actif Région AWS là où il Pod s'exécute. De plus, votre application doit disposer d'une redondance intégrée pour une Région AWS solution différente en cas de panne du service dans le. Région AWS Pour plus d'informations, consultez la section Gestion AWS STS dans et Région AWS dans le guide de l'utilisateur IAM.

Prérequis
Pour configurer le type de point de terminaison utilisé par un compte de service Kubernetes

Les exemples suivants utilisent tous le compte de service aws-node de Kubernetesutilisé par le plugin CNI Amazon VPC. Vous pouvez remplacer les example values par vos propres comptes de service, Pods, espaces de noms et autres ressources.

  1. Sélectionnez un Pod qui utilise un compte de service dont vous souhaitez modifier le point de terminaison. Déterminez dans Région AWS lequel il Pod se trouve. Remplacez aws-node-6mfgv par votre nom de Pod et kube-system par l'espace de nom de votre Pod.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    L'exemple qui suit illustre un résultat.

    ip-192-168-79-166.us-west-2/192.168.79.166

    Région AWS

  2. Déterminez le type de point de terminaison utilisé par le compte de service du Pod's.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    L'exemple qui suit illustre un résultat.

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Si le point de terminaison actuel est international, alors global est renvoyé en sortie. Si aucune sortie n'est renvoyée, le type de point de terminaison par défaut est en cours d'utilisation et n'a pas été remplacé.

  3. Si la version de votre cluster ou celle de votre plateforme est identique ou ultérieure à celles répertoriées dans le tableau, vous pouvez modifier le type de point de terminaison utilisé par votre compte de service pour le faire passer du type par défaut à un type différent à l'aide de l'une des commandes suivantes. Remplacez aws-node par le nom de votre compte de service et kube-system par l'espace de noms de votre compte de service.

    • Si votre type de point de terminaison par défaut ou actuel est international et que vous souhaitez le remplacer par régional :

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Si vous utilisez Rôles IAM pour les comptes de service pour générer des URL S3 présignées dans votre application exécutée dans des conteneurs de Pods, le format de l'URL des points de terminaison régionaux est similaire à l'exemple suivant :

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Si votre type de point de terminaison par défaut ou actuel est régional et que vous souhaitez le remplacer par international :

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Si votre application envoie explicitement des demandes à des points de terminaison AWS STS globaux et que vous ne remplacez pas le comportement par défaut consistant à utiliser des points de terminaison régionaux dans les clusters Amazon EKS, les demandes échoueront avec une erreur. Pour plus d’informations, consultez Les conteneurs Pod reçoivent l'erreur suivante : An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Si vous utilisez Rôles IAM pour les comptes de service pour générer des URL S3 présignées dans votre application exécutée dans des conteneurs de Pods, le format de l'URL des points de terminaison internationaux est similaire à l'exemple suivant :

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Si vous disposez d'une automatisation qui attend l'URL pré-signée dans un certain format ou si votre application ou les dépendances en aval qui utilisent des URL pré-signées ont des attentes à l'égard de l'URL Région AWS cible, apportez les modifications nécessaires pour utiliser le point de terminaison approprié. AWS STS

  4. Supprimez et recréez tous les Pods existants associés au compte de service pour appliquer les variables d'environnement d'informations d'identification. Le hook web en mutation ne les applique pas aux Pods qui sont déjà en cours d'exécution. Vous pouvez remplacer Pods, kube-system et -l k8s-app=aws-node par les informations sur des Pods pour lesquels vous avez défini votre annotation.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Vérifiez que les Pods ont tous redémarré.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Affichez les variables d'environnement pour l'un des Pods. Vérifiez que la valeur AWS_STS_REGIONAL_ENDPOINTS est celle que vous avez définie à une étape précédente.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    L'exemple qui suit illustre un résultat.

    AWS_STS_REGIONAL_ENDPOINTS=regional