Sonde d’intégrité personnalisée pour Application Gateway pour conteneurs
Application Gateway pour conteneurs surveille l’intégrité de toutes les cibles back-end par défaut. À mesure que les cibles principales deviennent saines ou non saines, Application Gateway pour conteneurs distribue uniquement le trafic vers des points de terminaison sains.
En plus d’utiliser la surveillance par sonde d’intégrité par défaut, vous pouvez aussi personnaliser la sonde d’intégrité pour répondre aux exigences de votre application. Cet article traite des sondes d’intégrité par défaut et personnalisées.
L’ordre et la logique de la détection d’intégrité sont les suivants :
- Utilisez la définition de la ressource personnalisée HealthCheckPolicy (CR).
- S’il n’existe aucun CR HealthCheckPolicy, utilisez probe Readiness
- S’il n’existe aucune probe Readiness définie, utilisez la sonde d’intégrité par défaut
Les propriétés suivantes constituent des sondes d’intégrité personnalisées :
Propriété | Valeur par défaut |
---|---|
interval | Fréquence en secondes d’envoi des sondes d’intégrité à la cible back-end. L’intervalle minimal doit être > 0 secondes. |
timeout | Durée en secondes pendant laquelle la requête doit attendre avant qu’elle soit marquée comme un échec. L’intervalle minimal doit être > 0 secondes. |
healthyThreshold | Nombre de sondes d’intégrité avant de marquer le point de terminaison cible sain. L’intervalle minimal doit être > 0. |
port | Numéro de port utilisé lors de la détection de la cible back-end. |
unhealthyTreshold | Nombre de sondes d’intégrité à échouer avant que la cible principale ne soit étiquetée comme non saine. L’intervalle minimal doit être > 0. |
grpc | Spécifié si le service principal attend des connexions gRPC. La valeur doit être {} . |
(http) | Spécifié si le service principal attend des connexions http. |
(http) hôte | Le nom d’hôte spécifié dans la requête adressée à la cible back-end. |
(http) chemin d’accès | Chemin d’accès spécifique de la requête. Si un seul fichier doit être chargé, le chemin d’accès peut être /index.html. |
(http - correspondance> ) statusCodes | Contient deux propriétés, start et end , qui définissent la plage de codes d’état HTTP valides retournés par le serveur principal. |
useTLS | Indique si la vérification d’intégrité doit appliquer le protocole TLS. S’il n’est pas spécifié, le contrôle d’intégrité utilise le même protocole que le service si le même port est utilisé pour le contrôle d’intégrité. Si le port est différent, le contrôle d’intégrité s’affiche en texte en clair. |
Sonde d’intégrité par défaut
Application Gateway pour conteneurs configure automatiquement une sonde d’intégrité par défaut lorsque vous ne définissez pas de configuration de sonde personnalisée ou configurez une sonde de préparation. Le comportement de surveillance fonctionne en effectuant une requête HTTP GET vers les adresses IP des cibles back-end configurées. Pour les sondes par défaut, si la cible principale est configurée pour HTTPS, la sonde utilise HTTPS pour tester l’intégrité des cibles back-end.
Pour plus d’informations sur l’implémentation, consultez HealthCheckPolicyConfig dans la spécification de l’API.
Lorsque la sonde d’intégrité par défaut est utilisée, les valeurs suivantes pour chaque propriété de sonde d’intégrité sont utilisées :
Propriété | Valeur par défaut |
---|---|
interval | 5 secondes |
timeout | 30 secondes |
healthyTrehshold | 1 sonde |
unhealthyTreshold | 3 sondes |
port | Le numéro de port utilisé est défini par le numéro de port back-end dans la ressource d’entrée ou le port principal HttpRoute dans la ressource HttpRoute. |
(http) hôte | localhost |
(http) chemin d’accès | / |
useTLS | HTTP pour HTTP et HTTPS lorsque TLS est spécifié. |
1 HTTPS est utilisé lorsqu’un élément backendTLSPolicy référence un service principal cible (pour l’implémentation de l’API passerelle) ou un élément IngressExtension avec un protocole backendSetting de HTTPS (pour l’implémentation de l’API d’entrée) est spécifié.
Remarque
Les sondes d’intégrité sont lancées avec la valeur User-Agent
définie sur Microsoft-Azure-Application-LB/AGC
.
Sonde d’intégrité personnalisée
Dans l’API passerelle et l’API d’entrée, une sonde d’intégrité personnalisée peut être définie en définissant une HealthCheckPolicyPolicy ressource et en référençant un service sur lequel les sondes d’intégrité doivent être vérifiées. Étant donné que le service est référencé par une ressource HTTPRoute ou Entrée avec une référence de classe à Application Gateway pour conteneurs, la sonde d’intégrité personnalisée est utilisée pour chaque référence.
Dans cet exemple, la sonde d’intégrité émise par Application Gateway pour conteneurs envoie le nom d’hôte contoso.com aux pods qui composent test-service. Le protocole demandé est http
avec un chemin d’accès de /
. Une sonde d’intégrité est émise toutes les 5 secondes et attend 3 secondes avant de déterminer que la connexion a expiré. Si une réponse est reçue, un code de réponse HTTP compris entre 200 et 299 (inclus 200 et 299) est considéré comme sain, toutes les autres réponses sont considérées comme non saines.
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