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 crear un ApigeeBackendService y la extensión de tráfico requerida en la puerta de enlace de Google Kubernetes Engine (GKE) que se ejecuta en tu clúster.
Este enfoque es una alternativa al uso de APIMExtensionPolicy para identificar el plano de datos de Apigee como el punto de decisión de políticas (PDP) para GKE Gateway.
Cuando creas un ApigeeBackendService, el operador de Apigee para Kubernetes crea automáticamente un APIMExtensionPolicy con el mismo nombre y espacio de nombres que el ApigeeBackendService.
Este es el APIMExtensionPolicy de respaldo.
Recomendamos este enfoque si creas y administras extensiones de tráfico de Cloud Load Balancing y deseas agregar Apigee como una extensión en tu recurso de extensión de tráfico. Debes usar ApigeeBackendService si la extensión de tráfico de Apigee funciona en conjunto con otras extensiones de tráfico.
Antes de comenzar
Antes de comenzar con esta tarea, completa los siguientes pasos:
- Confirma que tu implementación de GKE use la versión 1.34.x o posterior de GKE.
- 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 Apigee para Kubernetes. Consulta Instala el operador 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 para Kubernetes, no se necesitan roles ni permisos de IAM adicionales para completar estas tareas.
Puedes 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.
Crea el recurso de ApigeeBackendService
Para configurar una extensión de servicio de tráfico en tu puerta de enlace de GKE, crea dos recursos principales:
- ApigeeBackendService: Este recurso personalizado especifica el plano de datos de Apigee como el punto de decisión de políticas (PDP) y configura los detalles de la red para los grupos de extremos de red (NEG) de Private Service Connect (PSC).
- GCPTrafficExtension: Este recurso de la API de Gateway de GKE define la cadena de extensión, incluido cómo se dirige el tráfico a ApigeeBackendService.
Crea un ApigeeBackendService
El recurso ApigeeBackendService especifica el plano de datos de Apigee como el PDP para un GCPTrafficExtension.
Para crear un ApigeeBackendService, sigue estos pasos:
- Crea un archivo YAML llamado
apigee-backend-service.yamlcon el siguiente contenido: - ENV_NAME es el entorno de Apigee que se usará. Es similar al campo
apigeeEnven el objetoAPIMExtensionPolicy. Este campo es opcional para Apigee y obligatorio para Hybrid. - SECURITY_ENABLED (opcional) especifica si las políticas predeterminadas de Apigee para la validación de claves de API y las verificaciones de cuota se habilitan automáticamente. El valor predeterminado es
truesi no se especifica. - REGION_NAME_1 especifica la región en la que implementas la puerta de enlace de GKE.
- NETWORK_NAME_1 y SUBNET_NAME_1 especifican los URIs de recursos completos de la red y la subred en las que se crean los NEG de PSC. Por ejemplo,
projects/my-project/global/networks/my-defaultyprojects/my-project/regions/us-central1/subnetworks/my-default. Por lo general, son las mismas que la red y la subred del clúster de GKE. - REGION_NAME_2, NETWORK_NAME_2 y SUBNET_NAME_2 son opcionales. Los necesitas si implementas la extensión de tráfico de Apigee en varias regiones.
- Aplica el archivo YAML al clúster en el espacio de nombres
default:kubectl apply -f apigee-backend-service.yaml
- Confirma que el objeto
ApigeeBackendServicese haya creado correctamente:kubectl get apigeebackendservice
El resultado debería ser similar al siguiente:
NAMESPACE NAME STATE ERRORMESSAGE default default-ext-lb1-apim-policy CREATED
# apigee-backend-service.yaml kind: ApigeeBackendService apiVersion: apim.googleapis.com/v1 metadata: name: my-apigee-extension-backend-service spec: apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid defaultSecurityEnabled: SECURITY_ENABLED locations: # required field - name: REGION_NAME_1 network: NETWORK_NAME_1 subnet: SUBNET_NAME_1 - name: REGION_NAME_2 network: NETWORK_NAME_2 subnet: SUBNET_NAME_2
Aquí:
Cuando creas un ApigeeBackendService, el operador de Apigee para Kubernetes crea automáticamente un APIMExtensionPolicy con el mismo nombre y espacio de nombres que el ApigeeBackendService.
Este es el APIMExtensionPolicy de respaldo.
Si defaultSecurityEnabled se configura como true, el operador de Apigee para Kubernetes agrega automáticamente las políticas de cuota y clave de API predeterminadas a APIMExtensionPolicy. Para agregar políticas adicionales, consulta Agrega políticas a GKE Gateway.
Crea un recurso GCPTrafficExtension
El recursoGCPTrafficExtension define una extensión para Apigee y hace referencia al ApigeeBackendService creado en el paso anterior como su backendRef.
Para obtener más detalles sobre cómo configurar un GCPTrafficExtension, consulta Configura extensiones de servicio.
El campo supportedEvents especifica qué partes del ciclo de vida de la solicitud y la respuesta se exponen a la extensión. El operador de Apigee para Kubernetes admite los siguientes eventos:
RequestHeadersRequestBodyRequestTrailersResponseHeadersResponseBodyResponseTrailers
RequestBody y ResponseBody en la lista supportedEvents.
Para obtener más información sobre los eventos admitidos, consulta la documentación de las extensiones de tráfico de Cloud Load Balancing.
Para crear un GCPTrafficExtension, sigue estos pasos:
- Crea un archivo YAML llamado
gcp-traffic-extension.yamlcon el siguiente contenido:# gcp-traffic-extension.yaml kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-apigee-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME # Replace with your GKE Gateway name extensionChains: - name: EXTENSION_CHAIN_NAME matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: EXTENSION_NAME metadata: # This metadata label must match the name of the ApigeeBackendService apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME failOpen: false supportedEvents: - SUPPORTED_EVENT1 - SUPPORTED_EVENT2 timeout: 1s requestBodySendMode: FullDuplexStreamed backendRef: # References the ApigeeBackendService by
kindandnamekind: ApigeeBackendService name: APIGEE_BACKEND_SERVICE_NAME Port: 443Aquí:
- GATEWAY_NAME es el nombre de la puerta de enlace de GKE a la que se aplica la extensión.
- EXTENSION_CHAIN_NAME es el nombre de la cadena de extensión.
- EXTENSION_NAME es el nombre de la extensión del servicio de tráfico.
- APIGEE_BACKEND_SERVICE_NAME es el nombre del
ApigeeBackendServiceque se creó anteriormente. Esta etiqueta dentro del bloqueextensionsdebe coincidir con elmetadata.namedelApigeeBackendServicecreado anteriormente. - El campo
supportedEventsespecifica qué partes del ciclo de vida de la solicitud y la respuesta se exponen a la extensión. El operador de Apigee para Kubernetes admite los siguientes eventos:RequestHeadersRequestBodyRequestTrailersResponseHeadersResponseBodyResponseTrailers
RequestBodyyResponseBodyen la listasupportedEvents. Para obtener más información sobre los eventos admitidos, consulta la documentación de las extensiones de tráfico de Cloud Load Balancing.
- Aplica el archivo YAML al clúster:
kubectl apply -f gcp-traffic-extension.yaml