- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
Descripción general de las barreras de protección
Apigee Hybrid Guardrails es un mecanismo que avisa a los clientes de un posible problema antes de que pueda afectar a una instancia de Hybrid. Es decir, Hybrid Guardrails detendrá un comando si pone en riesgo la estabilidad de una instancia híbrida. Tanto si se trata de una configuración incorrecta como de un recurso insuficiente, Hybrid Guardrails evitará que se hagan modificaciones en una instancia híbrida hasta que se elimine el riesgo del problema. De esta forma, el cliente no tiene que dedicar tiempo a problemas que normalmente tardarían horas o días en resolverse.
Usar las protecciones con Apigee hybrid
Para usar Hybrid Guardrails, ejecuta los mismos comandos de instalación o actualización de Hybrid Helm que se describen en las instrucciones de instalación de Hybrid. No se necesitan comandos adicionales para ejecutar las protecciones.
Cuando ejecutas un comando de Helm para Apigee hybrid, ocurren dos cosas antes de que el comando de Helm aplique la configuración a tu instancia híbrida:
- Helm crea un pod de Guardrails temporal con la configuración que hayas aplicado. Si el pod de Guardrails se activa y funciona correctamente, probará tu instancia híbrida con la configuración que hayas aplicado. Si las pruebas se superan, el pod de Guardrails se termina y la configuración se aplica a tu instancia de Apigee hybrid.
- Si falla la prueba, el pod de Guardrails se quedará en un estado incorrecto para permitir el diagnóstico del pod. El comando helm mostrará un mensaje de error que indica que el pod de Guardrails ha fallado.
En el siguiente ejemplo se muestra cómo usar Guardrails para probar la conectividad de red de una instancia híbrida al plano de control de Apigee como parte de la instalación del componente apigee-datastore
. Puedes usar la misma secuencia para todos los componentes híbridos de Apigee:
Instala el componente apigee-datastore con el siguiente comando:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Si se produce un error inmediato, el comando de Helm también mostrará un mensaje de error que indica que las comprobaciones de Guardrails han fallado, como en el siguiente ejemplo:
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
Para ver qué comprobación ha fallado y por qué, consulta los registros del pod de medidas de protección, como en el siguiente ejemplo:
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"}
En este ejemplo, el mensaje de error de la prueba es esta 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"}
El pod Guardrails se aprovisiona automáticamente cuando ejecutas el comando Helm. Si la prueba de conectividad del plano de control de Apigee se supera, el pod de Guardrails se termina al final de la ejecución.
Comprueba el estado de los pods rápidamente después de ejecutar el comando helm install
. En el siguiente ejemplo de salida se muestran los pods de Guardrail en buen estado, lo que significa que la prueba de conectividad del plano de control se ha superado:
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 la prueba de conectividad del plano de control de Apigee falla, el pod de Guardrails permanecerá en estado de error, como en el siguiente ejemplo:
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
Inhabilitar temporalmente las protecciones
Si necesitas inhabilitar las comprobaciones de las medidas de protección, añade la marca --no-hooks
al comando de Helm. En el siguiente ejemplo se muestra la marca --no-hooks
en un comando de Helm:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f overrides.yaml \ --no-hooks
Configurar las restricciones en el archivo de anulaciones
A partir de la versión 1.12 de Apigee hybrid, las protecciones se configuran de forma predeterminada en cada gráfico. Puede anular la URL de la imagen, la etiqueta y la política de extracción de imágenes en el archivo overrides
.
Por ejemplo, la URL de la imagen, la etiqueta y la política de extracción de Guardrails que se muestran a continuación se añadirían a tu archivo de anulaciones:
# 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
Usar tolerancias de Kubernetes con Guardrails
También puedes añadir tolerancias a las protecciones en tu archivo overrides
. Si no se definen tolerancias en la configuración de las protecciones overrides
, estas usarán las tolerancias definidas de forma global.
Por ejemplo, para incluir tolerancias específicamente en la sección Guardrails de tu archivo overrides
, añadirías algo similar a la siguiente estrofa:
# 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"
Solucionar problemas de las protecciones
Falta o está vacío el punto de control de la variable de entorno
Si ves el error Client.Timeout exceeded
en el registro del pod de apigee-operator
, puedes seguir estos pasos para determinar el origen del problema.
- Crea un archivo YAML con el siguiente contenido. Puedes elegir el nombre que quieras para el archivo YAML.
- Aplica el nuevo archivo YAML con el siguiente comando:
- Envía la entrada de comandos al pod con el comando
kubectl exec
: - Ejecuta el siguiente comando en el pod
apigee-simple-client
y comprueba el resultado:
apiVersion: v1 kind: Pod metadata: labels: name: apigee-simple-client spec: containers: - name: apigee-simple-client image: "gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:1.10.1" imagePullPolicy: Always command: - sleep - "3650d" restartPolicy: Never hostNetwork: false
kubectl apply -n apigee-system -f NEW_YAML_FILE
kubectl exec -it -n apigee-system apigee-simple-client -- /bin/bash
curl -v -I --proxy http://cspnaproxy1.wlb2.nam.nsroot.net:8882 https://apigee.googleapis.com
Si el comando curl se conecta correctamente al proxy HTTP y llega a apigee.googleapis.com
el comando curl debería devolver un código de respuesta HTTP. Si el comando curl no puede acceder al proxy o no puede conectarse a apigee.googleapis.com
a través del proxy, debería mostrar un error.