Ayude a mejorar esta página
¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.
Configure el punto de conexión AWS Security Token Service de una cuenta de servicio
Si utiliza una cuenta de servicio de Kubernetes con Roles de IAM para cuentas de servicio, puede configurar el tipo de punto de conexión de AWS Security Token Service utilizado por la cuenta de servicio si el clúster y la versión de la plataforma son iguales o posteriores a las enumeradas en la tabla siguiente. Si su versión de Kubernetes o plataforma son anteriores a las enumeradas en la tabla, sus cuentas de servicio solo pueden utilizar el punto de conexión global.
Versión de Kubernetes | Versión de la plataforma | Tipo de punto de conexión predeterminado |
---|---|---|
1.31 |
eks.1 |
Regional |
1.30 |
eks.2 |
Regional |
1.29 |
eks.1 |
Regional |
1.28 |
eks.1 |
Regional |
1.27 |
eks.1 |
Regional |
1.26 |
eks.1 |
Regional |
1.25 |
eks.1 |
Regional |
1.24 |
eks.2 |
Regional |
1.23 |
eks.1 |
Regional |
AWS recomienda usar el sistema regional de puntos de conexión de AWS STS en lugar del global. Esto reduce la latencia, proporciona redundancia integrada y aumenta la validez de los tokens de sesión. La AWS Security Token Service debe estar activa en la Región de AWS donde Pod se ejecuta. Además, su aplicación debe tener incorporada una redundancia para una Región de AWS diferente en caso de error del servicio en la Región de AWS. Para obtener más información, consulte Administración de AWS STS en una Región de AWS en la guía del usuario de IAM.
Requisitos previos
-
Un clúster existente. Si no tiene uno, puede crearlo mediante una de las guías de Introducción a Amazon EKS.
-
Un proveedor de OIDC de IAM existente para el clúster. Para obtener más información, consulte Creación de un proveedor de OIDC de IAM para su clúster.
-
Una cuenta de servicio de Kubernetes existente configurada para su uso con la característica IAM de Amazon EKS para cuentas de servicio.
Para configurar el tipo de punto de conexión utilizado por una cuenta de servicio de Kubernetes
Todos los siguientes ejemplos utilizan la cuenta de servicio de aws-node
de Kubernetes utilizada por el Complemento CNI de Amazon VPC. Puede reemplazar los
con sus propias cuentas de servicio, Pods, espacios de nombres y otros recursos.example values
-
Seleccione un Pod que utilice una cuenta de servicio para la que desee cambiar el punto de conexión. Determine en qué Región de AWS se ejecuta el Pod. Reemplace
con su nombre de Pod yaws-node-6mfgv
con el espacio de nombres de Pod.kube-system
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep Node:Un ejemplo de salida sería el siguiente.
ip-192-168-79-166.us-west-2/192.168.79.166
En la salida anterior, el Pod se ejecuta en un nodo de la us-west-2 Región de AWS.
-
Determine el tipo de punto de conexión que utiliza la cuenta de servicio del Pod's.
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTSUn ejemplo de salida sería el siguiente.
AWS_STS_REGIONAL_ENDPOINTS:
regional
Si el punto de conexión actual es global,
global
se devuelven en la salida. Si no se devuelve ningún resultado, el tipo de punto de conexión predeterminado está en uso y no se ha anulado. -
Si la versión de clúster o plataforma es la misma o posterior a las enumeradas en la tabla, puede cambiar el tipo de punto de conexión utilizado por la cuenta de servicio del tipo predeterminado a otro con uno de los siguientes comandos. Reemplace
con el nombre de su cuenta de servicio yaws-node
con el espacio de nombres de su cuenta de servicio.kube-system
-
Si el tipo de punto de conexión predeterminado o actual es global y desea cambiarlo a regional:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=trueSi utiliza Roles de IAM para cuentas de servicio para generar URL de S3 prefirmadas en la aplicación que se ejecuta en los contenedores de los Pods, el formato de la URL de los puntos de conexión regionales es similar al siguiente ejemplo:
https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&... -
Si el tipo de punto de conexión predeterminado o actual es regional y desea cambiarlo a global:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=falseSi su aplicación realiza solicitudes explícitamente a puntos de enlace globales de AWS STS y no anula el comportamiento predeterminado de usar puntos de enlace regionales en clústeres de Amazon EKS, las solicitudes fallarán y mostrarán un error. Para obtener más información, consulte Los contenedores de pods muestran el siguiente error: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.
Si utiliza Roles de IAM para cuentas de servicio para generar URL de S3 prefirmadas en la aplicación que se ejecuta en los contenedores de los Pods, el formato de la URL de los puntos de conexión globales es similar al siguiente ejemplo:
https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&...
Si tiene una automatización que espera la URL prefirmada en un formato determinado o si su aplicación o dependencias posteriores que utilizan URL prefirmadas tienen expectativas para la Región de AWSsegmentada, luego realice los cambios necesarios para utilizar el punto de conexión AWS STS.
-
-
Elimine y vuelva a crear todos los Pods existentes asociados a la cuenta de servicio para aplicar las variables de entorno de credenciales. El enlace web que muta no se aplica a los Pods que ya están en ejecución. Puede reemplazar
,Pods
ykube-system
con la información del Pods para el que configuró la anotación.-l k8s-app=aws-node
kubectl delete
Pods
-nkube-system
-l
k8s-app=aws-node
-
Confirme que todos los Pods se reiniciaron.
kubectl get
Pods
-nkube-system
-l k8s-app=aws-node
-
Consulte las variables de entorno de uno de los Pods. Compruebe que el valor
AWS_STS_REGIONAL_ENDPOINTS
sea el que estableció en un paso anterior.kubectl describe pod
aws-node-kzbtr
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTSUn ejemplo de salida sería el siguiente.
AWS_STS_REGIONAL_ENDPOINTS=
regional