Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Access services using an ALB Ingress

Última actualización: Sep 04, 2026

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

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:ingressClassName en 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

  1. 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: HTTP

    Pará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.

  2. Ejecute el siguiente comando para crear el AlbConfig.

    kubectl apply -f alb-test.yaml

    Salida esperada:

    albconfig.alibabacloud.com/alb-demo created
  3. 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-demo

    Clú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
  4. Ejecute el siguiente comando para crear la IngressClass.

      kubectl apply -f alb.yaml

    Salida esperada:

    ingressclass.networking.k8s.io/alb created

Paso 2: Desplegar servicios

  1. Cree un archivo cafe-service.yaml con el siguiente contenido para desplegar dos Deployments llamados coffee y tea, y dos Services llamados coffee y tea.

    Expanda para ver el archivo YAML completo

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      clusterIP: None
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      labels:
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      clusterIP: None
  2. Ejecute el siguiente comando para desplegar los dos Deployments y los dos Services.

    kubectl apply -f cafe-service.yaml

    Salida esperada:

    deployment "coffee" created
    service "coffee-svc" created
    deployment "tea" created
    service "tea-svc" created
  3. Compruebe el estado de las aplicaciones y los Services creados.

    1. Ejecute el siguiente comando para comprobar el estado de las aplicaciones.

      kubectl get deploy

      Salida esperada:

      NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
      coffee                           1/2     2            1           2m26s
      tea                              1/1     1            1           2m26s
    2. Ejecute el siguiente comando para comprobar el estado de los Services.

      kubectl get svc

      Salida 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

  1. 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: 80

    Clú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
  2. Ejecute el siguiente comando para configurar el nombre de dominio y las rutas con el fin de exponer los Services coffee y tea.

    kubectl apply -f cafe-ingress.yaml

    Salida esperada:

    ingress.networking.k8s.io/cafe-ingress created
  3. Ejecute el siguiente comando para obtener la dirección de la instancia de ALB.

    kubectl get ing

    Salida 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 coffee con 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 tea con 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