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 puerta de enlace de Kubernetes creando un recurso personalizado APIMExtensionPolicy. El operador de Apigee para Kubernetes supervisa los recursos APIMExtensionPolicy y configura la puerta de enlace según corresponda.
Apigee
Sigue estos pasos si usas Apigee.
Antes de comenzar
Antes de comenzar con esta tarea, completa los siguientes pasos:
- Confirma que tu clúster de GKE tenga configurado Workload Identity. Consulta Configura Workload Identity Federation for GKE para conocer los pasos necesarios.
- Confirma que tu clúster tenga una puerta de enlace de GKE configurada y en funcionamiento. Consulta Implementa Gateways para obtener más detalles.
- Instala el operador de Apigee para Kubernetes. Consulta Instala el operador de Apigee para Kubernetes para obtener instrucciones de instalación.
Crea el APIMExtensionPolicy
En este paso, crea el archivo APIMExtensionPolicy y aplícalo a la puerta de enlace de GKE que se ejecuta en tu clúster. Esta política rige todo el tráfico que pasa por la puerta de enlace y su HTTPRoutes asociado, y funciona de manera similar a un flowhook a nivel del entorno en Apigee hoy en día.
Para crear el APIMExtensionPolicy, haz lo siguiente:
- 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 - Reemplaza
ENV_NAMEpor el nombre del entorno de Apigee que creaste en el paso de instalación Crea un entorno de Apigee.Nota: Si instalas el operador de Apigee para Kubernetes con la marca
generateEnv=TRUE, no se requiere el campoapigeeEnv.Puedes ver todos los entornos disponibles en la página Entornos en la consola de Google Cloud .
- 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 redes en segundo plano.
- Verifica el estado de
APIMExtensionPolicycon el siguiente comando:kubectl -n apim get APIMExtensionPolicyEl resultado debería ser similar al siguiente, con un
STATEdeRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Prueba la política
Usa el siguiente comando para enviar una solicitud a la puerta de enlace:
- Obtén la dirección IP de la puerta de enlace:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPReemplaza
GATEWAY_NAMEpor el nombre de la puerta de enlace, por ejemplo,global-ext-lb1. - Envía una solicitud a un extremo configurado en tu
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Reemplaza
HOST_NAMEpor el nombre de host definido enHTTPRoutede la puerta de enlace, por ejemplo,example.httpbin.com. - La solicitud debería fallar porque se configuró
defaultSecurityEnabled: trueen el recursoAPIMExtensionPolicy, lo que habilita la verificación de la clave de API y el 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 están activas.
¿Qué sigue?
- Obtén más información para agregar políticas a la puerta de enlace de GKE.
- Obtén más información para desinstalar el operador de Apigee para Kubernetes.
Apigee Hybrid
Sigue estos pasos si usas Apigee Hybrid.
Antes de comenzar
En este procedimiento, se supone que instalaste el operador de Apigee para Kubernetes siguiendo los pasos que se indican en Instala el operador de Apigee para Kubernetes para Apigee Hybrid.
Crea un secreto de certificado TLS
APIMExtensionPolicy requiere el certificado público codificado en base64 asociado al nombre de host del grupo de entornos. Creaste este certificado en Instala el entorno de Apigee Hybrid con Helm.
Para proporcionar este certificado al operador, crea un Secret de Kubernetes en el espacio de nombres
apim.
- Obtén la cadena del certificado codificada en base64 del archivo que creaste 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 - Reemplaza
BASE64_ENCODED_CERT_STRINGpor el resultado del comandocatdel paso 1. - Aplica el secreto a tu clúster:
kubectl apply -f secret-cert.yaml
Define y aplica 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 administrado por la puerta de enlace y su HTTPRoutes asociado, y aplica políticas de Apigee antes de reenviar las solicitudes al destino de 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 - Reemplaza las siguientes variables:
ENV_NAME: Es el nombre del entorno de Apigee Hybrid que creaste con las extensiones de servicio habilitadas, por ejemplo,my-hybrid-env.HOST_NAME: Es el nombre de dominio que se usa para el grupo de entornos, por ejemplo,my-proxies.example.com.INGRESS_IP_ADDRESS: Es la dirección IP de entrada para la entrada del entorno de ejecución de Apigee Hybrid. Consulta Cómo exponer la entrada de Apigee para obtener detalles sobre cómo recuperar 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 comienza a configurar los recursos de redes de la puerta de enlace. Verifica el estado de
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Espera hasta que el
STATEmuestreRUNNING. El resultado debería ser similar al siguiente:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Prueba la política
En el APIMExtensionPolicy creado en el paso anterior, defaultSecurityEnabled se estableció en true. Esto habilita automáticamente las políticas de verificación de claves de API y tokens de OAuth2 para el tráfico que coincide con esta puerta de enlace.
Para probar esto, envía una solicitud no autenticada al servicio de muestra httpbin
que configuraste cuando verificaste la configuración de la puerta de enlace de Istio en
Verifica la configuración de la puerta de enlace de Istio.
- Obtén la dirección IP de la puerta de enlace:
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 extremo
/getconfigurado en tu HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Dado que
defaultSecurityEnabled: truerequiere autenticación (como una clave de API válida), Apigee debería rechazar la solicitud con un error de autenticación. La respuesta podrí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 la puerta de enlace de Istio está aplicando las políticas de Apigee.
¿Qué sigue?
Aprende a crear productos de API, desarrolladores y apps para obtener claves de API para solicitudes autenticadas: