

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.

# `AWSSupport-TroubleshootEKSALBControllerIssues`
<a name="automation-awssupport-troubleshoot-eks-alb-controller-issues"></a>

 **Descripción** 

 El manual de `AWSSupport-TroubleshootEKSALBControllerIssues` automatización ayuda a diagnosticar problemas comunes que impiden que el AWS Load Balancer Controller aprovisione y gestione correctamente el Application Load Balancer (ALB) y el Network Load Balancer (NLB) para las entradas y los servicios de Kubernetes. 

 Este manual end-to-end valida los componentes esenciales, como la configuración del proveedor de identidad del OIDC, la configuración del IRSA, los requisitos previos de red, la configuración y las cuotas de recursos. ingress/service También recopila los registros de los controladores y las configuraciones de recursos de Kubernetes relevantes para ayudar a identificar errores de configuración o problemas operativos. 

**importante**  
Este manual de automatización está diseñado para clústeres de Amazon EKS que utilizan grupos de nodos de Amazon Elastic Compute Cloud (Amazon EC2) (Amazon EC2) y actualmente no admite clústeres en ejecución. AWS Fargate

 **¿Cómo funciona?** 

 El manual de ejecución `AWSSupport-TroubleshootEKSALBControllerIssues` lleva a cabo los siguientes pasos de alto nivel: 
+ Valida el estado del clúster de Amazon EKS, la configuración de entrada de acceso y la configuración del proveedor de OIDC.
+ Crea un proxy Lambda temporal para la comunicación de la API de Kubernetes.
+ Comprueba la implementación del AWS Load Balancer Controller y la configuración de la cuenta de servicio.
+ Verifica la identidad del pod, el webhook y la inyección de roles de IAM.
+ Valida la configuración y el etiquetado de subredes para el aprovisionamiento de Application Load Balancer y Network Load Balancer.
+ Compara las cuotas de las cuentas de Application Load Balancer y Network Load Balancer con el uso actual.
+ Valida las anotaciones de los recursos de entrada y servicio.
+ Comprueba el etiquetado de los grupos de seguridad del nodo de trabajo para la integración del balanceador de carga.
+ Recopila los registros de los módulos del controlador para realizar diagnósticos.
+ Limpia los recursos de autenticación temporales.
+ Genera un informe de diagnóstico con los hallazgos y los pasos de remediación.

**nota**  
El clúster de Amazon EKS debe tener una entrada de acceso configurada para la entidad de IAM que ejecuta esta automatización. El modo de autenticación del clúster debe estar configurado en `API` o`API_AND_CONFIG_MAP`. Sin una configuración de entrada de acceso adecuada, la automatización finalizará durante la validación inicial.
El `LambdaRoleArn` parámetro es obligatorio y debe tener las políticas AWS administradas `AWSLambdaBasicExecutionRole` y `AWSLambdaVPCAccessExecutionRole` adjuntadas para permitir que la función de proxy se comunique con la API de Kubernetes.
El controlador AWS Load Balancer debe ser de una versión `v2.1.1` o posterior.
La automatización incluye un paso de limpieza que elimina los recursos temporales de la infraestructura de autenticación. Este paso de limpieza se ejecuta incluso cuando los pasos anteriores fallan, lo que garantiza que no queden recursos huérfanos en su cuenta. AWS 

 [Ejecuta esta automatización (consola)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSALBControllerIssues) 

**Tipo de documento**

Automatización

**Propietario**

Amazon

**Plataformas**

/

**Permisos de IAM necesarios**

El parámetro `AutomationAssumeRole` requiere las siguientes acciones para utilizar el manual de procedimientos correctamente.
+ `cloudformation:CreateStack`
+ `cloudformation:DeleteStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:UpdateStack`
+ `ec2:CreateNetworkInterface`
+ `ec2:DeleteNetworkInterface`
+ `ec2:DescribeInstances`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `eks:DescribeCluster`
+ `eks:ListAssociatedAccessPolicies`
+ `elasticloadbalancing:DescribeAccountLimits`
+ `elasticloadbalancing:DescribeLoadBalancers`
+ `iam:GetRole`
+ `iam:ListOpenIDConnectProviders`
+ `iam:PassRole`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunction`
+ `lambda:InvokeFunction`
+ `lambda:ListTags`
+ `lambda:TagResource`
+ `lambda:UntagResource`
+ `lambda:UpdateFunctionCode`
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:DescribeLogGroups`
+ `logs:DescribeLogStreams`
+ `logs:ListTagsForResource`
+ `logs:PutLogEvents`
+ `logs:PutRetentionPolicy`
+ `logs:TagResource`
+ `logs:UntagResource`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`
+ `tag:GetResources`
+ `tag:TagResources`

 **Instrucciones** 

Siga estos pasos para configurar y ejecutar la automatización:

**nota**  
Antes de ejecutar la automatización, siga estos pasos para configurar las funciones de IAM necesarias: una para que Systems Manager Automation ejecute el runbook y otra para que Lambda se comunique con la API de Kubernetes:  
Cree un rol de automatización de SSM en su cuenta. `TroubleshootEKSALBController-SSM-Role` Verifique que la relación de confianza contiene la siguiente política.  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Sid": "",
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "ssm.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }
   ```
Adjunta la siguiente política de IAM para conceder los permisos necesarios:  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [{
                   "Sid": "TroubleshootEKSALBControllerIssuesActions",
                   "Effect": "Allow",
                   "Action": [
                       "eks:DescribeCluster",
                       "eks:ListAssociatedAccessPolicies",
                       "iam:GetRole",
                       "iam:ListOpenIDConnectProviders",
                       "ssm:StartAutomationExecution",
                       "ssm:GetAutomationExecution",
                       "ssm:DescribeAutomationExecutions",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeRouteTables",
                       "elasticloadbalancing:DescribeLoadBalancers",
                       "elasticloadbalancing:DescribeAccountLimits",
                       "ec2:DescribeInstances",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeSecurityGroups"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "SetupK8sApiProxyForEKSActions",
                   "Effect": "Allow",
                   "Action": [
                       "cloudformation:CreateStack",
                       "cloudformation:DeleteStack",
                       "cloudformation:DescribeStacks",
                       "cloudformation:UpdateStack",
                       "ec2:CreateNetworkInterface",
                       "ec2:DeleteNetworkInterface",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeRouteTables",
                       "ec2:DescribeSecurityGroups",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeVpcs",
                       "eks:DescribeCluster",
                       "iam:GetRole",
                       "lambda:CreateFunction",
                       "lambda:DeleteFunction",
                       "lambda:GetFunction",
                       "lambda:InvokeFunction",
                       "lambda:ListTags",
                       "lambda:TagResource",
                       "lambda:UntagResource",
                       "lambda:UpdateFunctionCode",
                       "logs:CreateLogGroup",
                       "logs:CreateLogStream",
                       "logs:DescribeLogGroups",
                       "logs:DescribeLogStreams",
                       "logs:ListTagsForResource",
                       "logs:PutLogEvents",
                       "logs:PutRetentionPolicy",
                       "logs:TagResource",
                       "logs:UntagResource",
                       "ssm:DescribeAutomationExecutions",
                       "tag:GetResources",
                       "tag:TagResources"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "PassRoleToAutomation",
                   "Effect": "Allow",
                   "Action": "iam:PassRole",
                   "Resource": "*",
                   "Condition": {
                       "StringLikeIfExists": {
                           "iam:PassedToService": [
                               "lambda.amazonaws.com",
                               "ssm.amazonaws.com"
                           ]
                       }
                   }
               }]
           }
   ```
Configure la entrada de acceso para su clúster de Amazon EKS. Este es un requisito obligatorio para la automatización. Para ver los pasos para configurar el modo de autenticación de las entradas de acceso, consulte [Configurar las entradas de acceso](https://docs.aws.amazon.com//eks/latest/userguide/setting-up-access-entries.html).  
En la consola de Amazon EKS, navegue hasta el clúster y siga estos pasos:  
En la sección **Acceso**, compruebe que la configuración de autenticación esté establecida en `API` o`API_AND_CONFIG_MAP`.
Seleccione **Crear entrada de acceso** y configure:  
Para el *ARN principal de IAM*, seleccione el rol de IAM que creó (). `TroubleshootEKSALBController-SSM-Role`
En *Tipo*, seleccione `Standard`.
Agregue una política de acceso:  
En el *nombre de la política*, seleccione`AmazonEKSAdminViewPolicy`.
En *Alcance de acceso*, seleccione`Cluster`.
Elija **Add Policy (Agregar política)**.
Compruebe los detalles y seleccione **Crear**.
Cree una función de IAM para la función Lambda (referenciada `LambdaRoleArn` como en los parámetros de entrada):  
Cree un nuevo rol de IAM con la siguiente política de confianza:  

     ```
     {
                 "Version": "2012-10-17",		 	 	 
                 "Statement": [
                     {
                         "Effect": "Allow",
                         "Principal": {
                             "Service": "lambda.amazonaws.com"
                         },
                         "Action": "sts:AssumeRole"
                     }
                 ]
             }
     ```
Adjunte las siguientes políticas AWS gestionadas a este rol:  
`AWSLambdaBasicExecutionRole`
`AWSLambdaVPCAccessExecutionRole`
Anote el ARN de este rol, ya que lo necesitará para el parámetro de `LambdaRoleArn` entrada.

1. Navegue hasta [AWSSupport-TroubleshootEKSALBControllerIssues](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description)en la consola de AWS Systems Manager.

1. Elija **Ejecutar automatización**.

1. Para los parámetros de entrada, introduzca lo siguiente:
   + **AutomationAssumeRole (Opcional):**

     Tipo AWS::IAM::Role: :Arn

     Descripción: (opcional) El nombre del recurso de Amazon (ARN) del rol AWS Identity and Access Management (IAM) que permite a Systems Manager Automation realizar acciones en su nombre. Si no se especifica ningún rol, Systems Manager Automation utiliza los permisos del usuario que comienza este manual de procedimientos.

     Patrón permitido: ^arn :(? :aws\$1aws-cn\$1aws-us-gov) :iam::\$1 d \$112\$1 :role/? [A-zA-Z\$10-9\$1=, .@\$1 -\$1/] \$1\$1
   + **EksClusterName (Obligatorio):**

     Tipo: cadena

     Descripción: (obligatorio) Nombre del clúster de Amazon Elastic Kubernetes Service (Amazon EKS).

     Patrón permitido: ^ [0-9a-za-Z] [a-zA-Z0-9-\$1] \$10,99\$1 \$1
   + **ALBControllerDeploymentName (Opcional):**

     Tipo: cadena

     Descripción: (opcional) El nombre de la implementación del AWS Load Balancer Controller en el clúster de Amazon EKS. Por lo general, es «aws-load-balancer-controller», a menos que lo haya personalizado durante la instalación.

     Patrón permitido: ^ [a-z0-9] ([-.a-z0-9] \$10,251\$1 [a-z0-9])? \$1

     Predeterminado: aws-load-balancer-controller
   + **ALBControllerEspacio de nombres (opcional):**

     Tipo: cadena

     Descripción: (opcional) El espacio de nombres de Kubernetes donde se implementa el Load Balancer Controller AWS . De forma predeterminada, es «kube-system», pero puede ser diferente si has instalado el controlador en un espacio de nombres personalizado.

     Patrón permitido: ^ [a-z0-9] ([-a-z0-9] \$10,61\$1 [a-z0-9])? \$1

     Predeterminado: kube-system
   + **ServiceAccountName (Opcional):**

     Tipo: cadena

     Descripción: (opcional) El nombre de la cuenta de servicio de Kubernetes asociada al controlador del Load Balancer AWS . Suele ser «aws-load-balancer-controller», a menos que se personalice durante la instalación.

     Patrón permitido: ^ [a-z0-9] ([-.a-z0-9] \$10,251\$1 [a-z0-9])? \$1

     Predeterminado: aws-load-balancer-controller
   + **ServiceAccountNamespace (Opcional):**

     Tipo: cadena

     Descripción: (opcional) El espacio de nombres de Kubernetes donde se encuentra la cuenta de servicio del Load Balancer Controller AWS . Suele ser el «sistema kube», pero puede variar si has utilizado un espacio de nombres personalizado.

     Patrón permitido: ^ [a-z0-9] ([-a-z0-9] \$10,61\$1 [a-z0-9])? \$1

     Predeterminado: kube-system
   + **IngressName (Opcional):**

     Tipo: cadena

     Descripción: (opcional) Nombre del recurso de ingreso que se va a validar (Application Load Balancer). Si no se especifica, se omitirá la validación de ingreso.

     Patrón permitido: ^\$1\$1^ [a-z0-9] [a-z0-9.-] \$10,251\$1 [a-z0-9] \$1

     Predeterminado: «» (cadena vacía)
   + **IngressNamespace (Opcional):**

     Tipo: cadena

     Descripción: (opcional) Espacio de nombres del recurso de Ingress. Es obligatorio si se ha especificado `IngressName`.

     Patrón permitido: ^\$1\$1^ [a-z0-9] [a-z0-9-] \$10,61\$1 [a-z0-9] \$1

     Predeterminado: «» (cadena vacía)
   + **ServiceName (Opcional):**

     Tipo: cadena

     Descripción: (opcional) Nombre de un recurso de servicio específico para validar las anotaciones del Network Load Balancer (Network Load Balancer). Si no se especifica, se omitirá la validación de los recursos de servicio.

     Patrón permitido: ^\$1\$1^ [a-z0-9] [a-z0-9.-] \$10,251\$1 [a-z0-9] \$1

     Predeterminado: «» (cadena vacía)
   + **ServiceNamespace (Opcional):**

     Tipo: cadena

     Descripción: (opcional) Espacio de nombres del recurso de servicio. Es obligatorio si se ha especificado `ServiceName`.

     Patrón permitido: ^\$1\$1^ [a-z0-9] [a-z0-9-] \$10,61\$1 [a-z0-9] \$1

     Predeterminado: «» (cadena vacía)
   + **LambdaRoleArn (Obligatorio):**

     Tipo AWS::IAM::Role: :Arn

     Descripción: (obligatorio) El ARN de la función de IAM que permite a la función ( AWS Lambda Lambda) acceder a los servicios y recursos necesarios. AWS Asocie las políticas AWS gestionadas `AWSLambdaBasicExecutionRole` y, `AWSLambdaVPCAccessExecutionRole` a su función de IAM de ejecución de funciones lambda.

     Patrón permitido: ^arn :(? :aws\$1aws-cn\$1aws-us-gov) :iam::\$1 d \$112\$1 :role/? [A-zA-Z\$10-9\$1=, .@\$1 -\$1/] \$1\$1

1. Elija **Ejecutar**.

1. Se inicia la automatización.

1. Este documento realiza los siguientes pasos:

   1. **ValidateAccessEntryAndOIDCProvider:**

      Valida la configuración de IAM del clúster de Amazon EKS comprobando los permisos de entrada de acceso y la configuración del proveedor de OIDC.

   1. **Configuración K8: sAuthenticationClient**

      Ejecute el documento SAW AWSSupport-SetupK 8 sApiProxy FoREKs para configurar una función lambda que ejecute llamadas a la API de Amazon EKS en el clúster.

   1. **Verifique ALBController y: IRSASetup**

      Comprueba si la cuenta de servicio y el controlador Application Load Balancer determinados existen en sus respectivos espacios de nombres. Comprueba también la política de confianza y anotación de roles de cuentas de servicio del controlador Application Load Balancer.

   1. **VerifyPodIdentityWebhookAndEnv:**

      Comprueba si se pod-identity-webhook está ejecutando. También comprueba si el IRSA se inyecta en las variables ENV del módulo.

   1. **ValidateSubnetRequirements:**

      Compruebe al menos dos subredes en dos zonas de disponibilidad con 8 IP disponibles. Los balanceadores de carga cuentan con el etiquetado de subredes adecuado. public/private 

   1. **CheckLoadBalancerLimitsAndUsage:**

      Compare el límite de la cuenta con el número de Application Load Balancer y Network Load Balancer.

   1. **CheckIngressOrServiceAnnotations:**

      Comprueba las anotaciones y especificaciones correctas en los recursos de Ingress y Service para garantizar que estén configurados correctamente para el uso de Application Load Balancer y Network Load Balancer.

   1. **CheckWorkerNodeSecurityGroupTags:**

      Compruebe que exactamente un grupo de seguridad adjunto a los nodos de trabajo tenga la etiqueta de clúster requerida.

   1. **ALBControllerRegistros de captura:**

      Recupera los registros de diagnóstico más recientes de los pods del controlador AWS Load Balancer que se ejecutan en el clúster de Amazon EKS.

   1. **Limpiar K8: sAuthenticationClient**

      Ejecuta el documento SAW «AWSSupport-SetupK8 sApiProxy FoReks» mediante la operación de «Limpieza» para limpiar los recursos creados como parte de la automatización.

   1. **GenerateReport:**

      Genera el informe de automatización.

1. Una vez finalizada la ejecución, revise la sección de resultados para ver los resultados detallados de la ejecución:

   1. **Informe:**

      Proporciona un resumen completo de todas las comprobaciones realizadas, incluido el estado del clúster de Amazon EKS, la configuración de Application Load Balancer Controller, la configuración de IRSA, los requisitos de subred, los límites del balanceador de carga, ingress/service las anotaciones, las etiquetas de los grupos de seguridad del nodo de trabajo y los registros del Application Load Balancer Controller. También incluye los problemas identificados y las medidas de corrección recomendadas.

**Referencias**

Automatización de Systems Manager
+ [Ejecuta esta automatización (consola)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description)
+ [Ejecución de una automatización](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Configuración de la automatización](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Flujos de trabajo de automatización de Support](https://aws.amazon.com/premiumsupport/technology/saw/)

Documentación relacionada con el controlador AWS Load Balancer
+ [AWS Controlador Load Balancer](https://docs.aws.amazon.com//eks/latest/userguide/aws-load-balancer-controller.html)
+ [Configuración de entradas de acceso](https://docs.aws.amazon.com//eks/latest/userguide/setting-up-access-entries.html)