Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure an ALB instance by using an AlbConfig

Última atualização: Jun 28, 2026

O AlbConfig é uma Custom Resource Definition (CRD) fornecida pelo ALB Ingress Controller para configurar instâncias e listeners do Application Load Balancer (ALB). Este tópico descreve como criar, modificar e atualizar um AlbConfig, além de como ativar o Simple Log Service.

Escopo

Precauções

  • Recomendamos usar o comando kubectl edit para modificar ou atualizar diretamente as configurações de recursos. Caso precise usar o comando kubectl apply, execute primeiro o comando kubectl diff para visualizar as alterações antes de aplicar o kubectl apply. Confirme se as mudanças estão conforme o esperado e, em seguida, execute o comando kubectl apply para aplicá-las ao cluster Kubernetes.

  • Ao usar o plug-in de rede Flannel, o serviço de backend do ALB Ingress oferece suporte apenas aos tipos de serviço NodePort e LoadBalancer.

Criar um AlbConfig

Cada AlbConfig corresponde a uma instância ALB. Para usar múltiplas instâncias ALB, crie vários AlbConfigs. Os passos a seguir descrevem o processo de criação.

Importante

Se você selecionar a opção Create New ou Use Existing para ALB Cloud-native Gateway Instance Source durante a instalação do componente ALB Ingress Controller, o Controller cria automaticamente um recurso AlbConfig chamado "alb" e um recurso IngressClass chamado "alb".

  1. Crie um arquivo chamado alb.yaml e copie o conteúdo abaixo para ele. Use este arquivo para criar o AlbConfig.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # Replace with the IDs of at least two vSwitches that are in different zones within the VPC where the cluster resides.
          allocationId: eip-asdfas****          # Replace with your EIP ID. By default, a public IP address is automatically assigned.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****  # Replace with the IDs of at least two vSwitches that are in different zones within the VPC where the cluster resides.
          allocationId: eip-dpfmss****          # Replace with your EIP ID.
      listeners:
        - port: 80
          protocol: HTTP

    Parâmetro

    Descrição

    spec.config.name

    Nome da instância ALB.

    spec.config.addressType

    Tipo de endereço da instância ALB. Valores válidos:

    • Internet (padrão): A instância ALB possui um endereço IP público. O nome de domínio é resolvido para o IP público, permitindo acesso via Internet.

    • Intranet: A instância ALB possui apenas um endereço IP privado. O nome de domínio é resolvido para o IP privado, restringindo o acesso à VPC da instância.

    Importante

    O parâmetro addressType é processado apenas durante a criação da instância ALB. Atualizações posteriores neste parâmetro não surtem efeito.

    spec.config.zoneMappings

    • vSwitchId: ID do vSwitch usado pelo ALB Ingress.

      • Especifique os IDs de pelo menos dois vSwitches em zonas distintas. As zonas devem ser compatíveis com o ALB. Para detalhes sobre as zonas suportadas, consulte Regiões e zonas compatíveis com ALB.

      • Os vSwitches e o cluster devem residir na mesma VPC.

      Importante
      • Em regiões com zona única, especifique apenas um ID de vSwitch.

      • O parâmetro zoneMappings é processado somente na criação da instância ALB. Alterações subsequentes não têm efeito.

    • allocationId: Permite especificar o ID do EIP do qual a instância ALB pública depende nas configurações de zoneMappings.

      • Sem a especificação de um ID de EIP, um endereço IP público é atribuído automaticamente. O sistema cria um EIP BGP (multilinha) pago conforme o uso, com proteção básica de segurança, e o associa à instância ALB. Para detalhes de faturamento, consulte Visão geral do faturamento do ALB.

      • É possível informar o ID de um EIP existente para associá-lo à nova instância ALB.

      Importante
      • A associação é permitida apenas para EIPs pagos por tráfego adquiridos que não estejam vinculados a uma instância de Internet Shared Bandwidth.

      • Os EIPs alocados em zonas diferentes para a mesma instância ALB devem ser do mesmo tipo.

    Durante a instalação do componente ALB Ingress Controller em um cluster, há a opção de criar um AlbConfig padrão. Exceto pelo vSwitchID, os demais parâmetros seguem as configurações padrão listadas abaixo.

    Clique em para visualizar as configurações padrão de um AlbConfig

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb # The name of the AlbConfig.
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # In an AlbConfig, you can use the addressAllocatedMode parameter to specify the IP mode of the ALB instance. Valid values are Dynamic (dynamic IP mode) and Fixed (fixed IP mode).
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: #...
        - vSwitchId: #...
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. Execute o comando abaixo para criar o AlbConfig:

    kubectl apply -f alb.yaml

    Saída esperada:

    AlbConfig.alibabacloud.com/alb created
  3. Execute o seguinte comando para visualizar o recurso AlbConfig:

    kubectl get AlbConfig

    Saída esperada:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
    Nota

    Após criar um listener HTTPS e configurar seu certificado, as colunas PORT&PROTOCOL e CERTID exibirão conteúdo. Por padrão, essas colunas permanecem vazias.

Reutilizar uma instância ALB existente

Para reutilizar uma instância ALB existente, especifique o ID da instância ao criar o AlbConfig. A instância ALB existente deve ser do tipo Standard ou habilitada para WAF, criada no console do Application Load Balancer (ALB). Instâncias ALB Basic não podem ser reutilizadas. Uma instância pode ser usada por apenas um cluster; não é permitido compartilhar a mesma instância ALB entre múltiplos clusters.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # The ID of the Standard or WAF-enabled ALB instance created in the ALB console.
    forceOverride: false
    listenerForceOverride: false

A tabela a seguir detalha os parâmetros.

Parâmetro

Descrição

id

  • Se o campo id estiver ausente ou vazio, indica que a instância ALB não está sendo reutilizada. Nesse cenário, os campos forceOverride e listenerForceOverride não surtem efeito.

  • Quando o campo id possui um valor válido, a instância ALB é reutilizada.

    • Com forceOverride definido como true, as propriedades da instância ALB e de seus listeners são sobrescritas forçadamente. As configurações existentes são totalmente substituídas pelas definições do AlbConfig enviado.

    • Com forceOverride definido como false, as propriedades da instância ALB não são sobrescritas à força. A sobrescrita das propriedades dos listeners depende do campo listenerForceOverride.

      • Se listenerForceOverride for false, as propriedades não são sobrescritas. O ALB Ingress Controller gerencia apenas os listeners criados automaticamente com base no AlbConfig do cluster, seguindo o formato de nome padrão ingress-auto-listener-{port}. As configurações desses listeners obedecem ao AlbConfig. Listeners autogerenciados fora desse escopo não são administrados pelo AlbConfig.

      • Se listenerForceOverride for true, o ALB Ingress Controller passa a gerenciar todos os listeners da instância ALB. Tanto a existência quanto as configurações dos listeners ficam subordinadas ao AlbConfig.

Importante

Ao reutilizar uma instância ALB, evite modificar manualmente os nomes dos listeners para prevenir gestão incorreta pelo ACK. Listeners criados ou atualizados via AlbConfig são gerenciados pelo ACK e seguem o padrão de nomenclatura ingress-auto-listener-{port}. Listeners com outros formatos de nome devem ser gerenciados diretamente no console ALB.

forceOverride

Define se as propriedades da instância ALB devem ser sobrescritas forçadamente durante a reutilização.

  • true: sobrescreve as propriedades forçadamente.

  • false: não sobrescreve as propriedades. Editar o AlbConfig com este parâmetro como false mantém as propriedades da instância ALB inalteradas.

listenerForceOverride

Define se as propriedades dos listeners devem ser sobrescritas forçadamente ao reutilizar a instância.

  • true: sobrescreve as propriedades forçadamente.

  • false: não sobrescreve as propriedades.

Configurar uma instância de Internet Shared Bandwidth

Ao ativar este recurso, torna-se possível associar uma instância de Internet Shared Bandwidth a uma instância ALB por meio do AlbConfig.

Nota

Este recurso aplica-se exclusivamente quando o tipo de rede da instância ALB é Internet. Para saber como adquirir uma instância de Internet Shared Bandwidth, consulte Criar e gerenciar uma instância de Internet Shared Bandwidth.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***  # The ID of the Internet Shared Bandwidth instance.

Atualizar um AlbConfig

Para instâncias ALB criadas via AlbConfig, use o comando kubectl edit para atualizar as configurações. Siga os passos abaixo para realizar a atualização.

  1. Execute o comando a seguir para obter o nome do AlbConfig:

    kubectl get AlbConfig

    Saída esperada:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb        alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
  2. Execute o comando abaixo para modificar o AlbConfig:

    kubectl edit albconfig <ALBCONFIG_NAME> # Replace <ALBCONFIG_NAME> with the name of the AlbConfig.

    No arquivo de configuração do AlbConfig, atualize o conteúdo desejado. Por exemplo, modifique o campo spec.config.name para alterar o nome da instância ALB para new_alb.

    ...
     spec:
       config:
         name: new_alb # The updated name.
    ...

Usar um IngressClass para associar um AlbConfig a um Ingress

O ALB Ingress usa o recurso nativo IngressClass do Kubernetes para vincular um AlbConfig a um Ingress. Essa associação ocorre mediante a definição de parâmetros específicos no recurso IngressClass.

  1. Crie um arquivo chamado ingress_class.yaml, copie o conteúdo abaixo e use-o para criar um IngressClass.

    Clusters of v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # The name of the AlbConfig associated with the IngressClass.

    Clusters earlier than v1.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
  2. Execute o comando a seguir para criar o IngressClass:

    kubectl apply -f ingress_class.yaml

    Saída esperada:

    ingressclass.networking.k8s.io/alb created
  3. Crie um arquivo chamado ingress.yaml e copie o conteúdo abaixo. Use o parâmetro ingressClassName para especificar o IngressClass chamado alb e associá-lo ao AlbConfig.

    Clusters of v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb # The name of the IngressClass associated with the Ingress.
      rules:
      - 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

    Clusters earlier than v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
      - 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
  4. Execute o comando abaixo para criar o Ingress:

    kubectl apply -f ingress.yaml

    Saída esperada:

    ingress.networking.k8s.io/cafe-ingress created

Após concluir estas etapas, o IngressClass estará associado ao AlbConfig e ao Ingress.

Criar e usar múltiplas instâncias ALB

Para operar com várias instâncias ALB simultaneamente, especifique IngressClasses distintos no campo spec.ingressClassName dos recursos Ingress, vinculando cada Ingress a uma instância ALB diferente.

  1. Crie um arquivo chamado alb-2.yaml, copie o conteúdo abaixo e use-o para criar um AlbConfig.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2        # The name of the ALB instance.
        addressType: Internet  # The ALB instance has a public IP address.
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # The ID of the vSwitch.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. Execute o comando a seguir para criar o AlbConfig:

    kubectl apply -f alb-2.yaml

    Saída esperada:

    AlbConfig.alibabacloud.com/alb-2 created
  3. Crie um arquivo chamado ingress_class2.yaml, copie o conteúdo abaixo e use-o para criar um IngressClass.

    Clusters of v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # The name of the AlbConfig associated with the IngressClass.

    Clusters earlier than v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # The name of the AlbConfig associated with the IngressClass.
  4. Execute o comando abaixo para criar o IngressClass:

    kubectl apply -f ingress_class2.yaml

    Saída esperada:

    ingressclass.networking.k8s.io/alb-2 created
  5. Crie um arquivo chamado ingress2.yaml e copie o conteúdo abaixo. Use o parâmetro ingressClassName para indicar uma instância ALB diferente. No exemplo a seguir, alb-2 é definido no campo ingressClassName para vincular o Ingress ao IngressClass alb-2 e, consequentemente, à instância ALB alb-2.

    Clusters of v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - 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

    Clusters earlier than v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - 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
  6. Execute o comando a seguir para criar o Ingress:

    kubectl apply -f ingress2.yaml

    Saída esperada:

    ingress.networking.k8s.io/cafe-ingress2 created

Usar endereços IPv6

Ao criar uma instância ALB, ative o dual-stack definindo o campo addressIpVersion como DualStack. Isso habilita o suporte simultâneo a IPv4 e IPv6.

Importante

O parâmetro addressIpVersion é processado apenas na criação do AlbConfig. Atualizações posteriores não surtem efeito.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    addressIpVersion: DualStack # Enable dual-stack.
    ...

Especificar uma política de segurança TLS

Ao configurar um listener HTTPS em um AlbConfig, é possível definir uma política de segurança TLS. Existem políticas personalizadas e políticas padrão do sistema. Para mais detalhes, consulte Política de segurança TLS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1 # The ID of the specified security policy.
  #...

Ativar logs de acesso no Simple Log Service

Para que o ALB Ingress colete logs de acesso, especifique logProject e logStore no AlbConfig.

Nota
  • Durante a criação do cluster, se você optou por criar automaticamente um projeto do Simple Log Service ou usar um existente: Faça login no Console de gerenciamento do Container Service e selecione Clusters no painel de navegação à esquerda.Na página Clusters, clique em no nome do cluster desejado e escolha Cluster Information no painel de navegação à esquerda. Na aba Basic Information, visualize o Log Service Project associado ao cluster.

  • O nome do logStore deve iniciar com alb_. Caso o logStore informado não exista, ele será criado automaticamente.

  • Ao reutilizar uma instância ALB existente e desejar ativar o Simple Log Service via AlbConfig, defina o campo forceOverride como true para sobrescrever forçadamente as propriedades da instância ALB. Para mais informações, consulte Reutilizar uma instância ALB existente.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
    #...

Na aba Basic Information, clique em no nome à direita de Log Service Project para visualizar os logs de acesso coletados.

Excluir um AlbConfig

Como cada AlbConfig corresponde a uma instância ALB, excluir o AlbConfig remove também a instância ALB criada por ele.

Importante

Antes de excluir um AlbConfig, remova todos os recursos Ingress associados a ele.

Execute o comando abaixo para excluir um AlbConfig:

kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig.

Excluir o AlbConfig de uma instância ALB reutilizada

Se você optou por reutilizar uma instância ALB existente ao criar o AlbConfig, a instância não foi criada pelo AlbConfig. Portanto, excluir o AlbConfig não remove a instância ALB. Para excluir o AlbConfig de uma instância reutilizada, siga os passos abaixo.

  1. Use o comando kubectl edit para modificar o AlbConfig e remover todos os seus listeners. Para isso, exclua todas as entradas sob o campo spec.listeners.

    Importante

    Realize esta operação apenas se a versão do componente ALB Ingress Controller instalada no cluster for v2.10.0-aliyun.1 ou anterior. Caso contrário, pule esta etapa.

  2. Execute o comando a seguir para excluir o AlbConfig:

    Importante

    Antes de excluir um AlbConfig, remova todos os recursos Ingress associados a ele.

    kubectl delete AlbConfig <AlbConfig_NAME> # Replace <AlbConfig_NAME> with the name of the AlbConfig.

Atualizar o campo Listeners

Termos

  • Arquivo de configuração de objeto: Arquivo usado para definir e descrever um objeto Kubernetes, contendo suas especificações e informações de configuração.

  • Arquivo de configuração de objeto existente: Arquivo de configuração já aplicado a um cluster Kubernetes.

  • Campo last-applied-configuration: Campo de anotação em um objeto Kubernetes que registra a última configuração aplicada. Não é atualizado em tempo real conforme as mudanças no objeto.

Método de atualização do campo Listeners

O campo Listeners é uma configuração do tipo array, geralmente atualizada por substituição. Ao atualizá-lo, a nova configuração substitui integralmente a anterior. Consulte a tabela abaixo para detalhes:

Número ordinal

Condição

Resultado

O objeto está no arquivo de configuração?

O objeto está no arquivo de configuração existente?

O objeto está no campo last-applied-configuration?

Sim

Sim

- (Não aplicável)

Os valores do arquivo de configuração são aplicados ao arquivo existente para atualizar campos específicos do objeto.

Sim

Não

- (Não aplicável)

Os valores do arquivo de configuração servem para criar um novo objeto, em vez de atualizar um existente.

Não

Não aplicável

Sim

Um campo é removido do arquivo de configuração existente, sendo excluído da configuração atual. O campo pode ser redefinido para seu valor padrão.

Não

Sim

Não

Um campo é removido do arquivo de configuração existente.

Exemplo

O código abaixo ilustra as configurações do campo Listeners no arquivo de configuração, no arquivo existente e no campo last-applied-configuration:

# The object configuration file provides the following expected configuration values.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005 # Add 8005.
    protocol: HTTP

# The existing object configuration file shows the configuration of the existing object.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Delete 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8004  # Delete 8004.
    protocol: HTTP
    
# The last-applied-configuration records the last applied configuration of the object.
  listeners:
  - port: 8001 
    protocol: HTTP
  - port: 8002  # Delete 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP

O campo Listeners do AlbConfig é atualizado com o seguinte resultado:

# The result of the Listeners configuration file.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005
    protocol: HTTP
  • As portas 8001 e 8003 atendem à condição ① e são mantidas.

  • A porta 8005 atende à condição ② e é adicionada.

  • A porta 8002 atende à condição ③ e é excluída.

  • A porta 8004 atende à condição ④ e é excluída.

Criar listeners

Listeners funcionam como pontos de entrada principais para o processamento de tráfego pela instância ALB. A abertura de portas para aceitar requisições de clientes só ocorre após a criação dos listeners.

Defina port e protocol no AlbConfig para criar o listener correspondente. Modificar port, protocol ou outras propriedades faz com que o sistema exclua o listener original e crie um novo em seu lugar.

Os listeners suportam três protocolos de camada de aplicação: HTTP, HTTPS e QUIC.

Importante

É possível usar múltiplos listeners com protocolos diferentes simultaneamente. Contudo, configure uma anotação no recurso Ingress para garantir que ele se aplique a todos os listeners envolvidos. Para mais informações, consulte Configurar portas de listener personalizadas.

Create an HTTP listener

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # The valid values for protocol are HTTP, HTTPS, and QUIC.
  ...
Nota

O protocolo HTTP é automaticamente compatível com WebSocket, sem necessidade de configurações adicionais.

Create an HTTPS listener

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS
  ...
Importante

Listeners HTTPS exigem a configuração de um certificado. Para mais detalhes, consulte Configurar certificado HTTPS para comunicação criptografada.

Create a QUIC listener

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: QUIC
  ...
Importante

Listeners QUIC permitem que clientes acessem serviços via protocolo HTTP/3. Para saber mais sobre o uso de listeners QUIC, consulte Usar listener QUIC para suportar o protocolo HTTP/3.

Especificar um certificado

Ao configurar um ALB, execute o comando kubectl edit albconfig <Albconfig_Name> para habilitar criptografia e verificação de identidade no protocolo HTTPS. No AlbConfig, defina o parâmetro certificates com o ID do certificado que o listener deve usar para criptografar e descriptografar o tráfego HTTPS.

Sem a especificação de um certificado, o listener não é criado junto com o ALB. Ele será provisionado apenas após a associação de um Ingress e a descoberta automática de um certificado baseada no nome de domínio.

Para mais detalhes sobre configuração de certificados, consulte Configurar certificado HTTPS para comunicação criptografada.

Importante

O ALB define o primeiro certificado como padrão. Outros certificados são usados para criptografia de requisições apenas se o certificado padrão expirar ou deixar de ser usado.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - caEnabled: false
    certificates:
    - CertificateId: 756****-cn-hangzhou # The certificate ID.
      IsDefault: true
    port: 443
    protocol: HTTPS
  ...

Definir o tempo limite de requisição do listener

É possível estabelecer um tempo limite de requisição para o listener no AlbConfig. O valor, em segundos, varia de 1 a 600. Se o servidor de backend não responder dentro desse período, a instância ALB interrompe a espera e retorna um erro HTTP 504 ao cliente. Na ausência dessa configuração, o valor padrão é de 60 segundos. Veja abaixo um exemplo de arquivo YAML.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40 # If you do not enter a value, the default timeout period is 60 seconds.
  ...

Usar o recurso de compressão de dados

Quando ativado, este recurso permite que a instância ALB comprima tipos específicos de arquivos. Valores válidos para gzipEnabled:

  • true: Comprime tipos específicos de arquivos.

  • false: Não realiza compressão de arquivos.

Nota
  • Algoritmos de compressão: Se o cliente suportar Brotli e Gzip, o ALB prioriza o algoritmo Brotli por ser mais eficiente. O Brotli comprime todos os tipos de arquivos. Já o Gzip atua sobre formatos como text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml e application/json.

  • Condições de compressão: A compressão ocorre quando o Content-Length no cabeçalho de resposta excede 1024 bytes e o cabeçalho Accept-Encoding da requisição do cliente inclui um algoritmo suportado.

Segue um exemplo de arquivo YAML para ativar a compressão de dados:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true
  ...

Obter o endereço IP de origem do cliente

Ao ativar este recurso, a instância ALB insere um campo com o IP de origem do cliente no cabeçalho da requisição HTTP ao encaminhar solicitações ao serviço de backend. Valores válidos para XForwardedForEnabled:

  • true: Obtém o IP de origem do cliente.

  • false: Não obtém o IP de origem do cliente.

Importante

Este parâmetro é configurável apenas para listeners HTTP e HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # XForwardedForEnabled cannot be disabled.
  #...

Obter a porta do cliente

Com este recurso ativo, a instância ALB adiciona um campo contendo a porta do cliente ao cabeçalho da requisição HTTP durante o encaminhamento ao serviço de backend. Valores válidos para XForwardedForClientSrcPortEnabled:

  • true: Recupera a porta do cliente.

  • false: Não recupera a porta do cliente.

Importante

Este parâmetro é configurável apenas para listeners HTTP e HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
  ...

Obter o protocolo do listener da instância ALB

Ao habilitar este recurso, a instância ALB inclui um campo com o protocolo do listener no cabeçalho da requisição HTTP ao encaminhar solicitações ao backend. Valores válidos para XForwardedForProtoEnabled:

  • true: Recupera o protocolo do listener da instância.

  • false: Não recupera o protocolo do listener da instância.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForProtoEnabled: true
  ...

Obter o ID da instância ALB

Quando este recurso está ativo, a instância ALB adiciona um campo com seu próprio ID ao cabeçalho da requisição HTTP ao encaminhar solicitações aos serviços de backend. Valores válidos para XForwardedForSLBIdEnabled:

  • true: Recupera o ID da instância SLB.

  • false: Não adiciona o ID da instância ao cabeçalho da requisição.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBIdEnabled: true
  ...

Obter a porta do listener da instância ALB

Após ativar este recurso, a instância ALB insere um campo com a porta do listener no cabeçalho da requisição HTTP ao encaminhar solicitações ao serviço de backend. Valores válidos para XForwardedForSLBPortEnabled:

  • true: Recupera a porta do listener da instância.

  • false: Não recupera a porta do listener da instância.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBPortEnabled: true
  ...

Especificar endereços IP de servidores proxy confiáveis

No AlbConfig, use o item de configuração XForwardedForClientSourceIpsEnabled para permitir que a instância ALB obtenha o IP de origem do cliente a partir do campo de cabeçalho X-Forwarded-For. Use o item XForwardedForClientSourceIpsTrusted para definir um conjunto de IPs de servidores proxy confiáveis. A instância ALB percorre a lista de IPs do campo X-Forwarded-For em ordem inversa, selecionando o primeiro endereço que não conste na lista de confiança como o IP real do cliente.

Por exemplo, se o valor do campo X-Forwarded-For for <IP de origem do cliente, IP do proxy-1, IP do proxy-2>, insira IP do proxy-1 e IP do proxy-2 em XForwardedForClientSourceIpsTrusted para obter corretamente o IP de origem.

Importante

Este parâmetro é configurável apenas para listeners HTTP e HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata: 
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true # true indicates that ALB is allowed to find the originating client IP address from the X-Forwarded-For header field. In this case, you must configure XForwardedForClientSourceIpsTrusted with content in the correct format. false indicates that ALB is not allowed to find the originating client IP address from the X-Forwarded-For header field.
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16  # Enter IP addresses or CIDR blocks in the valid format and separate them with semicolons (;). Do not add spaces between the IP addresses or CIDR blocks. This parameter takes effect only when XForwardedForClientSourceIpsEnabled is set to true.
  ...

Configurar controle de acesso baseado em ACL

Use o AlbConfig para ativar o controle de acesso em um listener ALB. Isso possibilita o gerenciamento preciso de requisições de clientes e do encaminhamento de tráfego por meio de regras de permissão ou negação de entrada. Para mais informações sobre listas de controle de acesso (ACLs), consulte Configurar uma ACL para implementar controle de acesso.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
   #...
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White
  #...

A tabela a seguir descreve os campos.

  • aclType: Define o tipo de ACL do listener. Valores válidos: Black para lista de bloqueios e White para lista de permissões.

  • aclEntries: Blocos CIDR das entradas de controle de acesso, como 127.0.0.1/32.

Excluir um listener

Uma instância pode ter vários listeners. Para remover um deles, execute o comando kubectl edit albconfig <Albconfig_Name> e elimine o listener do campo albconfig.spec.listeners no AlbConfig.

Importante

Antes de excluir um listener, remova todos os Ingresses associados a ele. Caso contrário, a exclusão falhará e um erro será reportado.

# Configuration before deleting the listener.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Delete the 8002 listener.
    protocol: HTTP

# Configuration after deleting the listener.
  listeners:
  - port: 8001
    protocol: HTTP

FAQ

Erro ao salvar o arquivo YAML do AlbConfig: alb: listener port number must between [1:65535], or you should set listen port explicitly in listener config.

Causa

Na seção spec.listener do arquivo YAML do AlbConfig, o símbolo - marca o início de uma configuração de listener. No exemplo incorreto à esquerda, três símbolos - foram usados, definindo três listeners separados. O erro ocorre porque falta a configuração de port para os certificates associados ao último símbolo -.

Solução

Cada configuração de listener deve iniciar com um único -. No exemplo corrigido à direita, o - antes de certificates foi removido, integrando a configuração do certificado ao listener HTTPS: 443.

Exemplo incorreto que causa erro:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
  - certificates:  # Incorrect example: An extra "-" is configured.
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

Exemplo corrigido:

apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
      ...
      listeners:
      - port: 80
        protocol: HTTP
      - port: 443
        protocol: HTTPS
        certificates:  # The extra "-" is removed, so the certificate configuration is included in the HTTPS: 443 listener.
        - CertificateId: 756****-cn-hangzhou
          IsDefault: true
      ...