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 habilitar las opciones predeterminadas de seguridad y de aplicación de cuotas disponibles en el operador de Apigee para Kubernetes.
Antes de empezar
Antes de empezar esta tarea, asegúrate de completar los siguientes pasos:
- Instala el operador de Apigee para Kubernetes. Consulta las instrucciones de instalación en Instalar el operador de Apigee para Kubernetes.
- Crea una extensión de servicio de tráfico. Para completar este paso, puedes usar
ApigeeBackendService
oAPIMExtensionPolicy
. Consulta Crear un APIMExtensionPolicy para obtener más información sobre cómo crear una extensión de tráfico con elAPIMExtensionPolicy
. Para obtener más información sobre cómo crear una extensión de tráfico conApigeeBackendService
, consulta Crear un ApigeeBackendService.
Tanto si has creado una extensión de servicio de tráfico para tu GKE Gateway mediante ApigeeBackendService
como mediante APIMExtensionPolicy
,
debes completar los pasos de esta guía para habilitar la clave de API predeterminada y las políticas de cuota añadidas al APIMExtensionPolicy
de respaldo.
Roles obligatorios
Si has asignado los roles necesarios a tu cuenta de servicio tal como se describe en Instalar el operador 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 describe cómo habilitar las opciones predeterminadas de seguridad y de aplicación de cuotas disponibles con el operador de Apigee para Kubernetes. En este tutorial, harás lo siguiente:
- 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 .
Los pasos necesarios para definir el producto de API y el conjunto de operaciones de API varían ligeramente en función de si has creado una extensión de tráfico para tu GKE Gateway mediante ApigeeBackendService
o APIMExtensionPolicy
.
Definir el producto de API
En este paso, definirá el producto de API que se usará para gestionar las políticas de cuota y de aplicación de la clave de API.
Usar la APIMExtensionPolicy
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
Usar la ApigeeBackendService
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: ApigeeBackendService group: apim.googleapis.com namespace: default attributes: - name: access value: private
- Aplica el archivo a la pasarela con el siguiente comando:
kubectl -n default apply -f api-product.yaml
Definir el conjunto de operaciones de la API
En este paso, definirás el conjunto de operaciones de la API que se utilizará para gestionar la aplicación de las operaciones REST.
Usar la APIMExtensionPolicy
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
Usar la ApigeeBackendService
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 nombresdefault
. - 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: default spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: default quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Aplica el archivo a la pasarela:
kubectl -n default 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 Apigee para Kubernetes.
- 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 APIMExtensionPolicy
, 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 pasarela de GKE y el APIMExtensionPolicy
con las analíticas de la API de Apigee 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 Apigee para Kubernetes.
- 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 que ha creado el operador de Apigee para Kubernetes 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 Apigee Operator para Kubernetes, consulta el artículo Solucionar problemas de Apigee Operator para Kubernetes para encontrar soluciones a errores habituales.
Pasos siguientes
Para añadir más políticas, consulta Añadir políticas a la puerta de enlace de GKE.