Présentation des garde-fous
Les garde-fous d'Apigee hybrid sont un mécanisme qui avertit les clients d'un problème potentiel avant qu'il n'affecte une instance hybride. En d'autres termes, les garde-fous hybrides arrêtent une commande si elle risque de compromettre la stabilité d'une instance hybride. Qu'il s'agisse d'une configuration incorrecte ou d'une ressource insuffisante, les garde-fous hybrides empêchent toute modification d'une instance Hybrid tant que le risque lié au problème n'est pas éliminé. Cela évite au client de consacrer plusieurs heures, voire plusieurs jours à la résolution de problèmes.
Utiliser les garde-fous avec Apigee hybrid
Pour utiliser les garde-fous hybrides, exécutez les mêmes commandes d'installation ou de mise à niveau Hybrid Helm que celles indiquées dans les instructions d'installation Hybrid. Aucune commande supplémentaire n'est nécessaire pour exécuter les garde-fous.
Lorsque vous exécutez une commande Helm pour Apigee hybrid, deux choses se produisent avant que la commande Helm n'applique la configuration à votre instance hybride :
- Helm crée un pod de garde-fous temporaire avec la configuration appliquée. Si le pod du garde-fou fonctionne correctement, il teste votre instance hybride par rapport à la configuration appliquée. Si le test réussit, le pod de garde-fous est arrêté et votre configuration est alors appliquée à votre instance Apigee hybrid.
- Si les tests échouent, le pod de garde-fou est laissé dans un état non opérationnel pour permettre un diagnostic du pod. La commande Helm affiche un message d'erreur indiquant que le pod de garde-fou a échoué.
L'exemple suivant montre comment utiliser les garde-fous pour tester la connectivité réseau d'une instance hybride au plan de contrôle Apigee dans le cadre de l'installation du composant apigee-datastore
. Vous pouvez utiliser la même séquence pour tous les composants Apigee hybrid :
Installez le composant apigee-datastore à l'aide de la commande suivante :
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Si une erreur se produit immédiatement, la commande Helm affiche également un message d'erreur indiquant l'échec de la vérification des garde-fous, comme dans l'exemple suivant :
helm upgrade datastore apigee-datastore/ \
--install \
--namespace apigee \
-f ../my-overrides.yaml
. . .
Error: UPGRADE FAILED: pre-upgrade hooks failed: 1 error occurred:
* pod apigee-hybrid-helm-guardrail-datastore failed
Pour savoir quelle vérification a échoué et pourquoi, consultez les journaux du pod de garde-fou comme dans l'exemple suivant :
kubectl logs -n apigee apigee-hybrid-helm-guardrail-datastore
{"level":"INFO","timestamp":"2024-02-01T20:28:55.934Z","msg":"logging enabled","log-level":"INFO"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"","checkpoint":"upgrade","component":"apigee-datastore"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"initiating pre-install checks"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"check validation starting...","check":"controlplane_connectivity"}
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
Dans cet exemple, le message d'échec du test réel consiste en la partie suivante :
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
Le pod de garde-fous est automatiquement provisionné lorsque vous exécutez la commande Helm. Si le test de connectivité du plan de contrôle Apigee réussit, le pod de garde-fous est arrêté à la fin de l'exécution.
Vérifiez rapidement l'état des pods après avoir exécuté la commande helm install
. L'exemple de résultat suivant affiche les pods de garde-fous dans un état sain, ce qui signifie que le test de connectivité du plan de contrôle a réussi :
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 2s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
Si le test de connectivité du plan de contrôle Apigee échoue, le pod de garde-fous reste à l'état "Error" (Erreur), comme dans l'exemple de résultat suivant :
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 4s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 5s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 6s
Désactiver temporairement les garde-fous
Si vous devez désactiver les vérifications de garde-fous, ajoutez l'option --no-hooks
à la commande Helm. L'exemple suivant montre l'option --no-hooks
dans une commande Helm :
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f ../my-overrides.yaml \ --no-hooks
Configurer des garde-fous dans le fichier de remplacement
À partir de la version 1.12 d'Apigee hybrid, les garde-fous sont configurés par défaut dans chaque graphique. Vous pouvez remplacer l'URL de l'image, le tag et la règle de récupération d'image dans votre fichier overrides
.
Par exemple, l'URL, le tag et la règle d'extraction de l'image des garde-fous ci-dessous seraient ajoutés à votre fichier de remplacement :
# Apigee Ingressgateway ingressGateway: image: pullPolicy: Always ## NOTE: The Guardrails config is below. The ingressgateway config above is for position reference only and is NOT required for Guardrails config. # Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "12345_6789abcde" pullPolicy: Always
Utiliser les tolérances Kubernetes avec des garde-fous
Vous pouvez également ajouter des tolérances aux garde-fous dans votre fichier overrides
. Si aucune tolérance n'est définie dans la configuration overrides
des garde-fous, les garde-fous utilisent toutes les tolérances définies de manière globale.
Par exemple, pour inclure des tolérances spécifiquement dans la section "Garde-fous" de votre fichier overrides
, vous pouvez ajouter un stanza semblable à celui-ci :
# Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "12345_6789abcde" pullPolicy: Always tolerations: - key: "say" operator: "Equal" value: "taunt" effect: "NoSchedule"