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:
- Use a definição de CR (Recurso Personalizado) de HealthCheckPolicy.
- Se não houver nenhum CR de HealthCheckPolicy, use a investigação de preparação
- 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. |
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