Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
A medida que tus necesidades de gestión de APIs crezcan y cambien, es posible que tengas que añadir nuevos servicios a tu clúster o actualizar las rutas y las opciones de entrada. En esta página se describe cómo actualizar el clúster para completar las siguientes tareas:
- Añada una nueva pasarela y una nueva HTTPRoute.
- Actualiza un producto de API.
- Crea un producto de API.
- Crea un conjunto de operaciones de API.
- Prueba la nueva configuración de la pasarela.
Antes de empezar
Antes de empezar esta tarea, asegúrate de completar los pasos que se describen en Crear un APIMExtensionPolicy. En esta página se da por hecho que has configurado un clúster de Google Kubernetes Engine (GKE), has instalado el operador de Apigee para Kubernetes, has creado una puerta de enlace de Google Kubernetes Engine (GKE) y has aplicado al menos una política de gestión de APIs a la puerta de enlace.
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.
Añadir un nuevo Gateway y una nueva HTTPRoute
En esta sección, añadirás un nuevo Gateway y un nuevo HTTPRoute a tu clúster. En las guías de tareas anteriores, las configuraciones de ejemplo usaban una pasarela de GKE externa. Si se implementan varias pasarelas en la misma región, deben ser del mismo tipo (ambas externas o ambas internas). Por este motivo, la configuración de ejemplo de esta guía también usará una pasarela externa.
El operador de Apigee para Kubernetes se puede usar con pasarelas de GKE internas o externas, pero no puedes desplegar ambos tipos de pasarelas en la misma región.
Para añadir un nuevo Gateway y una nueva HTTPRoute a tu clúster, sigue estos pasos:
- Configura una nueva puerta de enlace de GKE externa. Para obtener más información y conocer los pasos que debes seguir, consulta el artículo Implementar una pasarela externa.
- Crea un recurso global
SslCertificate
gestionado por Google:gcloud compute ssl-certificates create CERT_NAME \ --domains=HOST_NAME \ --global
Donde:
CERT_NAME
es el nombre del certificado que quieres crear.HOST_NAME_2
es el nombre de host de la nueva pasarela.
- Crea un archivo llamado
gateway2.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# gateway2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: Gateway metadata: name: global-ext-lb2 spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 443 tls: options: networking.gke.io/pre-shared-certs: CERT_NAME
- Añade una nueva HTTPRoute para
/post
al mismo archivo, tal como se destaca a continuación:# http-route2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: http-bin-route-post namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb2 namespace: default hostnames: - HOST_NAME_2 rules: - matches: - path: type: PathPrefix value: "/post" backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- Aplica los nuevos Gateway y HTTPRoute:
kubectl apply -f gateway2.yaml
- Comprueba el estado de HTTPRoute con el siguiente comando::
kubectl -n http get HttpRoute
La salida debería ser similar a la siguiente:
NAME HOSTNAMES AGE http-bin-route ["my-hostname-2"] 12d
- Comprueba el estado de la pasarela con el siguiente comando:
kubectl get gateway global-ext-lb2
La salida debería ser similar a la siguiente:
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb2 gke-l7-global-external-managed 34.54.193.92 True 11d
Confirma que la columna
Address
contiene una dirección IP válida y que el estado deProgrammed
esTrue
. - Describe la pasarela para asegurarte de que la ruta esté adjunta:
kubectl describe gateway global-ext-lb2
La salida debería ser similar a la siguiente:
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Confirma que el valor de
Attached Routes
es1
.- Envía una solicitud a la pasarela para verificar que la ruta funciona:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela, tal como se muestra en la columnaAddress
de la respuesta devuelta en el paso 7.HOST_NAME_2
es el nombre de host definido enHTTPRoute
de la pasarela.
- La salida debería ser similar a la siguiente:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "https://apigee-apim-operator-test.apigee.net/post" }
- Crea una nueva política de extensión de APIM que haga referencia a la ruta HTTP del nuevo Gateway creado en un paso anterior:
- Crea un archivo llamado
apim-policy2.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be installed name: global-ext-lb2 kind: Gateway namespace: default
- Aplica la nueva política de extensión de APIM:
kubectl apply -f apim-policy2.yaml
Una vez que se aplica el archivo, el operador de Apigee para Kubernetes crea recursos de red en segundo plano.
- Comprueba el estado de la política de extensiones de APIM:
kubectl -n apim get APIMExtensionPolicy
La salida debería ser similar a la siguiente:
NAME STATE ERRORMESSAGE global-ext-lb2-apim-policy-2 RUNNING
Confirma que el valor de
STATE
esRUNNING
. - Espera cinco minutos para que los cambios se propaguen a todas las instancias del balanceador de carga y, a continuación, usa el siguiente comando para verificar que se produce un error en una solicitud a la nueva pasarela:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Donde:
GATEWAY_IP_ADDRESS
es la dirección IP de la pasarela obtenida en un paso anterior.HOST_NAME_2
es el nombre de host definido enHTTPRoute
de la pasarela.
La solicitud debería fallar y devolver una respuesta similar a la siguiente:
{ "fault": { "faultstring": "Raising fault. Fault name : RF-insufficient-request-raise-fault", "detail": { "errorcode": "steps.raisefault.RaiseFault" } } }
Esto significa que la extensión de servicio de Apigee está activa y que se aplica la verificación de la clave de API y del token de acceso. Para saber qué pasos debes seguir para crear una aplicación de desarrollador, obtener una clave de API y probar tu nueva pasarela con la clave, consulta Probar la extensión de servicio de Apigee.
- Crea un archivo llamado
Actualizar un producto de API
Modifica un producto de API para que haga referencia a la nueva política de extensión de APIM:
- Crea un archivo llamado
api-product-2.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 EnforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Aplica el nuevo archivo de producto de API:
kubectl apply -f api-product-2.yaml
Los cambios tardarán aproximadamente tres minutos en aplicarse en todo el clúster.
En este ejemplo, se actualiza la sección EnforcementRefs
del producto de la API api-product-2
para hacer referencia a global-ext-lb1-apim-policy
y global-ext-lb2-apim-policy
, tal como se muestra en las partes destacadas de yaml
.
Crear un producto de API
Crea un producto de API:
- Crea un archivo llamado
api-product-2.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 enforcementRefs: - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Aplica el nuevo archivo de producto de API:
kubectl apply -f api-product-2.yaml
Los cambios tardarán aproximadamente tres minutos en aplicarse en todo el clúster.
En este ejemplo, se crea la sección EnforcementRefs
del nuevo producto de API api-product-2
para hacer referencia a global-ext-lb2-apim-policy
, tal como se muestra en las partes destacadas de yaml
.
Crear un conjunto de operaciones de API
Crea un conjunto de operaciones de API:
- Crea un archivo llamado
item-set-post.yaml
en el espacio de nombresapim
. - Copia el siguiente contenido en el archivo nuevo:
# item-set-post.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-2 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Aplica el nuevo archivo de conjunto de operaciones de la API:
kubectl apply -f item-set-post.yaml
Los cambios tardarán aproximadamente tres minutos en aplicarse en todo el clúster.
En este ejemplo, se crea el valor restOperations
del nuevo conjunto de operaciones de API item-set-post
para hacer referencia a la ruta /post
, tal como se muestra en las partes destacadas del archivo.
Probar la nueva configuración de la pasarela
Para probar la nueva configuración de la pasarela, envía la siguiente solicitud a la nueva ruta /post
:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Donde:
- GATEWAY_IP_ADDRESS es la dirección IP de la pasarela obtenida en un paso anterior.
- HOST_NAME es el nombre de host definido en
HTTPRoute
de la pasarela.
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": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/post" }
Solucionar problemas
Si tienes problemas al actualizar y ampliar las políticas de gestión de APIs que se usan con Apigee Operator para Kubernetes, consulta el artículo Solucionar problemas de Apigee Operator para Kubernetes para ver soluciones a errores habituales.
Siguientes pasos
- Consulta cómo desinstalar el operador de Apigee para Kubernetes.
- Consulta más información sobre las opciones para implementar pasarelas.