Los Application Load Balancer (ALB) Ingresses son compatibles con HTTP, HTTPS y QUIC. Están diseñados para aplicaciones nativas de la nube que requieren alta elasticidad y gestión de tráfico de capa 7 a gran escala. Los ALB Ingresses son compatibles con los Nginx Ingresses y admiten configuraciones complejas de enrutamiento empresarial, así como la gestión automática de certificados TLS, lo que proporciona un mecanismo flexible de gestión de tráfico. Configure reglas de reenvío para usar diferentes URL y acceder a distintos Services dentro de un clúster.
Requisitos previos
Ha creado un clúster serverless de ACK que ejecuta Kubernetes 1.18 o una versión posterior. Para obtener más información, consulte Quick Start for ACK Serverless.
Ha creado dos vSwitches en diferentes zonas de disponibilidad. Los vSwitches deben estar en la misma VPC que el clúster. Para obtener más información, consulte Create and manage vSwitches.
Ha instalado el componente ALB Ingress Controller en el clúster. Para obtener más información, consulte Manage the ALB Ingress Controller component.
Obtain the KubeConfig for your cluster and use kubectl to connect to the cluster.
Notas
Si utiliza el complemento de red Flannel, los Services de backend del ALB Ingress solo admiten los tipos NodePort y LoadBalancer.
Los nombres de los recursos AlbConfig, Namespace, Ingress y Service no pueden comenzar con aliyun.
Las versiones anteriores de Nginx Ingress Controller no reconocen el campo
spec:ingressClassNameen los recursos Ingress. Si tiene instalada una versión anterior de Nginx Ingress Controller y utiliza tanto Nginx Ingresses como ALB Ingresses en su clúster, es posible que el Nginx Ingress Controller reconcilie los ALB Ingresses. Para evitar este problema, actualice el Nginx Ingress Controller o utilice una anotación para especificar la ingressClass del ALB Ingress. Para obtener más información, consulte Upgrade the Nginx Ingress Controller component o Advanced ALB Ingress configurations.
Paso 1: Crear un AlbConfig
-
Copie el siguiente contenido en un archivo llamado alb-test.yaml para crear un AlbConfig.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15**** listeners: - port: 80 protocol: HTTPParámetro
Descripción
spec.config.name
(Opcional) El nombre de la instancia de ALB.
spec.config.addressType
(Obligatorio) El tipo de dirección del load balancer. Valores válidos:
Internet (predeterminado): El load balancer tiene una dirección IP pública. El registro DNS se resuelve a la dirección IP pública. El load balancer es accesible a través de la red pública.
Intranet: El load balancer solo tiene una dirección IP privada. El registro DNS se resuelve a la dirección IP privada. El load balancer solo es accesible desde la VPC donde se despliega.
spec.config.zoneMappings
(Obligatorio) Los ID de los vSwitches para el ALB Ingress. Debe especificar los ID de como mínimo dos vSwitches en diferentes zonas. Los vSwitches especificados deben estar en zonas compatibles con ALB y en la misma VPC que el clúster. Para obtener más información sobre las regiones y zonas compatibles con ALB, consulte Regions and zones supported by ALB.
-
Ejecute el siguiente comando para crear el AlbConfig.
kubectl apply -f alb-test.yamlSalida esperada:
albconfig.alibabacloud.com/alb-demo created -
Cree un archivo llamado alb.yaml y copie el siguiente contenido en el archivo para crear una IngressClass.
Clústeres que ejecutan Kubernetes 1.19 o posterior
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demoClústeres que ejecutan versiones de Kubernetes anteriores a la 1.19
apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo -
Ejecute el siguiente comando para crear la IngressClass.
kubectl apply -f alb.yamlSalida esperada:
ingressclass.networking.k8s.io/alb created
Paso 2: Desplegar servicios
-
Cree un archivo cafe-service.yaml con el siguiente contenido para desplegar dos Deployments llamados
coffeeytea, y dos Services llamadoscoffeeytea. -
Ejecute el siguiente comando para desplegar los dos Deployments y los dos Services.
kubectl apply -f cafe-service.yamlSalida esperada:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created -
Compruebe el estado de las aplicaciones y los Services creados.
-
Ejecute el siguiente comando para comprobar el estado de las aplicaciones.
kubectl get deploySalida esperada:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s -
Ejecute el siguiente comando para comprobar el estado de los Services.
kubectl get svcSalida esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m38s
-
Paso 3: Configurar un ALB Ingress
-
Cree un archivo llamado cafe-ingress.yaml y copie en él el siguiente contenido.
Clústeres que ejecutan Kubernetes 1.19 o posterior
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure the context path - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure the context path - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80Clústeres que ejecutan versiones de Kubernetes anteriores a la 1.19
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure the context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure the context path. - path: /coffee backend: serviceName: coffee-svc servicePort: 80 -
Ejecute el siguiente comando para configurar el nombre de dominio y las rutas con el fin de exponer los Services
coffeeytea.kubectl apply -f cafe-ingress.yamlSalida esperada:
ingress.networking.k8s.io/cafe-ingress created -
Ejecute el siguiente comando para obtener la dirección de la instancia de ALB.
kubectl get ingSalida esperada:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com 80 50s
Paso 4: Acceder a los servicios
-
Utilice la línea de comandos para acceder al Service
coffeecon la dirección de la instancia de ALB obtenida.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee -
Utilice la línea de comandos para acceder al Service
teacon la dirección de la instancia de ALB obtenida.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
Referencias
Para obtener información sobre configuraciones avanzadas de ALB Ingress, como reenviar solicitudes de diferentes nombres de dominio o rutas URL a distintos grupos de servidores backend, configurar comprobaciones de estado, redirigir solicitudes HTTP a HTTPS, realizar despliegues progresivos y configurar puertos de escucha personalizados, consulte Advanced ALB Ingress configurations.
Para personalizar reglas de reenvío de un ALB Ingress mediante la configuración de condiciones y acciones de reenvío, consulte Customize forwarding rules for an ALB Ingress.
Para configurar un listener HTTPS que reenvíe solicitudes HTTPS, consulte Use an ALB Ingress to configure an HTTPS listener certificate.
Si encuentra problemas al utilizar un ALB Ingress, consulte Troubleshoot ALB Ingress issues y ALB ingress FAQ.