Todos os produtos
Search
Central de documentação

Container Compute Service:Regras de encaminhamento personalizadas do ALB Ingress

Última atualização: Sep 14, 2026

O ALB Ingress oferece suporte a regras de roteamento personalizadas. Uma regra de roteamento consiste em condições e ações de roteamento. Você pode personalizar as condições de roteamento para corresponder a nomes de domínio, caminhos, cabeçalhos de solicitação, strings de consulta, métodos de solicitação, cookies ou endereços IP de origem. Também é possível especificar uma ação para retornar uma resposta fixa, redirecionar uma solicitação, inserir ou excluir um cabeçalho de solicitação, espelhar tráfego, encaminhar solicitações para vários grupos de servidores backend ou reescrever uma solicitação. Este tópico descreve como personalizar regras de roteamento para um ALB Ingress.

Pré-requisitos

É necessário um controlador ALB Ingress versão 2.5.0 ou posterior. Para atualizar o complemento, consulte Gerencie complementos.

Nota

O recurso para configurar regras de roteamento personalizadas no console está em lançamento canário. Para usar esse recurso, envie um ticket para solicitar acesso.

Condições de roteamento

Importante
  • Uma regra de roteamento pode ter no máximo 10 condições.

  • As condições de roteamento ResponseHeader e ResponseStatusCode são válidas apenas para regras que personalizam respostas.

Tipos de condição

No ALB Ingress, configure as condições de roteamento usando a anotação alb.ingress.kubernetes.io/conditions.<service-name>. As condições em blocos separados são avaliadas com um AND lógico, enquanto vários valores dentro do mesmo bloco são avaliados com um OR lógico. Por exemplo, dois blocos de condição Header separados são vinculados por AND, mas vários valores em um único bloco Header são vinculados por OR.

Condição

Descrição

Nome de domínio

Roteia solicitações com base no nome de domínio. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.host-example: |
  [{
      "type": "Host",
      "hostConfig": {
        "values": [
          "anno.example.com"
        ]
      }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como Host para corresponder a solicitações com base no nome de domínio.

  • hostConfig: Os nomes de domínio a serem correspondidos. Se você especificar vários nomes de domínio, será aplicado um OR lógico.

Caminho

Roteia solicitações com base no caminho. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.path-example: |
  [{
    "type": "Path",
    "pathConfig": {
      "values": [
        "/pathvalue1",
        "/pathvalue2"
      ]
    }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como Path para corresponder a solicitações com base no caminho da solicitação.

  • pathConfig: Os caminhos de solicitação a serem correspondidos. Se você especificar vários caminhos, será aplicado um OR lógico.

Cabeçalho

Roteia solicitações com base em um cabeçalho de solicitação. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.http-header-example: |
  [{
    "type": "Header",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como Header para corresponder a solicitações com base em um cabeçalho de solicitação.

  • headerConfig: O par chave-valor do cabeçalho de solicitação. Se você especificar vários valores para a mesma chave, será aplicado um OR lógico nos valores.

String de consulta

Roteia solicitações com base em uma string de consulta. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.query-string-example: |
  [{
    "type": "QueryString",
    "queryStringConfig": {
      "values": [
        {
           "key":"querystringkey1",
           "value":"querystringvalue2"
        }
      ]
    }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como QueryString para corresponder a solicitações com base em uma string de consulta.

  • queryStringConfig: Um par chave-valor para a string de consulta. A chave e o valor devem ter de 1 a 100 caracteres. Podem conter letras minúsculas, caracteres visíveis e os curingas asterisco (*) e ponto de interrogação (?). Espaços e os seguintes caracteres não são suportados: #[]{}\|<>&. Se você especificar vários pares chave-valor, será aplicado um OR lógico.

Método de solicitação

Roteia solicitações com base no método de solicitação. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.http-method-example: |
  [{
    "type": "Method",
    "methodConfig": {
      "values": [
        "GET",
        "HEAD"
      ]
    }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como Method para corresponder a solicitações com base no método de solicitação.

  • methodConfig: Os métodos de solicitação a serem correspondidos. Os métodos suportados incluem GET, POST, PUT, DELETE, HEAD, OPTIONS e PATCH. Se você especificar vários métodos, será aplicado um OR lógico.

Cookie

Roteia solicitações com base em um cookie. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.http-cookie-example: |
  [{
    "type": "Cookie",
    "cookieConfig": {
      "values": [
        {
           "key":"cookiekey1",
           "value":"cookievalue2"
        }
      ]
     }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como Cookie para corresponder a solicitações com base em um cookie.

  • cookieConfig: Um par chave-valor para o cookie. A chave e o valor devem ter de 1 a 100 caracteres. Podem conter letras minúsculas, caracteres visíveis e os curingas asterisco (*) e ponto de interrogação (?). Espaços e os seguintes caracteres não são suportados: #[]{}\|<>&. Se você especificar vários pares chave-valor, será aplicado um OR lógico.

SourceIP

Roteia solicitações com base no endereço IP de origem. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.source-ip-example: |
  [{
    "type": "SourceIp",
    "sourceIpConfig": {
      "values": [
        "192.168.0.0/16",
        "172.16.0.0/16"
      ]
    }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como SourceIP para corresponder a solicitações com base no endereço IP de origem.

  • sourceIpConfig: Os endereços IP de origem ou blocos CIDR a serem correspondidos. Se você especificar várias entradas, será aplicado um OR lógico.

ResponseHeader

Personaliza uma resposta com base no cabeçalho de resposta. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.response-header-example: |
  [{
    "type": "ResponseHeader",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como ResponseHeader para corresponder a respostas com base em um cabeçalho de resposta.

  • headerConfig: O par chave-valor do cabeçalho de resposta. Se você especificar vários valores para a mesma chave, será aplicado um OR lógico nos valores.

ResponseStatusCode

Personaliza uma resposta com base no código de status da resposta. Veja um exemplo abaixo.

alb.ingress.kubernetes.io/conditions.response-code-example: |
  [{
    "type": "ResponseStatusCode",
    "responseStatusCodeConfig": {
      "values": [
        "statuscode1",
        "statuscode2"
      ]
    }
  }]
  • type: O tipo de condição de roteamento. Defina o valor como ResponseStatusCode para corresponder a respostas com base no código de status da resposta.

  • responseStatusCodeConfig: Os códigos de status de resposta a serem correspondidos. Se você especificar vários códigos de status, será aplicado um OR lógico.

Caso de uso 1: IP de origem e cabeçalho

Importante

Você pode especificar no máximo cinco condições SourceIp por regra de roteamento.

A configuração YAML a seguir demonstra como rotear o tráfego com base no endereço IP de origem da solicitação, em um cabeçalho específico e no caminho da solicitação.

As solicitações são roteadas para o service gray-hello somente se atenderem a todos os seguintes critérios: o IP de origem é de 192.168.0.0/16 ou 172.16.0.0/16, a solicitação contém um cabeçalho chamado gray-hello com valor value1 ou value2, e o caminho da solicitação é /hello. Todas as outras solicitações são roteadas para outros services.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello: |
     [{
       "type": "Header",
       "headerConfig": {
          "key":"gray-hello",
           "values": [
              "value1",
              "value2"
           ]
       }
      },
      {
         "type": "SourceIp",
         "sourceIpConfig": {
           "values": [
             "192.168.0.0/16",
             "172.16.0.0/16"
           ]
         }
     }]
  name: gray-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello
            port:
              number: 88

alb.ingress.kubernetes.io/order: Especifica a prioridade do Ingress. Um número menor indica uma prioridade maior.

Caso de uso 2: Nome de domínio, método de solicitação e cookie

A configuração YAML a seguir mostra como rotear o tráfego com base no nome de domínio, no método de solicitação e em um cookie.

As solicitações são roteadas para o service service-a somente se atenderem a todos os seguintes critérios: o método de solicitação é GET ou HEAD, o nome de domínio é www.hostvalue1.edu ou www.hostvalue2.edu, a solicitação contém um cookie com a chave cookiekey1 e valor cookievalue1, e o caminho da solicitação é /test. Solicitações que não correspondem são roteadas para o service service-b.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "www.hostvalue1.edu",
              "www.hostvalue2.edu"
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Caso de uso 3: String de consulta, cabeçalhos e caminho

A configuração YAML a seguir demonstra como rotear o tráfego combinando condições para uma string de consulta e vários cabeçalhos para um caminho específico.

Uma solicitação é roteada para service-a se o caminho da solicitação for /pathvalue1, /pathvalue2 ou /test, a chave da string de consulta for querystringkey1 e seu valor for querystringvalue2, o cabeçalho da solicitação contiver headerkey1 e headerkey2, o valor do cabeçalho headerkey1 for headervalue1 ou headervalue2, e o valor do cabeçalho headerkey2 for headervalue3 ou headervalue4. Caso contrário, a solicitação é roteada para service-b.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "/pathvalue1",
              "/pathvalue2"
           ]
       }
      },
      {
       "type": "QueryString",
       "queryStringConfig": {
         "values": [
           {
             "key":"querystringkey1",
             "value":"querystringvalue2"
           }
        ]
       }
      },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey1",
           "values": [
              "headervalue1",
              "headervalue2"
           ]
       }
     },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey2",
           "values": [
              "headervalue3",
              "headervalue4"
           ]
       }
     }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Ação de encaminhamento

Ações de encaminhamento

O ALB Ingress permite configurar ações de roteamento usando a anotação alb.ingress.kubernetes.io/actions.<service name>. Adicione ações para retornar respostas fixas, redirecionar solicitações, inserir ou excluir cabeçalhos de solicitação, espelhar tráfego, encaminhar solicitações para vários grupos de servidores backend e reescrever solicitações. Essas ações oferecem controle flexível sobre as regras de roteamento para solicitações e respostas.

Importante
  • O nome do service na anotação alb.ingress.kubernetes.io/actions.<service name> deve corresponder ao nome do service especificado em backend no campo rule.

  • Na mesma regra de roteamento, ações terminais como redirecionamentos, respostas fixas e encaminhamento para vários grupos de servidores são mutuamente exclusivas.

  • Ao configurar redirecionamento, resposta fixa ou encaminhamento para vários grupos de servidores, o nome do servicePort na seção backend do campo rule deve ser use-annotation.

Ações de roteamento de entrada

Ação

Descrição

Resposta fixa

Retorna uma resposta fixa aos clientes. Defina o código de status da resposta, o corpo e o tipo de conteúdo.

alb.ingress.kubernetes.io/actions.response-503: |
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type: O tipo de ação de encaminhamento. Defina como FixedResponse para configurar uma resposta fixa.

  • contentType: O tipo de conteúdo do corpo da resposta.

  • httpCode: O código de status da resposta.

  • content: O corpo da resposta.

Redirecionamento

Redireciona solicitações de cliente para uma URL diferente usando um código de status HTTP 3xx.

Importante

Especifique pelo menos um parâmetro na configuração de redirecionamento além de httpCode.

alb.ingress.kubernetes.io/actions.redirect: |
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "${port}",
          "protocol": "${protocol}",
          "query": "${query}",
          "httpCode": "301"
      }
  }]
  • type: O tipo de ação de encaminhamento. Defina como Redirect para configurar um redirecionamento.

  • host: O nome de domínio de destino para o redirecionamento.

  • path: O caminho de destino para o redirecionamento.

  • port: A porta de destino para o redirecionamento.

  • protocol: O protocolo de destino para o redirecionamento.

  • query: A string de consulta de destino para o redirecionamento.

  • httpCode: O código de status.

Espelhamento de tráfego

Copia solicitações e as encaminha para um grupo de servidores de espelhamento de tráfego.

Importante
  • A ação de encaminhamento de espelhamento de tráfego só pode ser usada com as ações de encaminhamento, inserção de cabeçalho, remoção de cabeçalho e limitação de taxa. É incompatível com as ações de reescrita, resposta fixa e redirecionamento.

  • Um grupo de servidores de espelhamento de tráfego só pode ser associado usando ServerGroupID.

alb.ingress.kubernetes.io/actions.traffic-mirror: |
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type: O tipo de ação de encaminhamento. Defina como TrafficMirror para configurar o espelhamento de tráfego.

  • TargetType: O tipo de alvo de espelhamento. Atualmente, apenas ForwardGroupMirror é suportado, que espelha solicitações para um grupo de servidores.

  • ServerGroupID: O ID do grupo de servidores de espelhamento de tráfego.

Encaminhamento para vários grupos de servidores backend

Encaminha solicitações para vários grupos de servidores backend. Especifique um grupo de servidores backend usando seu ServerGroupID, ou crie/associe um usando uma combinação de ServiceName e ServicePort. Também é possível definir um peso para cada grupo de servidores para distribuir as solicitações.

Importante
  • Uma instância ALB padrão pode ser associada a no máximo cinco grupos de servidores.

  • Se você usar tanto ServerGroupID quanto ServiceName+ServicePort para anexar um grupo de servidores, o sistema prioriza o ServerGroupID para corresponder ao grupo de servidores backend.

alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" : [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-71aexb9y93ypo*****",
                   "Weight": 20
                 },
                 {
                   "ServerGroupID": "sgp-slygpbvm2cydo*****",
                   "Weight": 30
                 }]
               }
           }]
  • type: O tipo de ação de encaminhamento. Defina como ForwardGroup para encaminhar solicitações para vários grupos de servidores backend.

  • ForwardConfig: A configuração para os grupos de servidores backend. Se vários grupos de servidores forem especificados, as solicitações serão distribuídas entre eles com base em seus pesos.

  • ServerGroupID: O ID do grupo de servidores.

  • ServiceName: O nome do service.

  • ServicePort: A porta do service.

  • Weight: O peso do grupo de servidores. Determina a proporção de solicitações encaminhadas para o grupo de servidores.

Reescrita

Reescreve o host, o caminho ou a string de consulta de uma solicitação.

Importante
  • A ação de encaminhamento de reescrita entra em conflito com a anotação rewrite-target. Não configure ambas.

  • Esta ação não pode ser usada com ações de encaminhamento de resposta fixa ou redirecionamento.

alb.ingress.kubernetes.io/actions.rewrite: |
           [{
               "type": "Rewrite",
               "RewriteConfig": {
                   "Host": "demo.domain.ingress.top",
                   "Path": "/test",
                   "Query": "querystring"
               }
           }]
  • type: O tipo de ação de encaminhamento. Defina como Rewrite para configurar uma reescrita.

  • RewriteConfig: Os parâmetros para a reescrita.

  • Host: O nome de domínio para o qual o host da solicitação é reescrito.

  • Path: O caminho para o qual o caminho da solicitação é reescrito.

  • Query: A string de consulta para a qual a string de consulta da solicitação é reescrita.

Para mais informações, consulte Configure rewrite.

Inserir cabeçalho

Insere um cabeçalho na solicitação. Se já existir um cabeçalho com o mesmo nome, ele será substituído.

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: O tipo de ação de encaminhamento. Defina como InsertHeader para inserir um cabeçalho.

  • key: O nome do campo de cabeçalho.

  • value: O valor do campo de cabeçalho.

  • valueType: O tipo do valor.

Remover cabeçalho

Remove um cabeçalho especificado da solicitação.

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: O tipo da ação de encaminhamento. Defina o valor como RemoveHeader para remover um cabeçalho de solicitação.

key: O nome do campo de cabeçalho da solicitação.

Limitação de taxa

Limita a taxa de solicitações com base nas consultas totais por segundo (QPS) e no QPS de um endereço IP de cliente específico.

Importante
  • A ação de encaminhamento de limitação de taxa deve ser usada com uma ação que encaminha solicitações para um grupo de servidores.

  • Se o cabeçalho de solicitação X-Forwarded-For contiver vários endereços IP, como X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, o endereço mais à esquerda é o endereço IP real do cliente. Para usar a limitação de taxa com base no endereço IP do cliente, ative a opção de recuperar endereços IP do cliente no listener. Isso permite que o ALB identifique o endereço IP real do cliente a partir do cabeçalho X-Forwarded-For. Para mais informações, consulte XForwardedForConfig.

 annotations:
    alb.ingress.kubernetes.io/actions.traffic-limit: |
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type: Especifica o tipo de ação de encaminhamento. Defina este parâmetro como TrafficLimit. Este valor indica uma configuração de limitação de tráfego.

  • QPS: O limite geral de taxa de solicitação, que é o número de solicitações que podem ser processadas por segundo. O intervalo válido de valores é [1,1000000]. Se a taxa de solicitação exceder o limite especificado, novas solicitações de conexão em excesso serão rejeitadas e o cliente receberá um código de status HTTP 503.

  • QPSPerIp: Especifica o limite de taxa de solicitação com base em cada endereço IP de cliente. O intervalo de valores é [1,1000000]. Quando tanto QPS (o limite geral de taxa) quanto QPSPerIp (o limite de taxa por IP) são definidos, o valor de QPSPerIp deve ser menor que o valor de QPS. Se a taxa de solicitação exceder o limite configurado, as solicitações em excesso serão rejeitadas e o cliente receberá um código de status HTTP 503.

Ações de roteamento de saída

Ação

Descrição

inserir cabeçalho de solicitação

Insere um cabeçalho com o nome e valor especificados. Se já existir um cabeçalho com o mesmo nome, ele será substituído.

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: O tipo de ação de encaminhamento. Defina como InsertHeader para inserir um cabeçalho de solicitação.

  • key: O nome do campo de cabeçalho.

  • value: O valor do campo de cabeçalho.

  • valueType: O tipo do valor.

remover cabeçalho de solicitação

Remove um cabeçalho especificado da solicitação.

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: O tipo de ação de encaminhamento. Defina como RemoveHeader para remover um cabeçalho de solicitação.

key: O nome do campo de cabeçalho.

Cenário 1: Definir uma resposta 503 fixa e conteúdo

Console

  1. Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, escolha Network > Ingresses.

Na página Ingresses, clique em Create Ingress e, na caixa de diálogo Create Ingress, configure o Ingress.

Parâmetro

Descrição

Exemplo

Gateway Type

Selecione o tipo de gateway, ALB ou MSE Ingress, com base nas necessidades do seu negócio.

ALB

Name

Um nome personalizado para o Ingress.

ingress

Ingress Class

Uma classe personalizada para o Ingress.

alb

Listener/Port

A porta do listener e o protocolo para a instância ALB, conforme definido no AlbConfig. Esta configuração especifica como o balanceador de carga recebe e processa o tráfego de entrada.

HTTP:80

Rules

Clique em +Add Rule para adicionar várias regras de roteamento.

  • Domain Name: Um nome de domínio personalizado.

  • Mappings: Configure os seguintes parâmetros.

    • Path: O caminho da URL para acessar o service. Neste exemplo, este parâmetro é deixado vazio para usar o caminho raiz /.

    • Rule: Suporta Prefix (Prefix-based Match), Exact (Exact Match) e ImplementationSpecific (Default Value).

    • Service: O backend de destino, que é um Kubernetes Service.

    • Port: A porta que o service expõe.

  • Um Ingress suporta vários caminhos sob o mesmo nome de domínio. Clique em +Add para adicionar um novo caminho.

  • Domain Name: Deixe em branco.

  • Mappings:

    • Path: /

    • Rule: Default (Prefix)

    • Service: response-503

    • Port: 80

TLS Settings

Configure o TLS para ativar um service de roteamento seguro.

  • Domain Name: Um nome de domínio personalizado.

  • Secrets: Selecione um Secret conforme necessário.

Desative TLS Settings. Isso não é necessário para este exemplo.

More

  • Canary Release: Ative este recurso para configurar um lançamento canário. Você pode definir regras canárias com base em cabeçalhos de solicitação, cookies ou peso de tráfego.

    Nota

    Você pode definir apenas uma dessas condições. Se definir várias condições, o controlador Ingress as avaliará na ordem de cabeçalho de solicitação, cookie e, em seguida, peso.

    • Based on Request Header: Divide o tráfego com base no cabeçalho de solicitação. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-by-header, nginx.ingress.kubernetes.io/canary-by-header-value ou nginx.ingress.kubernetes.io/canary-by-header-pattern.

    • Based on Cookie: Divide o tráfego com base no cookie. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-by-cookie.

    • Based on Weight: A porcentagem de solicitações (um número inteiro de 0 a 100) a ser roteada para o service especificado. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-weight.

  • Protocol: O protocolo usado para se comunicar com o service backend. Isso adiciona a anotação nginx.ingress.kubernetes.io/backend-protocol.

    HTTP, HTTPS, gRPC e gRPCS são suportados.

  • Rewrite Path: Reescreve o caminho em uma solicitação de cliente antes de enviá-la ao service backend. Isso adiciona a anotação nginx.ingress.kubernetes.io/rewrite-target.

Desative o lançamento canário. Mantenha o protocolo e o caminho de reescrita padrão. Essas configurações não são necessárias para este exemplo.

Custom Forwarding Rules

Nota

O recurso para configurar regras de encaminhamento personalizadas no console está em lançamento canário. Para usar este recurso, envie um ticket para solicitar acesso.

Use regras de encaminhamento personalizadas para gerenciamento refinado do tráfego de entrada.

Nota

Adicione no máximo 10 condições a uma regra de encaminhamento.

  • Na lista suspensa Add Condition, selecione uma condição:

    • Domain Name:

      Corresponde a solicitações com base no nome de domínio. Se você especificar vários nomes de domínio, a relação entre eles será um OR lógico. Configurar esta condição adiciona a anotação alb.ingress.kubernetes.io/conditions.host-example.

    • Path:

      Corresponde a solicitações com base no caminho da solicitação. Se você especificar vários caminhos, a relação entre eles será um OR lógico. Configurar esta condição adiciona a anotação alb.ingress.kubernetes.io/conditions.path-example.

    • HTTP Header:

      Corresponde a solicitações com base no par chave-valor de um cabeçalho de solicitação. Por exemplo, defina a Key como headername e o Value como headervalue1. Se você especificar vários valores de cabeçalho, a relação entre eles será um OR lógico. Configurar esta condição adiciona a anotação alb.ingress.kubernetes.io/conditions.http-header-example.

  • Na lista suspensa Action, selecione uma ação:

    • Forward To

      Encaminha solicitações para vários grupos de servidores backend. Em Service, selecione o Service de destino. Em Port, selecione o número da porta de destino. Em seguida, configure um valor de peso personalizado.

      Nota
      • Se o cluster usar o plugin de rede Flannel, Services do tipo ClusterIP não são suportados.

      • Se você selecionar esta ação, não precisará configurar mapeamentos de caminho na regra.

    • Return Fixed Response

      Configura a instância ALB para retornar uma resposta fixa ao cliente. Defina o código de status da resposta, o conteúdo e o tipo de conteúdo. Configure Response Status Code, Response Content Type (Optional) e Response Content (Optional) conforme necessário.

      Tipo de conteúdo da resposta:

      • text/plain: Formato de texto simples.

      • text/css: Formato CSS.

      • text/html: Formato HTML.

      • application/javascript: Formato JavaScript.

      • application/json: Formato JSON.

Combine várias condições (com base em domínio, caminho ou cabeçalho HTTP) e ações (como encaminhamento para um backend ou retorno de uma resposta fixa).

  • Add Condition: Selecione Path. (Mantenha a configuração padrão)

  • Action: Return fixed response

    • Response Status Code: 503

    • Response Content Type (Optional): text/plain

    • Response Content (Optional): error

Annotations

Adicione anotações personalizadas especificando uma chave e um valor, ou selecione/pesquise uma anotação por sua chave. Para mais informações sobre anotações de Ingress, consulte ALB Ingress annotation reference.

Clique em + Add Annotation para adicionar várias anotações ao Ingress.

Este parâmetro não é necessário para este exemplo.

Labels

Especifica rótulos para adicionar ao Ingress. Rótulos são pares chave-valor anexados a objetos para especificar atributos de identificação.

Este parâmetro não é necessário para este exemplo.

  1. Após concluir a configuração, clique em OK.

Kubectl

O YAML a seguir define um Ingress que retorna o código de status 503 e o conteúdo 503 error text para solicitações que correspondem às suas regras.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.response-503: |
      [{
          "type": "FixedResponse",
          "FixedResponseConfig": {
              "contentType": "text/plain",
              "httpCode": "503",
              "content": "503 error text"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: response-503
                port:
                  name: use-annotation # The `name` of the Service port must be `use-annotation`.

Cenário 2: Redirecionamento 301 para uma porta HTTPS

O bloco de código a seguir redireciona solicitações de service para a porta HTTPS correspondente.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "${port}",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect
                port:
                  name: use-annotation # The service port name must be 'use-annotation'.

Cenário 3: Adicionar cabeçalho de solicitação 'source: alibaba'

Este bloco de código substitui o cabeçalho de solicitação em solicitações de service por source: alibaba.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
  # The referenced Service must exist in the cluster, and its name must match the one in the rule's `backend` field.
    alb.ingress.kubernetes.io/actions.insert-header: |
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header
                port:
                  number: 80

Cenário 4: Espelhamento de tráfego

O código a seguir demonstra como copiar solicitações para um grupo de servidores de espelhamento de tráfego.

Faça login no console do Application Load Balancer (ALB). No painel de navegação à esquerda, escolha ALB > Server Groups e localize o ID do grupo de servidores.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # The service in the annotation must exist in the cluster, and its service name must match the one in the backend of the rule field.
   alb.ingress.kubernetes.io/actions.traffic-mirror: |
       [{
           "type": "TrafficMirror",
           "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: traffic-mirror
            port:
              number: 80

Cenário 5: Encaminhar solicitações para vários grupos backend

Configurar no console

  1. Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, escolha Network > Ingresses.

  3. Na página Ingresses, clique em Create Ingress e, na caixa de diálogo Create Ingress, configure o Ingress.

    Parâmetro

    Descrição

    Exemplo

    Gateway Type

    Selecione ALB ou MSE Ingress como o tipo de gateway.

    ALB

    Name

    Um nome personalizado para o Ingress.

    forward-ingress

    Ingress Class

    Uma classe personalizada para o Ingress.

    alb

    Listener/Port

    A porta do listener e o protocolo para a instância ALB, conforme definido no AlbConfig. Esta configuração especifica como o balanceador de carga processa o tráfego de entrada.

    HTTP:80

    Rules

    Clique em +Add Rule para adicionar várias regras de roteamento.

    • Domain Name: Um nome de domínio personalizado.

    • Mappings: Configure os seguintes parâmetros.

      • Path: O caminho da URL para acessar o service. Neste exemplo, este parâmetro é deixado vazio para usar o caminho raiz /.

      • Rule: Suporta Prefix (Prefix-based Match), Exact (Exact Match) e ImplementationSpecific (Default Value).

      • Service: O backend de destino, que é um Kubernetes Service.

      • Port: A porta que o service expõe.

    • Um Ingress suporta vários caminhos sob o mesmo nome de domínio. Clique em +Add para adicionar um novo caminho.

    • Domain Name: demo.domain.ingress.top

    • Mappings:

      • Path: /path

      • Rule: Default (Prefix match)

      • Service: forward

      • Port: 80

    TLS Settings

    Ative para proteger o Ingress com TLS.

    • Domain Name: Um nome de domínio personalizado.

    • Secrets: Selecione um Secret. Para criar um Secret, execute as seguintes etapas:

    1. À direita de Secret, clique em Create.

    2. Na caixa de diálogo Create Secret, especifique um Name, Cert e Key para o Secret e clique em OK.

    3. Na lista suspensa Secret, selecione o Secret que você criou.

    Desative TLS Settings. Isso não é necessário para este exemplo.

    More

    • Canary Release: Ative este recurso para configurar um lançamento canário. Você pode definir regras canárias com base em cabeçalhos de solicitação, cookies ou peso de tráfego.

      Nota

      Você pode definir apenas uma dessas condições. Se definir várias condições, o controlador Ingress as avaliará na ordem de cabeçalho de solicitação, cookie e, em seguida, peso.

      • Based on Request Header: Divide o tráfego com base no cabeçalho de solicitação. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-by-header, nginx.ingress.kubernetes.io/canary-by-header-value ou nginx.ingress.kubernetes.io/canary-by-header-pattern.

      • Based on Cookie: Divide o tráfego com base no cookie. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-by-cookie.

      • Based on Weight: A porcentagem de solicitações (um número inteiro de 0 a 100) a ser roteada para o service especificado. Isso adiciona a anotação nginx.ingress.kubernetes.io/canary-weight.

    • Protocol: O protocolo usado para se comunicar com o service backend. Isso adiciona a anotação nginx.ingress.kubernetes.io/backend-protocol.

      HTTP, HTTPS, gRPC e gRPCS são suportados.

    • Rewrite Path: Reescreve o caminho em uma solicitação de cliente antes de enviá-la ao service backend. Isso adiciona a anotação nginx.ingress.kubernetes.io/rewrite-target.

    Desative o Canary Release. Use os valores padrão para Protocol e Rewrite Path. Essas configurações não são necessárias para este exemplo.

    Custom Forwarding Rules

    Nota

    Este recurso está em lançamento canário. Para usar este recurso, envie um ticket para solicitar acesso.

    Ative esta opção para permitir o gerenciamento refinado do tráfego de entrada.

    Nota

    Adicione no máximo 10 condições a uma regra de encaminhamento.

    • Na lista suspensa Add Condition, selecione uma condição:

      • Domain Name:

        Corresponde a solicitações com base no nome de domínio. Se você especificar vários nomes de domínio, a relação lógica entre eles será OR. Após configurar esta condição, a anotação alb.ingress.kubernetes.io/conditions.host-example é adicionada.

      • Path:

        Corresponde a solicitações com base no caminho da solicitação. Se você especificar vários caminhos, a relação lógica entre eles será OR. Após configurar esta condição, a anotação alb.ingress.kubernetes.io/conditions.path-example é adicionada.

      • HTTP Header:

        Corresponde a solicitações com base no par chave-valor de um cabeçalho de solicitação. Por exemplo, defina a Key como headername e o Value como headervalue1. Se você especificar vários valores de cabeçalho, a relação lógica entre eles será OR. Após configurar esta condição, a anotação alb.ingress.kubernetes.io/conditions.http-header-example é adicionada.

    • Na lista suspensa Action, selecione uma ação:

      • Forward To

        Encaminha solicitações para vários grupos de servidores backend. No campo Service, selecione o service de destino. No campo Port, selecione o número da porta de destino. Em seguida, configure um valor de peso personalizado.

        Nota
        • Se o cluster usar o plugin de rede Flannel, services ClusterIP não são suportados.

        • Se você selecionar Forward To, os mapeamentos de caminho não são necessários na regra.

      • Return Fixed Response

        Retorna uma resposta fixa ao cliente a partir da instância ALB. Defina o código de status da resposta, o conteúdo e o tipo de conteúdo. Configure os parâmetros Response Status Code, Response Content Type (Optional) e Response Content (Optional) conforme necessário.

        Tipo de Conteúdo da Resposta:

        • text/plain: Conteúdo de texto simples.

        • text/css: Conteúdo formatado em CSS.

        • text/html: Conteúdo formatado em HTML.

        • application/javascript: Conteúdo formatado em JavaScript.

        • application/json: Conteúdo formatado em JSON.

    • Forwarding Condition: Selecione Domain. Domain: demo.domain.ingress.top

    • Forwarding Action: Forward To

      • Service Name: tea-svc

      • Port: 80

      • Weight: 80

    • Add Service

      • Service Name: coffee-svc

      • Port: 80

      • Weight: 20

    Annotations

    Adicione anotações personalizadas especificando uma chave e um valor, ou selecione/pesquise uma anotação por sua chave. Para mais informações sobre anotações de Ingress, consulte ALB Ingress annotation reference.

    Clique em +Add Annotation para adicionar um número ilimitado de anotações ao Ingress.

    Este parâmetro não é necessário para este exemplo.

    Labels

    Especifica rótulos para adicionar ao Ingress. Rótulos são pares chave-valor anexados a objetos para especificar atributos de identificação.

    Este parâmetro não é necessário para este exemplo.

  4. Após concluir a configuração, clique em OK no canto inferior esquerdo da página Create Ingress.

Usar kubectl

Este manifesto YAML define um Ingress que encaminha solicitações para vários services no cluster.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # The Service in this annotation must exist in the cluster and match the ServiceName under `backend` in the rule.
    alb.ingress.kubernetes.io/actions.forward: |
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 80,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             }]
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /path
        pathType: Prefix
        backend:
          service:
            name: forward
            port:
              name: use-annotation # The port name must be use-annotation.

Cenário 6: Reescrita de solicitação

Este bloco de código define um Ingress que reescreve o nome de domínio, o caminho e a string de consulta de uma solicitação.

Cenário 7: Modifique cabeçalhos de resposta

Importante
  • Por padrão, as regras de roteamento do ALB Ingress aplicam-se à direção de entrada. Para criar regras de roteamento para a direção de saída, defina a anotação alb.ingress.kubernetes.io/rule-direction.<service-name> como Response. O valor padrão é Request.

  • Ao criar uma regra de roteamento para a direção de saída, defina o campo servicePort em ingressSpec.rules.backend como use-annotation.

O bloco de código a seguir insere o cabeçalho de solicitação source: alibaba quando há uma correspondência de ResponseHeader no cabeçalho response-hello com um valor de value1 ou value2.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-header: Response
   alb.ingress.kubernetes.io/conditions.response-header: |
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: |
     [{
         "type": "InsertHeader",
         "InsertHeaderConfig": {
             "key": "source",
             "value": "alibaba",
             "valueType": "UserDefined"
         }
     }]
  name: response-header
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-header
            port:
              name: use-annotation # The service port name must be use-annotation.

Cenário 8: Modifique cabeçalho de resposta por código de status

Importante
  • Por padrão, as regras de roteamento personalizadas do ALB Ingress aplicam-se a solicitações. Para criar uma regra de roteamento para respostas, defina a anotação alb.ingress.kubernetes.io/rule-direction.<Service name> como Response. Por padrão, esta anotação é definida como Request.

  • Ao criar uma regra de roteamento para respostas, o servicePort no campo ingressSpec.rules.backend deve ser use-annotation.

A regra no bloco de código a seguir remove o cabeçalho de solicitação response-hello somente se o código de status da resposta for 200 ou 300.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-hello: Response
   alb.ingress.kubernetes.io/conditions.response-hello: |
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello
            port:
              name: use-annotation # The service port name must be use-annotation.