Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
¿Cómo configuro un equilibrador de carga de aplicación mediante el AWS Load Balancer Controller en un grupo de nodos de Amazon EC2 en Amazon EKS?
Quiero configurar un equilibrador de carga de aplicación mediante el AWS Load Balancer Controller en un grupo de nodos de Amazon Elastic Compute Cloud (Amazon EC2) en Amazon Elastic Kubernetes Service (Amazon EKS).
Descripción breve
Conecte el AWS Load Balancer Controller a uno de los siguientes puntos de enlace de servicio de AWS:
- AWS Identity and Access Management (IAM)
- Amazon EC2
- AWS Certificate Manager (ACM)
- Elastic Load Balancing (ELB)
- Amazon Cognito
- AWS WAF
- AWS Shield
Para que AWS Load Balancer Controller funcione, debe disponer de una conexión a Internet de salida. Para obtener más información, consulte ¿Cómo puedo configurar mis subredes para un clúster de Amazon EKS?
Para desplegar el AWS Load Balancer Controller en AWS Fargate, consulte ¿Cómo puedo configurar AWS Load Balancer Controller en un clúster de Amazon EKS para Fargate y desplegar luego el juego 2048?
Resolución
Etiquetado de las subredes para permitir la detección automática
Etiquete las subredes de Amazon Virtual Private Cloud (Amazon VPC) de su clúster de Amazon EKS. Esto permite que el AWS Load Balancer Controller descubra 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, debe tener al menos dos subredes públicas en la VPC del clúster con las siguientes etiquetas:
kubernetes.io/role/elb
En el caso de los equilibradores de carga de aplicación internos, debe tener al menos dos subredes privadas en la VPC del clúster con las siguientes etiquetas:
kubernetes.io/role/internal-elb
Creación de un proveedor de identidades de OIDC para su clúster
Utilice eksctl o la Consola de administración de AWS para crear un proveedor de identidades de OpenID Connect (OIDC) para usarlo con los roles de IAM para las cuentas de servicio.
Nota: Si se muestran errores al ejecutar comandos de la interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Alternativamente, utilice la AWSL CLI para crear un proveedor de identidades de OIDC para su clúster. Por ejemplo:
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: Sustituya cluster-name por el nombre de su clúster, region-name con su región de AWS y ca-thumbprint por la huella digital de su certificado de CA raíz. Puede obtener la huella digital del certificado de CA raíz que usa su clúster con oidc.eks.region-name.amazonaws.com.
Creación de una política de IAM para el AWS Load Balancer Controller
La política de Amazon EKS que crea permite al AWS Load Balancer Controller realizar llamadas a las API de AWS. Se recomienda utilizar los roles de AWS IAM para las cuentas de servicio al conceder acceso a las API de AWS.
-
Descargue una política de IAM para el AWS Load Balancer Controller desde GitHub. Ejecute uno de los siguientes comandos, según su región.
Todas las regiones excepto las de China: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
Regiones de Beijing y Ningxia, China:
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_cn.json
-
Para crear una política de IAM denominada AWSLoadBalancerControlleriamPolicy para su perfil de instancia de nodo de trabajo, ejecute el siguiente comando:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam-policy.json
-
Anote el ARN de la política que se muestra en el resultado.
-
Utilice el rol de IAM existente o cree un nuevo rol de IAM para el AWS Load Balancer Controller.
Nota: Para crear un rol de IAM coneksctl, utilice el parámetro --attach-policy-arn con el ARN de la política de IAM AWSLoadBalancerControlleriamPolicy. -
Para adjuntar AWSLoadBalancerControllerIAMPolicy a los roles de IAM, ejecute el siguiente comando:
aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --role-name role-name
**Nota:**Sustituya 111122223333 con su ID de cuenta de AWS y su nombre de rol por su nombre de rol de IAM.
Despliegue del AWS Load Balancer Controller
-
Compruebe que dispone de las etiquetas necesarias para el equilibrador de carga asociado a las subredes.
-
Instale cert-manager para poder inyectar la configuración del certificado en los webhooks. Utilice Kubernetes 1.16 o una versión posterior para ejecutar el siguiente comando:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/$VERSION/cert-manager.yaml
-
En el archivo de manifiesto que descargó de GitHub, ejecute el siguiente comando:
curl -Lo ingress-controller.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/$VERSION/v2_6_2_full.yaml
Nota: Sustituya $VERSION por la versión del AWS Load Balancer Controller que quiera desplegar y modifique el nombre del archivo, por ejemplo, v2_6_2_full.yaml para la versión 2.6.2. Para obtener más información, consulte el repositorio de Kubernetes en GitHub.
-
Edite cluster-name para su clúster. Por ejemplo:
spec: containers: - args: - --cluster-name=your-cluster-name # edit the cluster name - --ingress-class=alb
-
Actualice únicamente la sección ServiceAccount del archivo. Por ejemplo:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller annotations: # Add the annotations line eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/role-name # Add the IAM role name: aws-load-balancer-controller namespace: kube-system
Nota: Sustituya 111122223333 por su ID de cuenta y role-name por el nombre de su rol de IAM.
-
Para desplegar el AWS Load Balancer Controller, ejecute el siguiente comando:
kubectl apply -f ingress-controller.yaml
Despliegue de una aplicación de ejemplo para probar el AWS Load Balancer Controller
Despliegue una aplicación de ejemplo para comprobar que AWS Load Balancer Controller crea un equilibrador de carga de aplicación público debido al objeto Ingress.
- Para desplegar un juego llamado 2048 como aplicación de ejemplo, ejecute el siguiente comando:
Nota: Sustituya $VERSION por la versión (del sitio GitHub de Kubernetes SIG) del AWS Load Balancer Controller que desee desplegar.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
- Para comprobar que el recurso Ingress se haya creado, espere unos minutos y, a continuación, ejecute el siguiente comando:
Se mostrará un resultado parecido al del siguiente ejemplo:kubectl get ingress/ingress-2048 -n game-2048
NAME CLASS HOSTS ADDRESS PORTS AGEingress-2048 <none> * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.us-west-2.elb.amazonaws.com 80 2m32s
- Si el Ingress no se crea después de varios minutos, ejecute el siguiente comando para ver los registros del AWS Load Balancer Controller:
Nota: Los registros del AWS Load Balancer Controller suelen mostrar mensajes de error para ayudarle a solucionar problemas relacionados con el despliegue.kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
- Para ver la aplicación de ejemplo, abra un navegador web y, a continuación, vaya a la dirección URL del resultado del paso 2.
- Para limpiar la aplicación de ejemplo, ejecute el siguiente comando:
Nota: Sustituya $VERSION por la versión (del sitio GitHub de Kubernetes SIG) del AWS Load Balancer Controller que desee desplegar.kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$VERSION/docs/examples/2048/2048_full.yaml
Información relacionada

Contenido relevante
- preguntada hace 3 meseslg...
- preguntada hace 22 díaslg...
- preguntada hace 3 meseslg...
- preguntada hace 18 díaslg...
- Respuesta aceptadapreguntada hace 18 díaslg...
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año