Panoramica dei guardrail
Le misure di sicurezza di Apigee Hybrid sono un meccanismo che avvisa i clienti di un potenziale problema prima che questo possa influire su un'istanza Hybrid. In altre parole, Hybrid Guardrails bloccherà un comando se questo rischia di compromettere la stabilità di un'istanza Hybrid. Che si tratti di una configurazione errata o di una risorsa insufficiente, i guardrail ibridi impediranno qualsiasi modifica a un'istanza ibrida finché non verrà rimosso il rischio del problema. In questo modo, il cliente non deve dedicare tempo a problemi che normalmente richiederebbero ore o giorni per essere risolti.
Utilizzo di Guardrails con Apigee hybrid
Per utilizzare Hybrid Guardrails, esegui gli stessi comandi di installazione o upgrade di Hybrid Helm documentati nelle istruzioni di installazione di Hybrid. Non sono necessari altri comandi per eseguire Guardrails.
Quando esegui un comando Helm per Apigee Hybrid, si verificano due cose prima che il comando Helm applichi la configurazione alla tua istanza Hybrid:
- Helm crea un pod Guardrails temporaneo con la configurazione applicata. Se il pod Guardrails si avvia in uno stato integro, il pod testerà l'istanza ibrida rispetto alla configurazione applicata. Se il test ha esito positivo, il pod Guardrails viene terminato e la configurazione viene applicata alla tua istanza Apigee hybrid.
- Se il test non va a buon fine, il pod Guardrails viene lasciato in uno stato non integro per consentire la diagnosi del pod. Il comando helm visualizzerà un messaggio di errore che segnala che il pod Guardrails non è riuscito.
L'esempio seguente mostra l'utilizzo di Guardrails per testare la connettività di rete da un'istanza ibrida al control plane di Apigee nell'ambito dell'installazione del componente apigee-datastore. Puoi utilizzare la stessa sequenza per tutti i componenti di Apigee Hybrid:
Installa il componente apigee-datastore utilizzando il seguente comando:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Se si verifica un errore immediato, il comando Helm mostrerà anche un messaggio di errore che indica che i controlli di Guardrails non sono riusciti, come nell'esempio seguente:
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 failedPer vedere quale controllo non è riuscito e perché, controlla i log dei pod di Guardrails come nell'esempio seguente:
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"}In questo esempio, il messaggio di errore del test effettivo è questa parte:
{"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"}Il pod Guardrails viene eseguito automaticamente il provisioning quando esegui il comando helm. Se il test di connettività del control plane di Apigee viene superato, il pod Guardrails viene terminato al termine dell'esecuzione.
Controlla lo stato dei pod subito dopo aver eseguito il comando helm install. L'output di esempio seguente mostra i pod Guardrail in uno stato integro, il che significa che il test di Connectivity Tests del control plane è stato superato:
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 3sSe il test di connettività del control plane Apigee non va a buon fine, il pod Guardrails rimarrà nello stato di errore, simile al seguente output di esempio:
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 6sDisattivazione temporanea dei guardrail
Se devi disattivare i controlli di Guardrails, aggiungi il flag --no-hooks al comando Helm. L'esempio seguente mostra il flag --no-hooks in un comando Helm:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f overrides.yaml \ --no-hooks
Controlli dei guardrail
La tabella seguente elenca i dettagli di alcuni controlli di Guardrails forniti come parte di Apigee hybrid versione 1.15.| Nome | Checkpoint | Descrizione |
|---|---|---|
cassandra_backup_enabled |
upgrade |
Introdotto nella versione: 1.14.0
Gravità: Un controllo che richiede l'attivazione del backup prima dell'upgrade. I backup sono necessari prima dell'upgrade per supportare il ripristino della versione precedente, se necessario. Per informazioni dettagliate sulle opzioni di backup disponibili, consulta Backup e ripristino di Cassandra. |
cassandra_recent_backup_csi |
upgrade |
Introdotto nella versione: 1.14.0
Gravità: Un controllo che richiede la presenza del backup nelle ultime 24 ore prima dell'upgrade se il backup CSI è abilitato. In questo modo, la potenziale perdita di dati sarà ridotta al minimo se è necessario un ripristino della versione precedente. Consulta Backup CSI per i dettagli sul backup e sul ripristino CSI. |
Configurazione dei guardrail nel file degli override
A partire dalla versione 1.12 di Apigee hybrid, i guardrail sono configurati per impostazione predefinita in ogni grafico. Puoi eseguire l'override dell'URL immagine, del tag e della policy di pull dell'immagine nel file overrides.
Ad esempio, l'URL, il tag e la policy di pull dell'immagine di Guardrails di seguito verrebbero aggiunti al file di override:
# 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: "1.15.9"
pullPolicy: Always
Utilizzo delle tolleranze Kubernetes con Guardrails
Puoi anche aggiungere tolleranze a Guardrails nel file overrides. Se non sono definite tolleranze nella configurazione di Guardrails overrides, Guardrails utilizzerà le tolleranze definite a livello globale.
Ad esempio, per includere le tolleranze specificamente nella sezione Guardrails del file overrides, devi aggiungere un'espressione simile alla seguente:
# Apigee Guardrails
guardrails:
image:
url: "gcr.io/ng-hybrid/guardrails/apigee-watcher"
tag: "1.15.9"
pullPolicy: Always
tolerations:
- key: "say"
operator: "Equal"
value: "taunt"
effect: "NoSchedule"