Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Habilita el acceso al clúster para Amazon EMR en EKS
En las siguientes secciones, se muestran un par de formas de habilitar el acceso a los clústeres. La primera es mediante la administración de acceso a EKS clústeres de Amazon (CAM) y la segunda muestra cómo tomar medidas manuales para habilitar el acceso a los clústeres.
Habilite el acceso al clúster mediante la entrada de EKS acceso (recomendado)
nota
aws-auth
ConfigMap se ha quedado obsoleto. El método recomendado para administrar el acceso a Kubernetes APIs son las entradas de acceso.
Amazon EMR está integrado con la gestión de acceso a EKS clústeres de Amazon (CAM), por lo que puede automatizar la configuración de las políticas AuthN y AuthZ necesarias para ejecutar los trabajos de Amazon EMR Spark en los espacios de nombres de los clústeres de Amazon. EKS Cuando creas un clúster virtual a partir de un espacio de nombres de EKS clúster de Amazon, Amazon configura EMR automáticamente todos los permisos necesarios, por lo que no necesitas añadir ningún paso adicional a tus flujos de trabajo actuales.
nota
La EMR integración de Amazon con Amazon solo EKS CAM es compatible con los nuevos clústeres EKS virtuales de AmazonEMR. No puede migrar los clústeres virtuales existentes para usar esta integración.
Requisitos previos
-
Asegúrese de que está ejecutando la versión 2.15.3 o superior del AWS CLI
-
Tu EKS clúster de Amazon debe tener la versión 1.23 o superior.
Configuración
Para configurar la integración entre Amazon EMR y las AccessEntry API operaciones de AmazonEKS, asegúrate de haber completado los siguientes elementos:
-
Asegúrate de que tu EKS clúster
authenticationMode
de Amazon esté configurado enAPI_AND_CONFIG_MAP
.aws eks describe-cluster --name
<eks-cluster-name>
Si aún no lo está,
authenticationMode
configúrelo enAPI_AND_CONFIG_MAP
.aws eks update-cluster-config --name
<eks-cluster-name>
--access-config authenticationMode=API_AND_CONFIG_MAPPara obtener más información sobre los modos de autenticación, consulte Modos de autenticación de clúster.
-
Asegúrese de que el IAMrol que está utilizando para ejecutar las
DeleteVirtualCluster
API operacionesCreateVirtualCluster
y también tenga los siguientes permisos:{ "Effect": "Allow", "Action": [ "eks:CreateAccessEntry" ], "Resource": "arn:
<AWS_PARTITION>
:eks:<AWS_REGION>
:<AWS_ACCOUNT_ID>
:cluster/<EKS_CLUSTER_NAME>
" }, { "Effect": "Allow", "Action": [ "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:AssociateAccessPolicy", "eks:DisassociateAccessPolicy" ], "Resource": "arn:<AWS_PARTITION>
:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*" }
Conceptos y terminología
La siguiente es una lista de terminologías y conceptos relacionados con Amazon EKSCAM.
-
Clúster virtual (VC): representación lógica del espacio de nombres creado en Amazon. EKS Es un enlace 1:1 a un espacio de nombres de un EKS clúster de Amazon. Puedes usarla para ejecutar EMR cargas de trabajo de Amazon en un EKS clúster de Amazon dentro del espacio de nombres especificado.
-
Espacio de nombres: mecanismo para aislar grupos de recursos dentro de un único clúster. EKS
-
Política de acceso: permisos que otorgan acceso y acciones a un IAM rol dentro de un clúster. EKS
-
Entrada de acceso: entrada creada con un rol arn. Puedes vincular la entrada de acceso a una política de acceso para asignar permisos específicos en el EKS clúster de Amazon.
-
EKSclúster virtual integrado de entrada de acceso: el clúster virtual creado mediante APIlas operaciones de entrada de acceso de AmazonEKS.
Habilite el acceso al clúster mediante aws-auth
Debes permitir que Amazon EMR EKS acceda a un espacio de nombres específico de tu clúster mediante las siguientes acciones: crear un rol de Kubernetes, vincular el rol a un usuario de Kubernetes y mapear el usuario de Kubernetes con el rol vinculado al servicio. AWSServiceRoleForAmazonEMRContainers
Estas acciones se automatizan eksctl
cuando el comando de mapeo de identidad se utiliza como nombre del servicioIAM. emr-containers
Puede llevar a cabo estas operaciones fácilmente con el siguiente comando.
eksctl create iamidentitymapping \ --cluster
my_eks_cluster
\ --namespacekubernetes_namespace
\ --service-name "emr-containers"
Reemplazar my_eks_cluster
con el nombre de tu EKS clúster de Amazon y reemplaza kubernetes_namespace
con el espacio de nombres de Kubernetes creado para ejecutar cargas de trabajo de Amazon. EMR
importante
Debe descargar la versión más reciente de eksctl siguiendo el paso anterior: configure kubectl y eksctl para usar esta funcionalidad.
Pasos manuales para habilitar el acceso a los clústeres para Amazon EMR en EKS
También puedes seguir los siguientes pasos manuales para habilitar el acceso al clúster para Amazon EMR onEKS.
-
Crear un rol de Kubernetes en un espacio de nombres específico
-
Crear una vinculación de roles de Kubernetes limitada al espacio de nombres
Ejecute el siguiente comando para crear una vinculación de roles de Kubernetes en el espacio de nombres dado. Esta vinculación de roles otorga los permisos definidos en el rol creado en el paso anterior a un usuario nombrado
emr-containers
. Este usuario identifica las funciones vinculadas a servicios para Amazon EMR on EKS y, por lo tanto, permite EKS a Amazon EMR on realizar las acciones definidas en la función que has creado.namespace=
my-namespace
cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: emr-containers namespace: ${namespace} subjects: - kind: User name: emr-containers apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: emr-containers apiGroup: rbac.authorization.k8s.io EOF -
Actualizar el mapa de configuración
aws-auth
de KubernetesPuedes usar una de las siguientes opciones para asignar el rol vinculado a Amazon EMR on EKS Service con el
emr-containers
usuario que estaba vinculado al rol de Kubernetes en el paso anterior.Opción 1: con
eksctl
Ejecuta el siguiente
eksctl
comando para asignar la función Amazon EMR on EKS service vinculada al usuario.emr-containers
eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::my-account-id
:role/AWSServiceRoleForAmazonEMRContainers" \ --username emr-containersOpción 2: sin usar eksctl
-
Ejecute el siguiente comando para abrir el mapa de configuración
aws-auth
en el editor de texto.kubectl edit -n kube-system configmap/aws-auth
nota
Si recibes un mensaje de error al
Error from server (NotFound): configmaps "aws-auth" not found
respecto, consulta los pasos de Añadir funciones de usuario en la Guía del EKS usuario de Amazon para aplicar el stock ConfigMap. -
Añade los detalles del rol EKS vinculado a Amazon EMR on Service en la
mapRoles
sección deConfigMap
, debajo.data
Agregue esta sección si no existe todavía en el archivo. La secciónmapRoles
actualizada en datos es similar al siguiente ejemplo.apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::<your-account-id>:role/AWSServiceRoleForAmazonEMRContainers username: emr-containers - ... <other previously existing role entries, if there's any>.
-
Guarde el archivo y salga del editor de texto.
-