Compartilhar via


Investigação de integridade personalizada para o Gateway de Aplicativos para contêineres

Por padrão, o Gateway de Aplicativos para contêineres monitora a integridade de todos os destinos de back-end. À medida que os destinos de back-end se tornam íntegros ou não íntegros, o Gateway de Aplicativos para contêineres distribui apenas o tráfego para pontos de extremidade íntegros.

Além de usar o monitoramento da investigação de integridade padrão, você também pode personalizar a investigação de integridade para atender às necessidades do seu aplicativo. Este artigo aborda as investigações de integridade padrão e personalizadas.

A ordem e a lógica da investigação de integridade são as seguintes:

  1. Use a definição de CR (Recurso Personalizado) de HealthCheckPolicy.
  2. Se não houver nenhum CR de HealthCheckPolicy, use a investigação de preparação
  3. Se não houver nenhuma investigação de preparação definida, use a investigação de integridade padrão

As seguintes propriedades compõem as investigações de integridade personalizadas:

Propriedade Valor padrão
intervalo Com que frequência em segundos as investigações de integridade devem ser enviadas para o destino de back-end. O intervalo mínimo precisa ser > 0 segundo.
timeout Quanto tempo em segundos a solicitação deve aguardar até ser marcada como uma falha. O intervalo mínimo precisa ser > 0 segundo.
healthyThreshold Número de investigações de integridade antes de marcar o ponto de extremidade de destino como íntegro. O intervalo mínimo precisa ser > 0.
porta O número da porta usado ao sondar o destino de back-end.
unhealthyThreshold O número de investigações de integridade com falha para que o destino de back-end seja rotulado como não íntegro. O intervalo mínimo precisa ser > 0.
grpc Especificado se o serviço de back-end está esperando conexões gRPC. O valor deve ser {}.
(http) Especificado se o serviço de back-end está esperando conexões http.
(HTTP) host O nome do host especificado na solicitação para o destino de back-end.
(HTTP) path O caminho específico da solicitação. Se um arquivo individual deve ser carregado, o caminho pode ser /index.html.
(HTTP -> correspondência) statusCodes Contém duas propriedades start e end, que definem o intervalo de códigos de status HTTP válidos retornados do back-end.
useTLS Especifica se a verificação de integridade deve impor o TLS. Se não for especificado, a verificação de integridade usará o mesmo protocolo que o serviço se a mesma porta for usada para verificação de integridade. Se a porta for diferente, a verificação de integridade será cleartext.

Um diagrama mostrando o Gateway de Aplicativo para Contêineres usando investigações de integridade personalizadas para determinar a integridade do back-end.

Investigação de integridade padrão

O Gateway de Aplicativos para contêineres configura automaticamente uma investigação de integridade padrão quando você não define uma configuração de investigação personalizada ou configura uma investigação de preparação. O comportamento de monitoramento funciona com uma solicitação HTTP GET para os endereços IP dos destinos de back-end configurados. No caso das investigações padrão, se o destino de back-end está configurado para HTTPS, a investigação usa o HTTPS para testar a integridade dos destinos de back-end.

Para obter mais detalhes de implementação, confira HealthCheckPolicyConfig na especificação da API.

Quando a investigação de integridade padrão é usada, os seguintes valores para cada propriedade de investigação de integridade são usados:

Propriedade Valor padrão
intervalo 5 segundos
timeout 30 segundos
healthyThreshold Uma investigação
unhealthyThreshold Três investigações
porta O número da porta usado é definido pelo número da porta de back-end no recurso de entrada ou porta de back-end HttpRoute no recurso HttpRoute.
(HTTP) host localhost
(HTTP) path /
useTLS HTTP para HTTP e HTTPS quando o TLS é especificado.

1 HTTPS é usado quando um backendTLSPolicy faz referência a um serviço de back-end de destino (para implementação de API de Gateway) ou IngressExtension com um protocolo backendSetting de HTTPS (para implementação da API de Entrada) é especificado.

Observação

Investigações de integridade são iniciadas com o valor User-Agent de Microsoft-Azure-Application-LB/AGC.

Investigação de integridade personalizada

Na API do Gateway e na API de Entrada, uma investigação de integridade personalizada pode ser definida com a definição de um recurso HealthCheckPolicyPolicy e a referência a um serviço em relação ao qual as investigações de integridade devem fazer a verificação. Como o serviço é referenciado por um recurso de HTTPRoute ou de Entrada com uma referência de classe ao Gateway de Aplicativos para contêineres, a investigação de integridade personalizada é usada para cada referência.

Neste exemplo, a investigação de integridade emitida pelo Gateway de Aplicativos para contêineres envia o nome do host contoso.com aos pods que compõem o serviço de teste. O protocolo solicitado é http com um caminho de /. Uma investigação é emitida a cada 5 segundos e aguarda 3 segundos antes de determinar se a conexão atingiu o tempo limite. Se uma resposta for recebida, um código de resposta HTTP entre 200 e 299 (incluindo 200 e 299) será considerado íntegro, e todas as outras respostas serão consideradas não íntegras.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
  name: gateway-health-check-policy
  namespace: test-infra
spec:
  targetRef:
    group: ""
    kind: Service
    name: test-service
    namespace: test-infra
  default:
    interval: 5s
    timeout: 3s
    healthyThreshold: 1
    unhealthyThreshold: 1
    port: 8123
    # grpc: {} # defined if probing a gRPC endpoint
    http:
      host: contoso.com
      path: /
      match:
        statusCodes: 
        - start: 200
          end: 299
    useTLS: true
EOF