Otorgar AWS Resilience Hub acceso a los recursos de su clúster de Amazon EKS - AWS Centro de resiliencia

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.

Otorgar AWS Resilience Hub acceso a los recursos de su clúster de Amazon EKS

AWS Resilience Hub le permite acceder a los recursos ubicados en los clústeres de Amazon EKS siempre que haya configurado los permisos necesarios.

Para conceder los permisos necesarios AWS Resilience Hub para descubrir y evaluar los recursos del clúster Amazon EKS
  1. Configure un rol de IAM para acceder al clúster de Amazon EKS.

    Si ha configurado la aplicación mediante el acceso basado en roles, puede omitir este paso y continuar con el paso 2 y usar el rol que utilizó para crear la aplicación. Para obtener más información acerca de cómo AWS Resilience Hub utiliza roles de IAM, consulte Cómo funciona AWS Resilience Hub con IAM.

    Si ha configurado la aplicación con los permisos de usuario de IAM actuales, debe crear el rol de IAM AwsResilienceHubAssessmentEKSAccessRole en la misma cuenta que la del clúster de Amazon EKS. Este rol de IAM se utilizará entonces al acceder a su clúster de Amazon EKS.

    Al importar y evaluar su aplicación, AWS Resilience Hub utiliza una función de IAM para acceder a los recursos de su clúster de Amazon EKS. Esta función debe crearse en la misma cuenta que su clúster de Amazon EKS y se asignará a un grupo de Kubernetes que incluya los permisos necesarios AWS Resilience Hub para evaluar su clúster de Amazon EKS.

    Si su clúster de Amazon EKS está en la misma cuenta que la cuenta de AWS Resilience Hub llamada, el rol debe crearse mediante la siguiente política de confianza de IAM. En esta política de confianza de IAM, caller_IAM_role se utiliza en la cuenta corriente para solicitar las API. AWS Resilience Hub

    nota

    caller_IAM_roleEs el rol que está asociado a su cuenta AWS de usuario.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/caller_IAM_role" }, "Action": "sts:AssumeRole" } ] }

    Si su clúster de Amazon EKS está en una cuenta cruzada (una cuenta diferente AWS Resilience Hub a la cuenta de llamada), debe crear el rol de AwsResilienceHubAssessmentEKSAccessRole IAM mediante la siguiente política de confianza de IAM:

    nota

    Como requisito previo, para acceder al clúster de Amazon EKS que está desplegado en una cuenta diferente a la cuenta del AWS Resilience Hub usuario, debe configurar el acceso a varias cuentas. Para obtener más información, consulte

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/AwsResilienceHubExecutorRole" }, "Action": "sts:AssumeRole" } ] }
  2. Cree ClusterRole ClusterRoleBinding (oRoleBinding) roles para la AWS Resilience Hub aplicación.

    Creando ClusterRole y ClusterRoleBinding concediendo los permisos de solo lectura necesarios AWS Resilience Hub para analizar y evaluar los recursos que forman parte de determinados espacios de nombres de su clúster de Amazon EKS.

    AWS Resilience Hub le permite limitar su acceso a sus espacios de nombres para generar evaluaciones de resiliencia realizando una de las siguientes acciones:

    1. Conceder a la aplicación de AWS Resilience Hub acceso de lectura a todos los espacios de nombres.

      AWS Resilience Hub Para evaluar la resiliencia de los recursos en todos los espacios de nombres de un clúster de Amazon EKS, debe crear los siguientes y. ClusterRole ClusterRoleBinding

      • resilience-hub-eks-access-cluster-role(ClusterRole): define los permisos necesarios AWS Resilience Hub para evaluar su clúster de Amazon EKS.

      • resilience-hub-eks-access-cluster-role-binding (ClusterRoleBinding): define un grupo denominado resilience-hub-eks-access-group en su clúster de Amazon EKS que concede a sus usuarios los permisos necesarios para ejecutar evaluaciones de resiliencia en AWS Resilience Hub.

      La plantilla para conceder a la aplicación de AWS Resilience Hub acceso de lectura en todos los espacios de nombres es la siguiente:

      cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers - nodes verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
    2. AWS Resilience Hub Otorga el acceso para leer espacios de nombres específicos.

      Puede limitar el acceso AWS Resilience Hub a los recursos dentro de un conjunto específico de espacios de nombres utilizando. RoleBinding Para ello, debe crear los siguientes roles:

      • ClusterRole— Para acceder AWS Resilience Hub a los recursos en espacios de nombres específicos dentro de un clúster de Amazon EKS y evaluar su resiliencia, debe crear las siguientes funciones. ClusterRole

        • resilience-hub-eks-access-cluster-role: especifica los permisos necesarios para evaluar los recursos dentro de espacios de nombres específicos.

        • resilience-hub-eks-access-global-cluster-role— Especifica los permisos necesarios para evaluar los recursos con ámbito de clúster, que no están asociados a un espacio de nombres específico, dentro de sus clústeres de Amazon EKS. AWS Resilience Hub requiere permisos para acceder a los recursos del ámbito del clúster (como los nodos) de su clúster de Amazon EKS a fin de evaluar la resiliencia de la aplicación.

        La plantilla para crear el rol de ClusterRole es la siguiente:

        cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-global-cluster-role rules: - apiGroups: - "" resources: - nodes verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates verbs: - get - list --- EOF
      • RoleBindingrol: este rol otorga los permisos necesarios para acceder AWS Resilience Hub a los recursos dentro de espacios de nombres específicos. Es decir, debes crear un RoleBinding rol en cada espacio de nombres para poder acceder AWS Resilience Hub a los recursos dentro del espacio de nombres determinado.

        nota

        Si utiliza ClusterAutoscaler para el ajuste de escala automático, también debe crear RoleBinding en el kube-system. Esto es necesario para evaluar su ClusterAutoscaler, que forma parte del espacio de nombres de kube-system.

        De este modo, concederá AWS Resilience Hub los permisos necesarios para evaluar los recursos dentro del espacio de kube-system nombres mientras evalúa su clúster de Amazon EKS.

        La plantilla para crear el rol de RoleBinding es la siguiente:

        cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding namespace: <namespace> subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
      • ClusterRoleBindingrol: este rol otorga los permisos necesarios para acceder AWS Resilience Hub a los recursos del ámbito del clúster.

        La plantilla para crear el rol de ClusterRoleBinding es la siguiente:

        cat << EOF | kubectl apply -f - --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-global-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-global-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
  3. Actualice aws-auth ConfigMap para asignar el resilience-hub-eks-access-group al rol de IAM utilizado para acceder al clúster de Amazon EKS.

    Este paso crea una asignación entre el rol de IAM utilizado en el paso 1 y el grupo de Kubernetes creado en el paso 2. Esta asignación otorga permisos a los roles de IAM para acceder a los recursos del clúster de Amazon EKS.

    nota
    • ROLE-NAME hace referencia al rol de IAM que se utiliza para acceder al clúster de Amazon EKS.

      • Si la aplicación está configurada para usar el acceso basado en roles, el rol debe ser el rol de invocador o el rol de cuenta secundaria al que se transfiere al crear la aplicación. AWS Resilience Hub

      • Si su aplicación está configurada para utilizar el usuario de IAM actual para acceder a los recursos, debe ser el de AwsResilienceHubAssessmentEKSAccessRole.

    • ACCOUNT-IDdebe ser el ID de AWS cuenta del clúster de Amazon EKS.

    Puede crear el aws-auth ConfigMap utilizando una de las siguientes maneras:

    • Uso de eksctl

      Use el siguiente comando para actualizar el aws-auth ConfigMap:

      eksctl create iamidentitymapping \ --cluster <cluster-name> \ --region=<region-code> \ --arn arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>\ --group resilience-hub-eks-access-group \ --username AwsResilienceHubAssessmentEKSAccessRole
    • Puede editar manualmente aws-auth ConfigMap añadiendo los datos del rol de IAM a la sección mapRoles de los datos secundarios de ConfigMap. Utilice el siguiente comando para editar el archivo aws-auth ConfigMap.

      kubectl edit -n kube-system configmap/aws-auth

      La sección mapRoles consta de los siguientes parámetros:

      • rolearn: el nombre de recurso de Amazon (ARN) del rol de IAM que se agregará.

        • Sintaxis del ARN: arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>.

      • username: nombre del usuario de Kubernetes al que se mapea el rol de IAM (AwsResilienceHubAssessmentEKSAccessRole).

      • groups: los nombres de los grupos deben coincidir con los nombres de los grupos creados en el Paso 2 (resilience-hub-eks-access-group).

      nota

      Si la sección mapRoles no existe, debe añadirla manualmente.

      Utilice la siguiente plantilla para añadir la información del rol de IAM a la sección mapRoles de los datos secundarios de ConfigMap.

      - groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME> username: AwsResilienceHubAssessmentEKSAccessRole