Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo utilizo AWS Load Balancer Controller para configurar un equilibrador de carga de aplicación en un grupo de nodos de Amazon EC2 en Amazon EKS?
Quiero usar AWS Load Balancer Controller para configurar un equilibrador de carga de aplicación en un grupo de nodos de Amazon Elastic Compute Cloud (Amazon EC2) en Amazon Elastic Kubernetes Service (Amazon EKS).
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Requisito previo: Configura las subredes para permitir el acceso saliente a Internet desde tus nodos de trabajo. AWS Load Balancer Controller requiere una conexión a Internet saliente.
Para desplegar AWS Load Balancer Controller en AWS Fargate, consulta ¿Cómo puedo configurar AWS Load Balancer Controller en un clúster de Amazon EKS para Fargate?
Etiquetado de las subredes
Etiqueta las subredes de Amazon Virtual Private Cloud (Amazon VPC) de tu clúster de Amazon EKS. Después de etiquetar las subred, AWS Load Balancer Controller detecta automáticamente las subredes al crear el recurso de equilibrador de carga de aplicación.
En el caso de los equilibradores de carga de aplicación públicos, debes tener al menos dos subredes públicas en la VPC del clúster con la etiqueta kubernetes.io/role/elb.
En el caso de los equilibradores de carga de aplicación privados, debes tener al menos dos subredes privadas en la VPC del clúster con la etiqueta kubernetes.io/role/internal-elb.
Creación de un proveedor de identidades de OIDC
Utiliza la consola de Amazon EKS, la AWS CLI o eksctl para crear un proveedor de identidades de OIDC que pueda usarse con los roles de AWS Identity and Access Management (IAM) para cuentas de servicio (IRSA).
Consola de Amazon EKS
Para usar la consola, consulta Creación de un proveedor de OIDC (Consola de AWS).
AWS CLI
Busca la huella digital de la autoridad de certificación (CA) raíz que usa tu clúster. A continuación, ejecuta el siguiente comando create-open-id-connect-provider:
ISSUER_URL=$(aws eks describe-cluster --name cluster-name \ --query "cluster.identity.oidc.issuer" --region region-name --output text)aws iam create-open-id-connect-provider \ --url ${ISSUER_URL} \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region region-name
Nota: Sustituye cluster-name por el nombre de tu clúster, region-name por tu región de AWS y ca-thumbprint por la huella digital de tu certificado de CA raíz.
eksctl
Para usar la herramienta de la línea de comandos eksctl, consulta Creación de un proveedor de OIDC (eksctl).
Creación de una política de IAM
Crea una política de IAM que permita a AWS Load Balancer Controller realizar llamadas a las API de AWS.
Importante: Se recomienda usar IRSA al conceder acceso a las API de AWS.
Sigue estos pasos:
-
Ejecuta uno de los siguientes comandos en función de tu región para descargar una política de IAM para AWS Load Balancer Controller desde GitHub.
Para todas las regiones, excepto las regiones de China de Pekín y Ningxia, ejecuta el siguiente comando describe-cluster:ISSUER_URL= aws eks describe-cluster --name example-cluster-name \ --query "cluster.identity.oidc.issuer" --region example-region-name --output text aws iam create-open-id-connect-provider \ --url example-issuer-url \ --thumbprint-list ca-thumbprint \ --client-id-list sts.amazonaws.com \ --region example-region-nameNota: Sustituye example-cluster-name por el nombre de tu clúster, example-region-name por tu región y example-issuer-url por la URL del emisor.
Para las regiones de China de Pekín y Ningxia, ejecuta el siguiente comando curl:curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json -
Ejecuta el siguiente comando create-policy para crear una política de IAM denominada AWSLoadBalancerControllerIAMPolicy para el perfil de instancia de tu nodo de trabajo:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json -
Anota el nombre de recurso de Amazon (ARN) de la política que devuelve el comando.
-
Utiliza el rol de IAM existente o crea un nuevo rol de IAM para AWS Load Balancer Controller.
Nota: Para crear un rol de IAM coneksctl, utiliza el parámetro --attach-policy-arn con el ARN de la política de IAM AWSLoadBalancerControllerIAMPolicy. -
Ejecuta el siguiente comando attach-role-policy para adjuntar AWSLoadBalancerControllerIAMPolicy a tu rol de IAM:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \--role-name role-name**Nota:**Sustituye 111122223333 por tu ID de cuenta de AWS y rolen-name por tu nombre de rol de IAM.
Implementación de AWS Load Balancer Controller
Sigue estos pasos:
-
Comprueba que dispones de la etiqueta necesaria para el equilibrador de carga asociado a las subredes.
-
Ejecuta el siguiente comando con Kubernetes 1.16 o una versión posterior para instalar cert-manager:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/example-version/cert-manager.yaml -
En el archivo de manifiesto que descargaste de GitHub, ejecuta el siguiente comando:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/example-version/v2_13_3_full.yamlNota: Sustituye example-version por la versión de AWS Load Balancer Controller que quieras implementar. Para verificar la versión de AWS Load Balancer Controller, consulta Kubernetes SIGs en el sitio web de GitHub. Asegúrate de modificar el nombre del archivo para que coincida con tu versión. En el ejemplo de código anterior, v2_13_3_full.yaml coincide con la versión 2.13.3 de AWS Load Balancer Controller. Para obtener más información, consulta aws-load-balancer-controller en el sitio web de GitHub.
-
Realiza las siguientes actualizaciones en la sección ServiceAccount del archivo .yaml:
spec: containers: - args: - --cluster-name=example-cluster-name - --ingress-class=albNota: Sustituye example-cluster-name por el nombre de tu clúster.
En el siguiente ejemplo, 111122223333 es el ID de cuenta y example-role-name es el nombre del rol de IAM:apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/example-role-name name: aws-load-balancer-controller namespace: kube-system -
Ejecute el siguiente comando para implementar AWS Load Balancer Controller:
kubectl apply -f ingress-controller.yaml
Implementación de una aplicación de muestra
Implementa una aplicación de muestra para comprobar que AWS Load Balancer Controller crea un equilibrador de carga de aplicación público debido al objeto entrante.
Sigue estos pasos:
-
Ejecuta el siguiente comando para implementar un juego llamado 2048:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlNota: Sustituye example-version por la versión de AWS Load Balancer Controller que quieras implementar. Para verificar la versión de AWS Load Balancer Controller, consulta Kubernetes SIGs en el sitio web de GitHub.
-
Tras unos minutos, ejecuta el siguiente comando para comprobar que Kubernetes ha creado el recurso entrante:
kubectl get ingress/ingress-2048 -n game-2048Resultado de ejemplo:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s -
Si Kubernetes no crea tu recurso entrante, ejecuta el siguiente comando para revisar los registros de AWS Load Balancer Controller en busca de mensajes de error de implementación:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller -
Para ver el juego, abre un navegador web y, a continuación, introduce la dirección URL del resultado del paso 2.
-
Para eliminar el juego, ejecuta el siguiente comando:
kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/example-version/docs/examples/2048/2048_full.yamlNota: Sustituye example-version por la versión de AWS Load Balancer Controller que quieras implementar.
- Temas
- Containers
- Etiquetas
- Amazon Elastic Kubernetes Service
- Idioma
- Español

Contenido relevante
- preguntada hace 8 meses
- preguntada hace un mes
- preguntada hace 3 meses
- preguntada hace un mes
- preguntada hace 7 meses