Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
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 siguiente tabla. Si su versión de Kubernetes o de la 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 |
---|---|---|
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
|
|
Regional |
AWS recomienda utilizar los puntos de conexión de AWS STS regionales en lugar del punto de conexión global. Esto reduce la latencia, proporciona redundancia integrada y aumenta la validez de los tokens de sesión. AWS Security Token Service debe estar activo en la región de AWS donde el pod se ejecuta. Además, su aplicación debe tener incorporada una redundancia para una región de AWS diferente en caso de que ocurra un error en el 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.
-
Un clúster existente. Si no tiene uno, puede crearlo mediante una de las guías en Introducción a Amazon EKS.
-
Un proveedor de OIDC de IAM existente para el clúster. Para obtener más información, consulte Crear 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.
Todos los siguientes ejemplos utilizan la cuenta de servicio de Kubernetes aws-node utilizada por el complemento CNI de Amazon VPC. Puede reemplazar los valores de ejemplo
por sus propias cuentas de servicio, pods, espacios de nombres y otros recursos.
-
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
aws-node-6mfgv
por el nombre de su pod ykube-system
con el espacio de nombres de su pod.kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:
Un ejemplo de salida sería el siguiente.
ip-192-168-79-166.us-west-2/192.168.79.166
En el resultado anterior, el pod se ejecuta en un nodo de la región de AWS us-west-2.
-
Determine el tipo de punto de conexión que utiliza la cuenta de servicio del pod.
kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS
Un 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
aws-node
con el nombre de su cuenta de servicio ykube-system
con el espacio de nombres de su cuenta de servicio.-
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=true
Si utiliza roles de IAM para cuentas de servicio con el fin de generar URL de S3 previamente firmadas 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=false
Si su aplicación realiza solicitudes explícitamente a puntos de conexión globales de AWS STS y no anula el comportamiento predeterminado de utilizar puntos de conexión 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 con el fin de generar URL de S3 previamente firmadas 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 específico, o si su aplicación o sus dependencias descendentes que utilizan URL prefirmadas requieren una región de AWS de destino específica, realice los cambios necesarios para utilizar el punto de conexión de 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 mutante no se aplica a los pods que ya están en ejecución. Puede reemplazar
pods
,kube-system
y-l k8s-app=aws-node
por la información de los pods para los que configuró la anotación.kubectl delete Pods -n kube-system -l k8s-app=aws-node
-
Confirme que todos los pods se reiniciaron.
kubectl get Pods -n kube-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 -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS
Un ejemplo de salida sería el siguiente.
AWS_STS_REGIONAL_ENDPOINTS=regional