Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la
documentación deApigee 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 mediante la creación de un recurso personalizado APIMExtensionPolicy. El
operador de Apigee para Kubernetes supervisa los recursos APIMExtensionPolicy y
configura la puerta de enlace en consecuencia.
Apigee
Sigue estos pasos si usas Apigee.
Antes de comenzar
Antes de comenzar esta tarea, completa los siguientes pasos:
- Confirma que tu clúster de GKE tenga configurado Workload Identity. Consulta Configura la federación de identidades para cargas de trabajo para GKE para conocer los pasos necesarios.
- Confirma que tu clúster tenga una puerta de enlace de GKE configurada y en funcionamiento. Consulta Implementa puertas de enlace 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 la APIMExtensionPolicy
En este paso, crea la APIMExtensionPolicy y aplícala 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 sus HTTPRoutes asociadas, y funciona de manera similar a un flowhook a nivel del
entorno en Apigee en la actualidad.
Para crear la 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 creado en el paso de instalación Crea un entorno de Apigee.Nota: Si instalas el operador de Apigee para Kubernetes con la
generateEnv=TRUEmarca, no se requiere 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.
- 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 en laHTTPRoutede la puerta de enlace, por ejemplo,example.httpbin.com. - La solicitud debería fallar porque
defaultSecurityEnabled: truese estableció en 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 información para agregar políticas a la puerta de enlace de GKE.
- Obtén 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
La APIMExtensionPolicy requiere el certificado público codificado en base64
asociado con el 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 secreto de Kubernetes en el
apim espacio de nombres.
- Obtén la cadena de 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 comandocaten el paso 1. - Aplica el secreto a tu clúster:
kubectl apply -f secret-cert.yaml
Define y aplica la 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 sus HTTPRoutes asociadas, 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: El nombre del entorno de Apigee Hybrid que creaste con las extensiones de servicio habilitadas, por ejemplo,my-hybrid-env.HOST_NAME: El nombre de dominio que se usa para el grupo de entornos, por ejemplomy-proxies.example.com.INGRESS_IP_ADDRESS: La dirección IP de entrada para la entrada del entorno de ejecución de Apigee Hybrid. Consulta Expón 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 red de la puerta de enlace. Verifica el estado de
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Espera hasta que
STATEmuestreRUNNING. El resultado debería ser similar al siguiente:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Prueba la política
En la APIMExtensionPolicy creada en el paso anterior,
defaultSecurityEnabled se estableció en true. Esto habilita automáticamente
las políticas de verificación de clave de API y token 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 - Debido a 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 la
APIMExtensionPolicyestá activa y que la puerta de enlace de Istio aplica las políticas de Apigee.
¿Qué sigue?
Obtén información para crear productos de API, desarrolladores y apps para obtener claves de API para solicitudes autenticadas: