Sonda de integridade personalizada para o Application Gateway for Containers
O Application Gateway for Containers monitora a integridade de todos os destinos de back-end por padrão. À medida que os destinos de back-end se tornam íntegros ou não íntegros, o Application Gateway for Containers distribui apenas o tráfego para pontos de extremidade íntegros.
Além de usar o monitoramento de teste de integridade padrão, você também pode personalizar o teste de integridade para atender aos requisitos do seu aplicativo. Este artigo discute as sondas de integridade padrão e personalizadas.
A ordem e a lógica da sondagem de saúde são as seguintes:
- Use a definição de HealthCheckPolicy Custom Resource (CR).
- Se não houver CR HealthCheckPolicy, use o teste Readiness
- Se não houver nenhum teste de preparação definido, use o teste de integridade padrão
As seguintes propriedades compõem testes de integridade personalizados:
Property | Valor Predefinido |
---|---|
interval | Com que frequência, em segundos, as sondas de integridade devem ser enviadas para o destino de back-end. O intervalo mínimo deve ser > de 0 segundos. |
tempo limite | Quanto tempo em segundos a solicitação deve esperar até ser marcada como uma falha. O intervalo mínimo deve ser > de 0 segundos. |
saudávelLimiar | Número de testes de integridade antes de marcar o endpoint de destino como íntegro. O intervalo mínimo deve ser > 0. |
porta | O número da porta usado ao sondar o destino de back-end. |
unhealthyThreshold | O número de testes de integridade a falhar antes que o destino de back-end seja rotulado como não íntegro. O intervalo mínimo deve 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) anfitrião | O nome do host especificado na solicitação para o destino de back-end. |
(http) caminho | O caminho específico da solicitação. Se um único arquivo 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 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á um texto não criptografado. |
Sonda de integridade padrão
O Application Gateway for Containers configura automaticamente uma sonda de integridade padrão quando você não define uma configuração de teste personalizada ou configura uma sonda de preparação. O comportamento de monitoramento funciona fazendo uma solicitação HTTP GET para os endereços IP de destinos de back-end configurados. Para testes padrão, se o destino de back-end estiver configurado para HTTPS, o teste usará HTTPS para testar a integridade dos destinos de back-end.
Para obter mais detalhes de implementação, consulte HealthCheckPolicyConfig na especificação da API.
Quando a sonda de integridade padrão é usada, os seguintes valores para cada propriedade da sonda de integridade são usados:
Property | Valor Predefinido |
---|---|
interval | 5 segundos |
tempo limite | 30 segundos |
saudávelLimiar | 1 sonda |
unhealthyThreshold | 3 sondas |
porta | O número da porta usada é definido pelo número da porta de back-end no recurso Ingress ou porta de back-end HttpRoute no recurso HttpRoute. |
(http) anfitrião | localhost |
(http) caminho | / |
useTLS | HTTP para HTTP e HTTPS quando 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 de API de Ingresso) é especificado.
Nota
As sondas de saúde são iniciadas com o User-Agent
valor de Microsoft-Azure-Application-LB/AGC
.
Sonda de integridade personalizada
Tanto na API de gateway quanto na API de entrada, uma investigação de integridade personalizada pode ser definida definindo um recurso HealthCheckPolicyPolicy e fazendo referência a um serviço que as sondas de integridade devem verificar. Como o serviço é referenciado por um recurso HTTPRoute ou Ingress com uma referência de classe ao Application Gateway for Containers, a investigação de integridade personalizada é usada para cada referência.
Neste exemplo, o teste de integridade emitido pelo Application Gateway for Containers envia o contoso.com de nome do host para os pods que compõem o serviço de teste. O protocolo solicitado está http
com um caminho de /
. Uma sonda é 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) é considerado íntegro, todas as outras respostas sã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