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 puerta de enlace de Google Kubernetes Engine (GKE) que se ejecuta en tu clúster para aplicar políticas de administración de APIs de Apigee con el operador de APIM de Apigee para Kubernetes.
Antes de comenzar
Antes de comenzar con esta tarea, asegúrate de completar los siguientes pasos:
- Confirma que tu clúster de GKE tenga configurada Workload Identity. Consulta Crea una identidad de carga de trabajo 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 APIM. Consulta Instala el operador de la APIM de Apigee para Kubernetes para obtener instrucciones de instalación.
Roles requeridos
Si asignaste los roles necesarios a tu cuenta de servicio como se describe en Instala el operador de Apigee APIM para Kubernetes, no se requieren roles ni permisos de IAM adicionales para completar estas tareas.
Puedes optar por autorizar acciones en los recursos de tu clúster de Google Kubernetes Engine con el mecanismo de control de acceso basado en roles (RBAC) integrado en Kubernetes. Para obtener más información, consulta Autoriza acciones en clústeres con el control de acceso basado en roles.
Descripción general
En las siguientes secciones, se describen los pasos necesarios para modificar tu puerta de enlace de GKE y usar políticas de Apigee con el operador de APIM. En esta explicación, 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.
- Visualiza las estadísticas de la API de Apigee en la consola de Google Cloud .
Define la política de extensión de APIM
En este paso, definirás la política de extensión de APIM y la aplicarás 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.
Define la política de extensión de APIM:
- Crea un archivo nuevo 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
Aquí, ENV_NAME es el nombre del entorno de Apigee creado en el paso de instalación Crea un entorno de Apigee.
Puedes ver todos los entornos disponibles en la página Apigee Environments de la consola de Google Cloud :
- Aplica la política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Una vez que se aplica
yaml
, el operador de APIM crea recursos de redes en segundo plano. - Verifica el estado de la política de extensión de la API con el siguiente comando:
kubectl -n apim get APIMExtensionPolicy
El resultado debería ser similar al siguiente, con un
State
deRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Usa el siguiente comando para enviar una solicitud a la puerta de enlace:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Aquí:
GATEWAY_IP_ADDRESS
es la dirección IP de la puerta de enlace. Puedes recuperar la dirección IP de la puerta de enlace con el siguiente comando, en el queGATEWAY_NAME
es el nombre de la puerta de enlace:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido en elHTTPRoute
de la puerta de enlace.
- La solicitud debería fallar porque la seguridad predeterminada está habilitada estableciendo
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 la clave de API y la verificación del token de acceso están activas.
Define el producto de API
Define el producto de API:
- Crea un archivo nuevo 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 puerta de enlace con el siguiente comando:
kubectl -n apim apply -f api-product.yaml
Define el conjunto de operaciones de la API
Define el conjunto de operaciones de la API para el producto de API que creaste en el paso anterior:
- Crea un archivo nuevo llamado
apim-policies.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo.
Este archivo define una política de cuotas y las operaciones de descanso 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 puerta de enlace:
kubectl -n apim apply -f apim-policies.yaml
Prueba la extensión de servicio de Apigee
En este paso, usarás la IU de Apigee en la consola de Google Cloud para probar la extensión de servicio de Apigee y la política de extensión de Apigee aplicada a tu puerta de enlace.
Prueba de configuración
Configura los recursos de la API que necesitas para realizar pruebas:
Ve a la página Administración de la API de Apigee en la consola de Google Cloud :
- Selecciona la organización de Apigee en la que instalaste el operador de APIM.
- Crea un desarrollador:
- Selecciona Distribución > Desarrolladores.
- En la página Desarrolladores, haz clic en + Crear.
- En la página Agregar desarrollador, completa los campos obligatorios con los valores que desees.
- Haz clic en Agregar.
- Crea una app:
- Selecciona Distribución> Apps.
- En la página Apps, haz clic en + Crear.
- En la página Create App, completa los campos obligatorios de la sección App Details con los siguientes valores:
- Nombre de la app: demo-app
- Desarrollador: Selecciona el desarrollador que creaste en el paso anterior o cualquier otro desarrollador de la lista.
- En la sección Credenciales de la app, haz clic en + Agregar credencial.
- En la sección Credencial, completa los campos obligatorios en la sección Detalles de la credencial 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, haz clic en + Agregar productos.
- Selecciona el
api-product-1
que creaste en el paso anterior. - Haz clic en Agregar.
- Haz clic en Crear.
- En la página App Details, en la sección Credential, haz clic en
visibility_off para mostrar el valor de la Key.
Copia el valor de
Key
. Usarás esta clave para realizar llamadas a la API de tu servicio en un paso posterior. - En la página App Details, en la sección Credential, haz clic en visibility_off para mostrar el valor de App Secret.
Copia el valor de App secret. Usarás este valor para generar un token de acceso en un paso posterior.
Prueba la aplicación de la clave de API
Usa el siguiente comando para enviar una solicitud a tu puerta de enlace con la clave de API que obtuviste en un paso anterior:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Aquí:
GATEWAY_IP_ADDRESS
es la dirección IP de la puerta de enlace. Puedes recuperar la dirección IP de la puerta de enlace con el siguiente comando, en el queGATEWAY_NAME
es el nombre de la puerta de enlace:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido en elHTTPRoute
de la puerta de enlace.API_KEY
es el valor de la clave de API que se obtuvo en Configuración de prueba.
La solicitud debería completarse 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" }
Prueba la aplicación de la cuota
Para probar la aplicación de la cuota definida en la política de extensión de APIM, envía la solicitud del paso anterior al Gateway diez veces en el lapso 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
Aquí:
GATEWAY_IP_ADDRESS
es la dirección IP de la puerta de enlace. Puedes recuperar la dirección IP de la puerta de enlace con el siguiente comando, en el queGATEWAY_NAME
es el nombre de la puerta de enlace:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido en elHTTPRoute
de la puerta de enlace.API_KEY
es el valor de la clave de API que se obtuvo en Configuración de prueba.
Esta acción debería activar un incumplimiento de la cuota y generar una falla similar a la siguiente:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Prueba la aplicación de las operaciones de descanso
Para probar la aplicación de las operaciones de descanso, usa el siguiente comando para enviar una solicitud a Gateway 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"
Aquí:
GATEWAY_IP_ADDRESS
es la dirección IP de la puerta de enlace. Puedes recuperar la dirección IP de la puerta de enlace con el siguiente comando, en el queGATEWAY_NAME
es el nombre de la puerta de enlace:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
es el nombre de host definido en elHTTPRoute
de la puerta de enlace.API_KEY
es el valor de la clave de API que se obtuvo en Configuración de prueba.
La solicitud debería fallar con una respuesta similar a la siguiente:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Visualiza las estadísticas de la API de Apigee en la consola de Google Cloud
Puedes ver el tráfico de la API que controla la puerta de enlace de GKE y la APIMExtensionPolicy que instalaste con las estadísticas de la API de Apigee en la consola de Google Cloud :
- Ve a la página Administración de la API de Apigee en la consola de Google Cloud :
- Selecciona la organización de Apigee en la que instalaste el operador de APIM.
- Selecciona Analytics > Métricas de API en el menú de navegación lateral.
- En la pestaña Rendimiento del proxy de API, elige el entorno que creaste en el paso de instalación opcional
Crea un entorno de Apigee o el entorno que creó el operador de APIM durante la instalación. El nombre del entorno comenzará con el prefijo
apigee-ext-proc-enabled-env
. - Observa el tráfico de la API registrado.
Solucionar problemas
Si tienes problemas cuando usas políticas de administración de APIs con APIM Operator, consulta Soluciona problemas de APIM Operator para encontrar soluciones a errores comunes.
¿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 APIM de Apigee para Kubernetes.