Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En esta página se describe cómo aplicar políticas de Apigee al tráfico que pasa por una pasarela de Kubernetes creando un recurso personalizado APIMExtensionPolicy. El operador de Apigee para Kubernetes monitoriza los recursos APIMExtensionPolicy y configura la pasarela en consecuencia.
Apigee
Sigue estos pasos si usas Apigee.
Antes de empezar
Antes de empezar esta tarea, sigue estos pasos:
- Confirma que tu clúster de GKE tiene configurada la función Workload Identity. Consulta los pasos necesarios en Configurar Workload Identity Federation para GKE.
- Confirma que tu clúster tiene una GKE Gateway configurada y que funciona. Consulta más información sobre la implementación de pasarelas.
- Instala el operador de Apigee para Kubernetes. Consulta las instrucciones de instalación en Instalar el operador de Apigee para Kubernetes.
Crea el APIMExtensionPolicy.
En este paso, crea el APIMExtensionPolicy y aplícalo a la GKE Gateway que se ejecuta en tu clúster. Esta política rige todo el tráfico que pasa por la pasarela y su HTTPRoutes asociado, y funciona de forma similar a un flowhook a nivel de entorno en Apigee.
Para crear el APIMExtensionPolicy, sigue estos pasos:
- Crea un archivo llamado
global-ext-lb1-apim-policy.yamlcon el siguiente contenido:# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default - Sustituye
ENV_NAMEpor el nombre del entorno de Apigee creado en el paso de instalación Crear un entorno de Apigee.Nota: Si instala Apigee Operator para Kubernetes con la marca
generateEnv=TRUE, no es necesario rellenar el campoapigeeEnv.Puedes ver todos los entornos disponibles en la página Entornos de la Google Cloud consola.
- Aplica la política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlUna vez que se aplica la política, el operador de Apigee para Kubernetes crea recursos de red en segundo plano.
- Comprueba el estado de
APIMExtensionPolicycon el siguiente comando:kubectl -n apim get APIMExtensionPolicyLa salida debería ser similar a la siguiente, con un
STATEdeRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Probar la política
Usa el siguiente comando para enviar una solicitud a la pasarela:
- Obtén la dirección IP de la pasarela:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPSustituye
GATEWAY_NAMEpor el nombre de la pasarela (por ejemplo,global-ext-lb1). - Envía una solicitud a un endpoint configurado en tu
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Sustituye
HOST_NAMEpor el nombre de host definido en elHTTPRoutede la pasarela. Por ejemplo,example.httpbin.com. - La solicitud debería fallar porque
defaultSecurityEnabled: truese ha definido en el recursoAPIMExtensionPolicy, lo que habilita la verificación de la clave de API y del token de acceso. Deberías ver una respuesta similar a la siguiente:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Esto indica que la política de extensión de Apigee está activa y que la aplicación de la clave de API y la verificación del token de acceso también lo están.
Siguientes pasos
- Consulta cómo añadir políticas a la puerta de enlace de GKE.
- Consulta cómo desinstalar el operador de Apigee para Kubernetes.
Apigee Hybrid
Sigue estos pasos si usas Apigee Hybrid.
Antes de empezar
En este procedimiento se da por hecho que has instalado el operador de Apigee para Kubernetes siguiendo los pasos que se indican en el artículo Instalar el operador de Apigee para Kubernetes en Apigee Hybrid.
Crear un secreto de certificado TLS
El APIMExtensionPolicy requiere el certificado público codificado en Base64 asociado al nombre de host del grupo de entornos. Has creado este certificado en Instalar el entorno híbrido de Apigee con Helm.
Proporciona este certificado al operador creando un secreto de Kubernetes en el espacio de nombres apim.
- Obtén la cadena de certificado codificada en Base64 del archivo que has creado durante la instalación:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Crea un archivo llamado
secret-cert.yamlcon el siguiente contenido:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Sustituye
BASE64_ENCODED_CERT_STRINGpor el resultado del comandocatdel paso 1. - Aplica el secreto a tu clúster:
kubectl apply -f secret-cert.yaml
Definir y aplicar el APIMExtensionPolicy
Define un recurso APIMExtensionPolicy y aplícalo a la puerta de enlace de Istio
que se ejecuta en tu clúster. Esta extensión de política intercepta el tráfico gestionado por la pasarela y su HTTPRoutes asociado, y aplica las políticas de Apigee antes de reenviar las solicitudes al destino backend.
- Crea un archivo llamado
istio-gateway-apim-policy.yamlcon el siguiente contenido:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Sustituye las siguientes variables:
ENV_NAME: el nombre del entorno de Apigee hybrid que has creado con las extensiones de servicio habilitadas. Por ejemplo,my-hybrid-env.HOST_NAME: nombre de dominio usado en el grupo de entornos. Por ejemplo,my-proxies.example.com.INGRESS_IP_ADDRESS: la dirección IP de entrada de Apigee Hybrid runtime ingress. Consulta el artículo Exponer el acceso de Apigee para obtener información sobre cómo obtener esta IP.
- Aplica la política a tu clúster:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Una vez que se aplica el recurso, el operador de Apigee para Kubernetes empieza a configurar los recursos de red de la pasarela. Comprueba el estado de la
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Espera hasta que
STATEmuestreRUNNING. La salida debería ser similar a la siguiente:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Probar la política
En el APIMExtensionPolicy creado en el paso anterior, se ha definido defaultSecurityEnabled como true. De esta forma, se habilitan automáticamente las políticas de verificación de claves de API y tokens de OAuth2 para el tráfico que coincida con esta pasarela.
Para probarlo, envía una solicitud no autenticada al servicio de ejemplo httpbin
que configuraste al verificar la configuración de Istio Gateway en
Verificar la configuración de Istio Gateway.
- Obtén la dirección IP de la pasarela:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Envía una solicitud al endpoint
/getconfigurado en tu HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Como
defaultSecurityEnabled: truerequiere autenticación (por ejemplo, una clave de API válida), Apigee debe rechazar la solicitud con un error de autenticación. La respuesta debería ser similar a la siguiente:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Este resultado confirma que
APIMExtensionPolicyestá activo y que Istio Gateway aplica las políticas de Apigee.
Siguientes pasos
Consulta cómo crear productos de API, desarrolladores y aplicaciones para obtener claves de API para solicitudes autenticadas: