Todos os produtos
Search
Central de documentação

Container Compute Service:Configure an AlbConfig

Última atualização: Aug 28, 2026

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

Pré-requisitos

  • Você possui {{XREF_0}}.

  • Você criou dois vSwitches em zonas de disponibilidade diferentes dentro da VPC do seu cluster. {{XREF_1}}.

Observações de uso

  • Recomendamos o uso do comando kubectl edit para modificar ou atualizar diretamente as configurações de recursos. Caso seja necessário utilizar o comando kubectl apply, execute primeiro o comando kubectl diff para visualizar as alterações antes de rodar 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.

  • Versões anteriores do Nginx Ingress Controller não reconhecem o campo spec.ingressClassName nos recursos de Ingress. Se os controladores Nginx Ingress e ALB Ingress estiverem em execução no mesmo cluster, uma versão antiga do Nginx Ingress Controller pode interferir ou sobrescrever a configuração do ALB Ingress. Para evitar esse problema, atualize o Nginx Ingress Controller para a versão mais recente ou use uma annotation para especificar a ingressClass do ALB Ingress. Para mais informações, consulte {{XREF_2}}.

Criar um AlbConfig

Um AlbConfig corresponde a uma única instância ALB, mas pode ser associado a múltiplos Ingresses. Para utilizar várias instâncias ALB, crie múltiplos AlbConfigs. Os passos a seguir descrevem como criar um AlbConfig.

  1. Crie um arquivo chamado alb-test.yaml e copie o conteúdo abaixo para ele.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressAllocatedMode: Dynamic          # Dynamic or Fixed. Specifies the IP address mode for the ALB instance.
        addressType: Internet
        zoneMappings:                          # For high availability, select vSwitches in at least two different zones.
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the actual vSwitch ID (Zone 1).
        - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the actual vSwitch ID (Zone 2, must be different from Zone 1).
      listeners:
        - port: 80
          protocol: HTTP

    Parâmetro

    Descrição

    spec.config.name

    (Opcional) O nome da instância ALB.

    spec.config.addressType

    (Obrigatório) O tipo de endereço do balanceador de carga. Valores válidos:

    • Internet (padrão): O balanceador de carga possui um endereço IP público. O registro DNS é resolvido para o endereço IP público, tornando o balanceador acessível pela internet.

    • Intranet: O balanceador de carga possui apenas um endereço IP privado. O registro DNS é resolvido para o endereço IP privado, tornando o balanceador acessível somente dentro da VPC onde está implantado.

    spec.config.zoneMappings

    (Obrigatório) Especifica os IDs dos vSwitches para o ALB Ingress. Em regiões com múltiplas zonas, você deve especificar os IDs de vSwitches em pelo menos duas zonas diferentes. Em regiões de zona única, um ID de vSwitch é suficiente. Os vSwitches devem estar na mesma VPC do cluster e em zonas que suportem ALB. Para mais informações sobre as regiões e zonas suportadas pelo ALB Ingress, consulte {{XREF_3}}.

    Importante

    Não é possível atualizar o tipo de endereço ou as zonas de uma instância ALB. Os parâmetros addressType e zoneMappings têm efeito apenas durante a criação do AlbConfig e não podem ser atualizados posteriormente.

    spec.config.addressAllocatedMode

    (Opcional) No AlbConfig, é possível especificar o modo de IP da instância ALB definindo o parâmetro addressAllocatedMode. Os valores válidos são:

    • Dynamic: modo de IP dinâmico.

    • Fixed: modo de IP fixo.

    Ao instalar o add-on ALB Ingress Controller em um cluster, o sistema cria um AlbConfig por padrão. Todos os parâmetros de configuração, exceto vSwitchId, serão criados com as configurações padrão.

    Configuração padrão

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo                      # 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 address mode of the ALB instance. Valid values: Dynamic (dynamic IP mode) and Fixed (fixed IP mode).
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:                                 # For high availability, select vSwitches in at least two different zones.
        - vSwitchId: vsw-wz92lvykqj1siwvif****        # Replace with the actual vSwitch ID (Zone 1).
        - vSwitchId: vsw-wz9mnucx78c7i6iog****        # Replace with the actual vSwitch ID (Zone 2, must be different from Zone 1).
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. Execute o comando a seguir para criar o AlbConfig.

    kubectl apply -f alb-test.yaml

    Saída esperada:

    albconfig.alibabacloud.com/alb-demo created
  3. Execute o comando a seguir para visualizar o AlbConfig.

    kubectl -n kube-system get AlbConfig

    Saída esperada:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID                 AGE
    alb-demo   alb-******   alb-******.<regionID>.alb.aliyuncs.com   443/HTTPS       11055487-cn-<regionID>  2d

Atualizar um AlbConfig

No Kubernetes, o comando kubectl apply realiza uma atualização por substituição, enquanto o comando kubectl edit executa uma atualização incremental baseada no objeto existente. Para uma instância ALB já criada via AlbConfig, utilize o comando kubectl edit para atualizar incrementalmente a configuração da instância. Os passos a seguir descrevem como atualizar um AlbConfig.

  1. Execute o comando a seguir para visualizar o AlbConfig.

    kubectl -n kube-system get AlbConfig

    Saída esperada:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID                 AGE
    alb-demo   alb-******   alb-******.<regionID>.alb.aliyuncs.com   443/HTTPS       11055487-cn-<regionID>  2d
  2. Execute o comando a seguir para atualizar o AlbConfig.

    Importante
    • Recomenda-se o uso do comando kubectl edit para atualizar diretamente as configurações de recursos. Se for indispensável usar o comando kubectl apply, rode o comando kubectl diff para pré-visualizar as alterações antes de executar o kubectl apply. Certifique-se de que as mudanças estejam corretas e então use o comando kubectl apply para aplicá-las ao cluster Kubernetes.

    • Ao usar o comando kubectl apply para sobrescrever um AlbConfig, o comportamento depende da inclusão do campo listeners no arquivo YAML. Se o campo não estiver incluído, os listeners existentes não serão afetados. Caso esteja presente, os listeners serão reconciliados para corresponder à configuração atual. Portanto, é obrigatório especificar a lista completa de listeners necessários, como os listeners comuns para as portas 80 e 443.

    kubectl -n kube-system edit AlbConfig alb-demo

    No arquivo de configuração do AlbConfig, atualize o conteúdo desejado. Por exemplo, altere o nome do AlbConfig para test.

    ...
     spec:
       config:
         name: test # Enter the updated name.
    ...

Associar um AlbConfig a um Ingress

É possível associar um Ingress a um AlbConfig utilizando uma IngressClass padrão do Kubernetes. Primeiro, crie uma IngressClass que referencie o AlbConfig e, em seguida, especifique essa IngressClass no seu recurso de Ingress.

  1. Crie um arquivo chamado alb.yaml e copie o conteúdo abaixo para criar uma IngressClass.

    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
  2. Execute o comando a seguir para criar a IngressClass.

    kubectl apply -f alb.yaml

    Saída esperada:

    ingressclass.networking.k8s.io/alb created
  3. Crie um arquivo chamado ingress.yaml e copie o conteúdo a seguir. O parâmetro ingressClassName especifica a IngressClass chamada alb para associação com o AlbConfig.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      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
  4. Execute o comando a seguir 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 AlbConfig estará associado ao Ingress por meio da IngressClass.

Modificar o nome de uma instância ALB

Execute o comando a seguir para modificar o nome de uma instância ALB:

kubectl -n kube-system edit AlbConfig alb-demo

Modifique o valor de config.name no arquivo de configuração. O novo nome entra em vigor automaticamente após salvar o arquivo.

...
  spec:
    config:
      name: test   # Enter the updated name.
...

Usar um endereço IPv6

Para habilitar o suporte a IPv6 ao criar uma instância ALB, defina o campo addressIpVersion como DualStack no AlbConfig.

Importante

O campo addressIpVersion tem efeito apenas durante a criação da instância e não pode ser modificado posteriormente.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
    addressIpVersion: DualStack
    ...

Especificar uma política de segurança TLS

É possível definir uma política de segurança TLS para um listener HTTPS em um AlbConfig. As políticas de segurança TLS incluem políticas personalizadas e políticas do sistema. Para mais informações, consulte {{XREF_4}}.

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

Ativar logs de acesso

Para ativar o registro de logs de acesso do ALB Ingress, especifique um logProject e um logStore no seu AlbConfig.

Nota
  • A criação do logProject deve ser feita manualmente. Para mais detalhes sobre como criar um logProject, consulte {{XREF_5}}.

  • O nome do logStore deve começar com alb_. Se o logStore especificado não existir, ele será criado automaticamente.

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

Após salvar a configuração, acesse o console do Log Service e selecione o LogStore de destino para visualizar os logs de acesso coletados.

Reutilizar uma instância ALB existente

Para reutilizar uma instância ALB existente, especifique o ID da instância ALB ao criar o AlbConfig. A instância ALB existente deve ser das edições Standard ou WAF-enabled, criada no console Application Load Balancer (ALB). Instâncias ALB da edição Basic não podem ser reutilizadas. Uma instância ALB só pode ser reutilizada por um único AlbConfig dentro do mesmo cluster. Não há suporte para reutilizar uma instância ALB em vários clusters, nem para reutilizar uma instância ALB por múltiplos AlbConfigs no mesmo cluster.

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

A tabela a seguir descreve os parâmetros.

Parâmetro

Descrição

id

  • Se o campo id não existir ou estiver vazio, isso indica que a instância ALB não está sendo reutilizada. Nesse caso, os campos forceOverride e listenerForceOverride não têm efeito.

  • Se o campo id estiver definido com um valor válido, a instância ALB será reutilizada.

Importante

Ao reutilizar uma instância, não modifique manualmente os nomes dos listeners. Isso pode causar gerenciamento incorreto dos listeners pelo ACS. Listeners criados ou atualizados por um AlbConfig são gerenciados pelo ACS, e seus nomes seguem o formato ingress-auto-listener-{port} por padrão. Listeners com nomes em outros formatos são gerenciados no console ALB.

forceOverride

Define se os atributos da instância ALB devem ser sobrescritos forçosamente no modo de reutilização.

  • true: O AlbConfig sobrescreve completamente a configuração existente da instância ALB e todos os seus listeners.

  • false: Não sobrescreve atributos. Os atributos da instância ALB não são forçados a serem sobrescritos. O campo listenerForceOverride determina se os atributos dos listeners devem ser sobrescritos forçosamente.

listenerForceOverride

Define se os atributos dos listeners devem ser sobrescritos forçosamente no modo de reutilização.

  • true: Sobrescreve forçosamente os atributos dos listeners. O ALB Ingress Controller gerencia todos os listeners da instância ALB. A existência e as configurações dos listeners são determinadas pelo AlbConfig.

  • false: Não sobrescreve forçosamente os atributos dos listeners. O ALB Ingress Controller gerencia apenas os listeners criados pelo AlbConfig no cluster. Os nomes dos listeners usam o formato padrão ingress-auto-listener-{port}, e suas configurações são determinadas pelo AlbConfig no cluster. Outros listeners não são gerenciados pelo AlbConfig.

Criar um listener

Em um cenário de reutilização, adicione um novo listener ou edite as configurações de um listener existente modificando o AlbConfig. Execute o comando kubectl edit albconfig <Albconfig_Name>. Defina port e protocol no AlbConfig para criar o listener correspondente. A port e o protocol são propriedades únicas de um listener. Se você modificar a port, o protocol ou outras propriedades do listener, o sistema excluirá o listener original e criará um novo para substituí-lo.

Nota

O protocolo HTTP é automaticamente compatível com WebSocket e não requer configurações especiais.

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

Criar e usar múltiplas instâncias ALB

Para utilizar várias instâncias ALB, especifique uma IngressClass diferente para cada recurso de Ingress usando o parâmetro spec.ingressClassName.

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

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: demo
    spec:
      config:
        name: alb-demo2                        # The name of the ALB instance.
        addressType: Internet                  # The load balancer has a public IP address.
        zoneMappings:                          # For high availability, select vSwitches in at least two different zones.
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the actual vSwitch ID (Zone 1).
        - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the actual vSwitch ID (Zone 2, must be different from Zone 1).
  2. Execute o comando a seguir para criar o AlbConfig.

    kubectl apply -f alb-demo2.yaml

    Saída esperada:

    AlbConfig.alibabacloud.com/demo created
  3. Crie um arquivo chamado alb.yaml e copie o conteúdo abaixo para criar uma IngressClass.

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-demo2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: demo
  4. Execute o comando a seguir para criar a IngressClass.

    kubectl apply -f alb.yaml

    Saída esperada:

    ingressclass.networking.k8s.io/alb-demo2 created
  5. Crie um arquivo chamado ingress.yaml e copie o conteúdo a seguir. Utilize o parâmetro ingressClassName para especificar diferentes instâncias ALB.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb-demo2
      rules:
        - host: ""
          http:
            paths:
              - backend:
                 service:
                  name: demo-service
                  port:
                    number: 80
                path: /hello
                pathType: ImplementationSpecific

Definir o tempo limite de requisição do listener

Em um AlbConfig, especifique um listener e defina o tempo limite de conexão da requisição em segundos. O valor deve estar entre 1 e 180. Se um servidor backend não responder dentro do período de tempo limite, o balanceador de carga retornará um erro HTTP 504 ao cliente. O tempo limite padrão é de 60 segundos.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: default
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 60
  ...

Usar compressão de dados

Em um AlbConfig, especifique um listener e ative ou desative a compressão de dados. A lista a seguir descreve os valores válidos de gzipEnabled.

  • true: Comprime tipos específicos de arquivos.

  • false: Não comprime nenhum tipo de arquivo.

Nota

O Brotli suporta a compressão de todos os tipos de arquivos. O Gzip suporta a compressão dos seguintes tipos de arquivos: text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml e application/json.

O código a seguir fornece um exemplo YAML para desativar a compressão de dados:

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

Recuperar endereços IP do cliente

Configure o listener para incluir o campo de cabeçalho X-Forwarded-For, permitindo que os servidores backend recuperem o endereço IP real do cliente. A lista a seguir descreve os valores válidos de XForwardedForEnabled.

  • true: Recupera os endereços IP reais dos clientes.

  • false: Não recupera os endereços IP reais dos clientes.

Nota

Este parâmetro pode ser configurado apenas para listeners HTTP e HTTPS.

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

Recuperar o protocolo do listener

No AlbConfig, utilize o campo XForwardedForProtoEnabled para recuperar o protocolo do listener da instância. Os valores são os seguintes:

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

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

Nota

Este parâmetro pode ser configurado apenas para listeners HTTP e HTTPS.

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

Recuperar o ID do balanceador de carga

Configure o listener para incluir o cabeçalho SLB-ID, permitindo que os servidores backend recuperem o ID da instância do balanceador de carga. A lista a seguir descreve os valores válidos de XForwardedForSLBIdEnabled.

  • true: Recupera o ID da instância do balanceador de carga.

  • false: Não recupera o ID da instância do balanceador de carga.

Nota

Este parâmetro pode ser configurado apenas para listeners HTTP e HTTPS.

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

Recuperar a porta do listener

Configure o listener para incluir o cabeçalho X-Forwarded-Port, permitindo que os servidores backend recuperem a porta do listener da instância. A lista a seguir descreve os valores válidos de XForwardedForSLBPortEnabled.

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

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

Nota

Este parâmetro pode ser configurado apenas para listeners HTTP e HTTPS.

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

Recuperar a porta do cliente

Configure o listener para incluir o cabeçalho X-Forwarded-Client-srcport, permitindo que os servidores backend recuperem a porta de origem do cliente. A lista a seguir descreve os valores válidos de XForwardedForClientSrcPortEnabled.

  • true: Recupera a porta do cliente da instância do balanceador de carga.

  • false: Não recupera a porta do cliente da instância do balanceador de carga.

Nota

Este parâmetro pode ser configurado apenas para listeners HTTP e HTTPS.

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

Configurar controle de acesso ACL

Utilize um AlbConfig para ativar o controle de acesso em um listener ALB. Ao definir regras de permissão ou negação para o tráfego de entrada, é possível controlar com precisão as requisições dos clientes e gerenciar o encaminhamento dessas requisições. Para mais informações sobre listas de controle de acesso (ACLs), consulte {{XREF_6}}.

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

A lista a seguir descreve alguns dos parâmetros:

  • aclType: Define se a ACL do listener é uma lista de bloqueios ou uma lista de permissões. Valores válidos: Black (lista de bloqueios) e White (lista de permissões).

  • aclEntries: Especifica os intervalos de endereços IP para as entradas de controle de acesso, como 127.0.0.1/32.

Excluir uma instância ALB

Uma instância ALB corresponde a um AlbConfig. Portanto, exclua um AlbConfig para remover a instância ALB correspondente. Antes de excluir o AlbConfig, remova todos os Ingresses associados a ele.

kubectl delete -n kube-system AlbConfig alb-demo

Substitua alb-demo pelo nome do AlbConfig que deseja excluir.

Excluir o AlbConfig de uma instância reutilizada

Caso deseje excluir o AlbConfig de uma instância ALB reutilizada, siga os passos abaixo.

  1. Exclua todos os Ingresses associados ao AlbConfig.

    kubectl delete -n <NAMESPACE> ingress <INGRESS_NAME>  # Replace <INGRESS_NAME> and <NAMESPACE> with the name and namespace of the Ingress that you want to delete.
  2. Use o comando kubectl edit para modificar o AlbConfig e excluir todos os seus listeners. Para isso, remova todas as entradas sob o campo spec.listeners.

    Importante

    Execute esta etapa apenas se a versão do seu ALB Ingress Controller for v2.10.0-aliyun.1 ou anterior.

  3. Exclua o AlbConfig.

    kubectl -n kube-system delete AlbConfig alb-demo # Replace alb-demo with the name of the AlbConfig that you want to delete.