Esta página se aplica a Apigee, pero no a Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En esta página se describe cómo modificar la pasarela de Google Kubernetes Engine (GKE) que se ejecuta en tu clúster para aplicar políticas de gestión de APIs de Apigee mediante el operador APIM de Apigee para Kubernetes.
Antes de empezar
Antes de empezar esta tarea, asegúrate de completar los siguientes pasos:
- Confirma que tu clúster de GKE tiene configurada una identidad de carga de trabajo. Consulta los pasos necesarios en Crear una identidad de carga de trabajo.
- 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 APIM. Consulta las instrucciones de instalación en Instalar el operador de gestión de APIs de Apigee para Kubernetes.
Roles obligatorios
Si has asignado los roles necesarios a tu cuenta de servicio tal como se describe en Instalar el operador de gestión de APIs de Apigee para Kubernetes, no se necesitan roles ni permisos de gestión de identidades y accesos adicionales para completar estas tareas.
Puedes autorizar acciones en recursos de tu clúster de Google Kubernetes Engine mediante el mecanismo de control de acceso basado en roles (RBAC) integrado en Kubernetes. Para obtener más información, consulta Autorizar acciones en clústeres mediante el control de acceso basado en roles.
Información general
En las siguientes secciones se describen los pasos necesarios para modificar tu GKE Gateway y usar las políticas de Apigee con el operador de APIM. En este tutorial, harás lo siguiente:
- Define la política de extensión de APIM.
- Define el producto de API.
- Define el conjunto de operaciones de la API.
- Prueba la extensión de servicio de Apigee.
- Consulte las analíticas de la API de Apigee en la consola Google Cloud .
Definir la política de extensión de APIM
En este paso, definirá la política de extensión de APIM y la aplicará a la GKE Gateway que se ejecuta en su clúster.
Esta política rige todo el tráfico que pasa por la pasarela y su HTTPRoutes
asociada, y funciona de forma similar a un flowhook a nivel de entorno en Apigee.
Define la política de extensión de APIM:
- Crea un archivo llamado
global-ext-lb1-apim-policy.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# 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
Donde ENV_NAME es el nombre del entorno de Apigee creado en el paso de instalación Crear un entorno de Apigee.
Puedes ver todos los entornos disponibles en la página Entornos de Apigee de la Google Cloud consola:
- Aplica la política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Una vez que se aplica el
yaml
, el operador de APIM crea recursos de red en segundo plano. - Comprueba el estado de la política de extensiones de la API con el siguiente comando:
kubectl -n apim get APIMExtensionPolicy
La salida debería ser similar a la siguiente, con un
State
deRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Usa el siguiente comando para enviar una solicitud a la pasarela:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, dondeGATEWAY_NAME
es el nombre de la pasarela:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido enHTTPRoute
de la pasarela.
- La solicitud debería fallar porque la seguridad predeterminada está habilitada al definir
defaultSecurityEnabled: true
en el recurso de política de extensión de la API. 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 claves de API y la verificación de tokens de acceso también lo están.
Definir el producto de API
Define el producto de API:
- Crea un archivo llamado
api-product.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# api-product.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Aplica el archivo a la pasarela con el siguiente comando:
kubectl -n apim apply -f api-product.yaml
Definir el conjunto de operaciones de la API
Define el conjunto de operaciones de la API del producto de API creado en el paso anterior:
- Crea un archivo llamado
apim-policies.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el nuevo archivo.
Este archivo define una política de cuotas y las operaciones REST disponibles para el producto de API definido en el paso anterior:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set namespace: apim spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Aplica el archivo a la pasarela:
kubectl -n apim apply -f apim-policies.yaml
Probar la extensión de servicio de Apigee
En este paso, usarás la interfaz de usuario de Apigee en la consola Google Cloud para probar la extensión de servicio de Apigee y la política de extensión de Apigee aplicada a tu pasarela.
Configuración de pruebas
Configura los recursos de la API que necesites para las pruebas:
Ve a la página Gestión de APIs de Apigee de la consola de Google Cloud :
- Selecciona la organización de Apigee en la que has instalado el operador de APIM.
- Crear un desarrollador:
- Selecciona Distribución > Desarrolladores.
- En la página Desarrolladores, haz clic en + Crear.
- En la página Añadir desarrollador, rellene los campos obligatorios con los valores que quiera.
- Haz clic en Añadir.
- Crear una aplicación:
- Selecciona Distribución> Aplicaciones.
- En la página Aplicaciones, haz clic en + Crear.
- En la página Create App (Crear aplicación), rellena los campos obligatorios de la sección App Details (Detalles de la aplicación) con los siguientes valores:
- Nombre de la aplicación: demo-app
- Desarrollador: selecciona el desarrollador que has creado en el paso anterior u otro de la lista.
- En la sección Credenciales de la aplicación, haz clic en + Añadir credencial.
- En la sección Credenciales, rellena los campos obligatorios de la sección Detalles de las credenciales
con los siguientes valores:
- Nombre de la credencial: demo-credential
- Tipo de credencial: selecciona Clave de API.
- Haz clic en Crear.
- En la sección Productos, haga clic en + Añadir productos.
- Selecciona el
api-product-1
que has creado en el paso anterior. - Haz clic en Añadir.
- Haz clic en Crear.
- En la página Detalles de la aplicación, en la sección Credencial, haz clic en
visibility_off para ver el valor de Clave.
Copia el valor de
Key
. Usarás esta clave para hacer llamadas a la API de tu servicio en un paso posterior. - En la página Detalles de la aplicación, en la sección Credencial, haz clic en visibility_off
para ver el valor de Secreto de aplicación.
Copia el valor de Secreto de la aplicación. Usarás este valor para generar un token de acceso en un paso posterior.
Probar la aplicación de la clave de API
Usa el siguiente comando para enviar una solicitud a tu pasarela con la clave de API que has obtenido en un paso anterior:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, dondeGATEWAY_NAME
es el nombre de la pasarela:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido enHTTPRoute
de la pasarela.API_KEY
es el valor de la clave de API que se ha obtenido en Configuración de pruebas.
La solicitud debería realizarse correctamente y devolver una respuesta similar a la siguiente:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Probar la aplicación de las cuotas
Para probar la aplicación de la cuota definida en tu política de extensión de APIM, envía la solicitud del paso anterior a la pasarela diez veces en el plazo de un minuto.
Puedes ejecutar la siguiente secuencia de comandos para generar las solicitudes:
#!/bin/sh for i in $(seq 1 11); do curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY" sleep 1 done
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, dondeGATEWAY_NAME
es el nombre de la pasarela:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido enHTTPRoute
de la pasarela.API_KEY
es el valor de la clave de API que se ha obtenido en Configuración de pruebas.
Esta acción debería activar una infracción de cuota y generar un error similar al siguiente:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Probar la aplicación de operaciones REST
Para probar la aplicación de las operaciones REST, usa el siguiente comando para enviar una solicitud a la pasarela con una URL que no esté en el conjunto de operaciones de la API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, dondeGATEWAY_NAME
es el nombre de la pasarela:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido enHTTPRoute
de la pasarela.API_KEY
es el valor de la clave de API que se ha obtenido en Configuración de pruebas.
La solicitud debería fallar y devolver una respuesta similar a la siguiente:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Ver las analíticas de la API de Apigee en la consola Google Cloud
Puedes ver el tráfico de la API gestionado por la GKE Gateway y la APIMExtensionPolicy que has instalado con Apigee API Analytics en la Google Cloud consola:
- Ve a la página Gestión de APIs de Apigee de la consola: Google Cloud
- Selecciona la organización de Apigee en la que has instalado el operador de APIM.
- En el menú de navegación lateral, selecciona Analytics > Métricas de la API.
- En la pestaña Rendimiento del proxy de API, elige el entorno que has creado en el paso de instalación opcional
Crear un entorno de Apigee o el entorno creado por el operador de APIM durante la instalación. El nombre del entorno empezará por el prefijo
apigee-ext-proc-enabled-env
. - Observa el tráfico de la API registrado.
Solucionar problemas
Si tienes problemas al usar políticas de gestión de APIs con el operador APIM, consulta el artículo Solucionar problemas del operador APIM para encontrar soluciones a errores habituales.
Siguientes pasos
- Consulta cómo añadir políticas a la puerta de enlace de GKE.
- Consulta cómo desinstalar el operador de gestión de APIs de Apigee para Kubernetes.