Configure el punto de conexión AWS Security Token Service de una cuenta de servicio - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Elija el enlace Editar esta página en GitHub que se encuentra en el panel derecho de cada página. 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 servicioroles de IAM, 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.

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

Todos los siguientes ejemplos utilizan la cuenta de servicio de Kubernetes utilizada por el Configuración del complemento de CNI de Amazon VPC para utilizar IRSAComplemento CNI de Amazon VPC. Puede reemplazar los valores de ejemplo con sus propias cuentas de servicio, Pods, espacios de nombres y otros recursos.

  1. 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. Sustituya aws-node-6mfgv por el nombre del Pod y kube-system por el espacio de nombres de Pod’s.

    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.

  2. Determine el tipo de punto de conexión que utiliza la cuenta de servicio del Pod’s.

    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.

  3. 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 y kube-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 Roles de IAM para cuentas de servicio 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 Roles de IAM para cuentas de servicio 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.

  4. 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, kube-system y -l k8s-app=aws-node por la información correspondiente a los Pods para los que estableció la anotación.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Confirme que todos los Pods se reiniciaron.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. 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