Ayude a mejorar esta página
¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.
Instalación de AWS Load Balancer Controller con manifiestos
En este tema, se describe cómo instalar el controlador mediante la descarga y la aplicación de los manifiestos de Kubernetes. Puede ver la documentación
En los siguientes pasos, reemplace
por sus propios valores.example values
Requisitos previos
Antes de comenzar este tutorial, debe instalar y configurar las siguientes herramientas y recursos que necesitará para crear y administrar un clúster de Amazon EKS.
-
Un clúster existente de Amazon EKS. Para implementar uno, consulte Introducción a Amazon EKS.
-
Un proveedor OpenID Connect (OIDC) de AWS Identity and Access Management (IAM) existente para el clúster. Para determinar si ya tiene un proveedor o para crear uno, consulte Creación de un proveedor de OIDC de IAM para su clúster.
-
Asegúrese de que sus complementos Amazon VPC CNI plugin for Kubernetes,
kube-proxy
y CoreDNS tengan las versiones mínimas enumeradas en los tokens de cuenta de servicio. -
Familiaridad con AWS Elastic Load Balancing. Para obtener más información, consulte la Guía del usuario de Elastic Load Balancing.
-
Familiaridad con el servicio
de Kubernetes y los recursos de entrada .
Paso 1: configurar IAM
nota
Solo necesita crear un rol para el AWS Load Balancer Controller una vez por cada cuenta de AWS. Compruebe si AmazonEKSLoadBalancerControllerRole
existe en la Consola de IAM
Cree una política de IAM.
-
Descargue una política de IAM para el AWS Load Balancer Controller que le permita realizar llamadas a las API de AWS en su nombre.
-
Cree una política de IAM con la política descargada en el paso anterior.
$
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.jsonnota
Si ve la política en la AWS Management Console, la consola muestra advertencias para el servicio ELB, pero no para el servicio ELB v2. Esto ocurre porque algunas de las acciones de la política existen para ELB v2, pero no para ELB. Puede obviar estas advertencias para ELB.
Paso 2: instalar el cert-manager
Instale el cert-manager
con uno de los siguientes métodos para ingresar la configuración del certificado en los webhooks. Para obtener más información, consulte Introduccióncert-manager
.
Se recomienda utilizar el registro del contenedor quay.io
para realizar la instalación de cert-manager
. Si los nodos no tienen acceso al registro contenedor de quay.io
, instale cert-manager
mediante Amazon ECR (consulte a continuación).
Paso 3: instalar el AWS Load Balancer Controller
Instalación de AWS Load Balancer Controller mediante un manifiesto de Kubernetes
-
Descargue la especificación del controlador. Para obtener más información sobre el controlador, consulte la documentación
en GitHub. curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
-
Lleve a cabo las siguientes modificaciones en el archivo.
-
Si ha descargado el archivo
v2_7_2_full.yaml
, ejecute el siguiente comando para eliminar la secciónServiceAccount
del manifiesto. Si no elimina esta sección, se sobrescribirá la anotación obligatoria que hizo en la cuenta de servicio en un paso anterior. Al eliminar esta sección también conserva la cuenta de servicio que creó en un paso anterior si elimina el controlador.$
sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
Si ha descargado una versión de archivo diferente, abra el archivo en un editor y elimine las siguientes líneas.
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
-
Reemplace
your-cluster-name
en la secciónDeployment
spec
del archivo por el nombre del clúster. Para ello, reemplace
por el nombre del clúster.my-cluster
$
sed -i.bak -e 's|your-cluster-name|
my-cluster
|' ./v2_7_2_full.yaml -
Si los nodos no tienen acceso a los repositorios de imágenes de Amazon ECR de Amazon EKS, tiene que extraer la siguiente imagen y enviarla a un repositorio al que tengan acceso los nodos. Para obtener más información sobre cómo extraer, etiquetar y enviar una imagen a su propio repositorio, consulte Copiar una imagen de contenedor de un repositorio en otro repositorio.
public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2
Agregue el nombre del registro al manifiesto. El siguiente comando supone que el nombre del repositorio privado es el mismo que el repositorio de origen y agrega el nombre del registro privado al archivo. Reemplace
por su registro. En esta línea se supone que ha asignado el mismo nombre al repositorio privado que al repositorio de origen. Si no es así, cambie el texto111122223333.dkr.ecr.
region-code
.amazonaws.comeks/aws-load-balancer-controller
después del nombre del registro privado al nombre del repositorio.$
sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|
.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_7_2_full.yaml111122223333
.dkr.ecr.region-code
-
(Necesario solo para IMDS restringido o Fargate)
Si implementa el controlador en los nodos de Amazon EC2 que tienen acceso restringido al servicio de metadatos de la instancia de Amazon EC2 (IMDS)
, o si realiza la implementación en Fargate, agregue lo following parameters
en- args:
.[...] spec: containers: - args: - --cluster-name=
your-cluster-name
- --ingress-class=alb- --aws-vpc-id=
[...]vpc-xxxxxxxx
- --aws-region=region-code
-
-
Aplique el archivo.
$
kubectl apply -f v2_7_2_full.yaml
-
Descargue el manifiesto
IngressClass
yIngressClassParams
a su clúster.$
curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
-
Aplique el manifiesto al clúster.
$
kubectl apply -f v2_7_2_ingclass.yaml
Paso 4: verificar que el controlador se encuentre instalado
-
Verifique que el controlador se encuentre instalado.
$
kubectl get deployment -n kube-system aws-load-balancer-controller
Un ejemplo de salida sería el siguiente.
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Recibe la salida anterior si ha implementado mediante Helm. Si ha implementado utilizando el manifiesto de Kubernetes, solo tiene una réplica.
-
Antes de utilizar el controlador para aprovisionar el recurso de AWS, el clúster debe cumplir requisitos específicos. Para obtener más información, consulte Dirección de la aplicación y el tráfico de HTTP con Application Load Balancers y Dirección del tráfico de TCP y UDP con Network Load Balancers.