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 le point de terminaison du service de jetons de sécurité AWS pour un compte de service
Si vous utilisez un compte de service Kubernetes avec des rôles IAM pour les comptes de service, vous pouvez configurer le type de point de terminaison du service de jetons de sécurité AWS utilisé par le compte de service.
AWS recommande d’utiliser les points d’arrivée régionaux STS AWS plutôt que le point d’arrivée global. Cela réduit la latence, fournit une redondance intégrée et augmente la validité des jetons de session. Le service de jetons de sécurité AWS doit être actif dans la région AWS où le pod est exécuté. De plus, votre application doit disposer d’une redondance intégrée pour une autre région AWS en cas de défaillance du service dans la région AWS. Pour plus d’informations, consultez Gestion d’AWS STS dans une région AWS dans le Guide de l’utilisateur IAM.
-
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 fournisseur IAM OIDC existant pour votre cluster. Pour de plus amples informations, consultez Créer un fournisseur d'identité OIDC IAM pour votre cluster.
-
Un compte de service Kubernetes existant configuré pour être utilisé avec la fonction Amazon EKS IAM pour les comptes de service.
Les exemples suivants utilisent tous le compte de service Kubernetes aws-node utilisé par le plug-in Amazon VPC CNI. Vous pouvez remplacer les valeurs d’exemple par vos propres comptes de service, pods, espaces de noms et autres ressources.
-
Sélectionnez un pod qui utilise un compte de service dont vous souhaitez modifier le point de terminaison. Déterminez dans quelle région AWS le Pod fonctionne. Remplacez
aws-node-6mfgvpar le nom de votre pod etkube-systempar l’espace de noms 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.166Dans la sortie précédente, le Pod s’exécute sur un nœud dans la région AWS us-west-2.
-
Déterminez le type de point de terminaison utilisé par le compte de service du pod.
kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTSL'exemple qui suit illustre un résultat.
AWS_STS_REGIONAL_ENDPOINTS: regionalSi le point de terminaison actuel est international, alors
globalest 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é. -
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-nodepar le nom de votre compte de service etkube-systempar 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=trueSi vous utilisez des rôles IAM pour les comptes de service afin de générer des URL S3 pré-signées dans votre application exécutée dans les conteneurs Pods, le format de l’URL pour les 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=falseSi votre application envoie explicitement des requêtes aux points de terminaison globaux STS AWS et que vous ne remplacez pas le comportement par défaut consistant à utiliser les points de terminaison régionaux dans les clusters Amazon EKS, les requêtes échoueront et généreront une erreur. Pour de plus amples 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 des rôles IAM pour les comptes de service afin de générer des URL S3 pré-signées dans votre application exécutée dans les conteneurs Pods, le format de l’URL pour les points de terminaison globaux 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 votre automatisation nécessite une 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 concernant la région AWS ciblée, effectuez les modifications nécessaires pour utiliser le point de terminaison STS AWS approprié.
-
-
Supprimez et recréez tous les pods existants associés au compte de service pour appliquer les variables d’environnement des informations d’identification. Le hook web en mutation ne les applique pas aux qui sont déjà en cours d’exécution. Vous pouvez remplacer
pods,kube-systemet-l k8s-app=aws-nodepar les informations relatives aux pods pour lesquels vous avez défini votre annotation.kubectl delete Pods -n kube-system -l k8s-app=aws-node -
Vérifiez que les pods ont tous redémarré.
kubectl get Pods -n kube-system -l k8s-app=aws-node -
Affichez les variables d’environnement pour l’un des pods. Vérifiez que la valeur
AWS_STS_REGIONAL_ENDPOINTSest celle que vous avez définie à une étape précédente.kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTSL'exemple qui suit illustre un résultat.
AWS_STS_REGIONAL_ENDPOINTS=regional