Partager via


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 :

  1. Utilisez la définition de la ressource personnalisée HealthCheckPolicy (CR).
  2. S’il n’existe aucun CR HealthCheckPolicy, utilisez probe Readiness
  3. 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.

Diagramme montrant Passerelle d’application pour conteneurs utilisant des sondes d’intégrité personnalisées pour déterminer l’intégrité du back-end.

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