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.
Configuración del clúster de Amazon EKS y cree los recursos de IAM necesarios para permitir que una cuenta de servicio de Amazon EKS se conecte a la tabla de Amazon Keyspaces
-
Cree un proveedor de Open ID Connect (OIDC) para el clúster de Amazon EKS. Esto es necesario para utilizar los roles de IAM en las cuentas de servicio. Para obtener más información sobre los proveedores de OIDC y cómo crearlos, consulte Creación de un proveedor de OIDC de IAM para su clúster en la Guía del usuario de Amazon EKS.
Cree un proveedor de identidad de OIDC de IAM para su clúster con el siguiente comando. Este ejemplo asume que el nombre del clúster es
my-eks-cluster
. Si tiene un clúster con un nombre diferente, recuerde actualizar el nombre en todos los comandos futuros.eksctl utils associate-iam-oidc-provider --cluster
my-eks-cluster
--approveConfirme que el proveedor de identidades de OIDC se haya registrado en IAM con el siguiente comando.
aws iam list-open-id-connect-providers --region
aws-region
La salida debería ser similar a la siguiente. Tome nota del nombre de recurso de Amazon (ARN) del OIDC. Lo necesitará en el siguiente paso al crear una política de confianza para la cuenta de servicio.
{ "OpenIDConnectProviderList": [ .. { "Arn": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" } ] }
-
Cree una cuenta de servicio para el clúster de Amazon EKS. Las cuentas de servicio proporcionan una identidad para los procesos que se ejecutan en un Pod. Un pod es el objeto de Kubernetes más pequeño y sencillo que puede utilizar para implementar una aplicación en contenedores. A continuación, cree un rol de IAM que la cuenta de servicio pueda asumir para obtener permisos de acceso a los recursos. Puede acceder a cualquier servicio de AWS desde un pod que se haya configurado para usar una cuenta de servicio que pueda asumir un rol de IAM con permisos de acceso a ese servicio.
Cree un nuevo espacio de nombres para la cuenta de servicio. Un espacio de nombres ayuda a aislar los recursos del clúster creados para este tutorial. Puede crear un nuevo espacio de nombres con el siguiente comando.
kubectl create namespace
my-eks-namespace
Para usar un espacio de nombres personalizado, debe asociarlo a un perfil de Fargate. El siguiente código es un ejemplo de ello.
eksctl create fargateprofile \ --cluster
my-eks-cluster
\ --namemy-fargate-profile
\ --namespacemy-eks-namespace
\ --labels*
=*
Cree una cuenta de servicio con el nombre
my-eks-serviceaccount
en el espacio de nombresmy-eks-namespace
para su clúster de Amazon EKS mediante el siguiente comando.cat >my-serviceaccount.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: my-eks-serviceaccount namespace: my-eks-namespace EOF kubectl apply -f my-serviceaccount.yaml
Ejecute el siguiente comando para crear una política de confianza que indique al rol de IAM que debe confiar en su cuenta de servicio. Esta relación de confianza es necesaria antes de que una entidad principal pueda asumir un rol. Debe realizar las siguientes modificaciones en el archivo:
Para
Principal
, introduzca el ARN que IAM devolvió al ejecutar el comandolist-open-id-connect-providers
. El ARN contiene su número de cuenta y su región.En la instrucción
condition
, sustituya la Región de AWS y el identificador de OIDC.Confirme que el nombre y el espacio de nombres de la cuenta de servicio sean correctos.
Debe asociar el archivo de política de confianza en el siguiente paso al crear el rol de IAM.
cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:my-eks-namespace
:my-eks-serviceaccount
", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com" } } } ] } EOFOpcional: también puede agregar varias entradas en las condiciones
StringEquals
yStringLike
para permitir que varias cuentas de servicio o espacios de nombres asuman el rol. Para permitir que su cuenta de servicio asuma un rol de IAM en otra cuenta de AWS diferente, consulte Permisos de IAM entre cuentas en la Guía del usuario de Amazon EKS.
-
Cree un rol de IAM con el nombre
my-iam-role
para que lo asuma la cuenta de servicio de Amazon EKS. Asocie el archivo de política de confianza creado en el último paso al rol. La política de confianza especifica la cuenta de servicio y el proveedor de OIDC en los que puede confiar el rol de IAM.aws iam create-role --role-name
my-iam-role
--assume-role-policy-document file://trust-relationship.json --description "EKS service account role" -
Asigne al rol de IAM permisos para Amazon Keyspaces mediante la asociación de una política de acceso.
Asocie una política de acceso para definir las acciones que el rol de IAM puede realizar en recursos específicos de Amazon Keyspaces. Para este tutorial utilizamos la política administrada de AWS
AmazonKeyspacesFullAccess
, ya que nuestra aplicación escribirá datos en la tabla de Amazon Keyspaces. Sin embargo, como práctica recomendada, se recomienda crear políticas de acceso personalizadas que implementen el principio de privilegios mínimos. Para obtener más información, consulte Cómo funciona Amazon Keyspaces con IAM.aws iam attach-role-policy --role-name
my-iam-role
--policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccessConfirme que la política se haya asociado correctamente al rol de IAM con la siguiente instrucción.
aws iam list-attached-role-policies --role-name
my-iam-role
La salida debería tener este aspecto.
{ "AttachedPolicies": [ { "PolicyName": "AmazonKeyspacesFullAccess", "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess" } ] }
Anote en la cuenta de servicio el nombre de recurso de Amazon (ARN) del rol de IAM que puede asumir. Asegúrese de actualizar el ARN del rol con su ID de cuenta.
kubectl annotate serviceaccount -n
my-eks-namespace
my-eks-serviceaccount
eks.amazonaws.com/role-arn=arn:aws:iam::111122223333
:role/my-iam-role
Confirme que el rol de IAM y la cuenta de servicio se hayan configurado correctamente.
Confirme que la política de confianza del rol de IAM se haya configurado correctamente con la siguiente instrucción.
aws iam get-role --role-name
my-iam-role
--query Role.AssumeRolePolicyDocumentLa salida debería ser similar a la siguiente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.
aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region
/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.aws-region
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount" } } } ] }Confirme que en la cuenta de servicio de Amazon EKS se haya anotado el rol de IAM.
kubectl describe serviceaccount
my-eks-serviceaccount
-nmy-eks-namespace
La salida debería ser similar a la siguiente.
Name: my-eks-serviceaccount Namespace:my-eks-namespace Labels: <none> Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role Image pull secrets: <none> Mountable secrets: <none> Tokens: <none> [...]
Tras crear la cuenta de servicio de Amazon EKS y el rol de IAM, y tras configurar las relaciones y los permisos necesarios, continúe con Paso 2: configuración de la aplicación.