Crea un ApigeeBackendService

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questa pagina descrive come creare un ApigeeBackendService e l'estensione del traffico richiesta sul gateway Google Kubernetes Engine (GKE) in esecuzione nel cluster.

Questo approccio è un'alternativa all'utilizzo di APIMExtensionPolicy per identificare il data plane Apigee come Policy Decision Point (PDP) per GKE Gateway. Quando crei un ApigeeBackendService, l'operatore Apigee per Kubernetes crea automaticamente un APIMExtensionPolicy con lo stesso nome e lo stesso spazio dei nomi del ApigeeBackendService. Questo è il supporto APIMExtensionPolicy.

Ti consigliamo questo approccio se crei e gestisci estensioni del traffico di bilanciamento del carico Cloud e vuoi aggiungere Apigee come estensione nella risorsa estensione del traffico. Devi utilizzare ApigeeBackendService se l'estensione del traffico Apigee funziona in combinazione con altre estensioni del traffico.

Prima di iniziare

Prima di iniziare questa attività, completa i seguenti passaggi:

  • Verifica che l'implementazione di GKE utilizzi GKE 1.34.x o versioni successive.
  • Verifica che nel cluster GKE sia configurata un'Workload Identity. Per i passaggi richiesti, consulta Creare un'identità del workload.
  • Verifica che il cluster abbia un gateway GKE configurato e funzionante. Per ulteriori dettagli, consulta Deployment dei gateway.
  • Installa l'operatore Apigee per Kubernetes. Per istruzioni sull'installazione, consulta Installare l'operatore Apigee per Kubernetes.

Ruoli obbligatori

Se hai assegnato i ruoli richiesti al account di servizio come descritto in Installare l'operatore Apigee per Kubernetes, non sono necessari ulteriori ruoli o autorizzazioni IAM per completare queste attività.

Puoi autorizzare le azioni sulle risorse nel cluster Google Kubernetes Engine utilizzando il meccanismo di controllo dell'accesso basato sui ruoli (RBAC) integrato in Kubernetes. Per maggiori informazioni, vedi Autorizzare le azioni nei cluster utilizzando il controllo degli accessi basato sui ruoli.

Crea la risorsa ApigeeBackendService

Per configurare un'estensione del servizio di gestione del traffico sul gateway GKE, crea due risorse principali:

  • ApigeeBackendService:questa risorsa personalizzata specifica il data plane Apigee come punto decisionale dei criteri (PDP) e configura i dettagli di rete per i gruppi di endpoint di rete (NEG) Private Service Connect (PSC).
  • GCPTrafficExtension:questa risorsa API GKE Gateway definisce la catena di estensioni, incluso il modo in cui il traffico viene indirizzato ad ApigeeBackendService.

Crea un ApigeeBackendService

La risorsa ApigeeBackendService specifica il piano dati Apigee come PDP per un GCPTrafficExtension.

Per creare un ApigeeBackendService:

  1. Crea un file YAML denominato apigee-backend-service.yaml con i seguenti contenuti:
  2. # 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

    Dove:

    • ENV_NAME è l'ambiente Apigee da utilizzare. È simile al campo apigeeEnv in APIMExtensionPolicy. Questo campo è facoltativo per Apigee e obbligatorio per l'ibrido.
    • SECURITY_ENABLED (facoltativo) specifica se le policy Apigee predefinite per la convalida delle chiavi API e i controlli delle quote vengono attivate automaticamente. Se non specificato, il valore predefinito è true.
    • REGION_NAME_1 specifica la regione in cui viene eseguito il deployment di GKE Gateway.
    • NETWORK_NAME_1 e SUBNET_NAME_1 specificano gli URI completi delle risorse della rete e della subnet in cui vengono creati i NEG PSC. Ad esempio, projects/my-project/global/networks/my-default e projects/my-project/regions/us-central1/subnetworks/my-default. In genere, corrispondono alla rete e alla subnet del cluster GKE.
    • REGION_NAME_2, NETWORK_NAME_2 e SUBNET_NAME_2 sono facoltativi. Sono necessari se esegui il deployment dell'estensione del traffico Apigee in più regioni.

  3. Applica il file YAML al tuo cluster nello spazio dei nomi default:
    kubectl apply -f apigee-backend-service.yaml
  4. Verifica che ApigeeBackendService sia stato creato correttamente:
    kubectl get apigeebackendservice

    L'output dovrebbe essere simile al seguente:

    NAMESPACE   NAME                          STATE     ERRORMESSAGE
    default     default-ext-lb1-apim-policy   CREATED   

Quando crei un ApigeeBackendService, l'operatore Apigee per Kubernetes crea automaticamente un APIMExtensionPolicy con lo stesso nome e lo stesso spazio dei nomi del ApigeeBackendService. Questo è il supporto APIMExtensionPolicy.

Se defaultSecurityEnabled è impostato su true, l'operatore Apigee per Kubernetes aggiunge automaticamente le chiavi API e le norme relative alle quote predefinite a APIMExtensionPolicy. Per aggiungere altre policy, consulta Aggiungere policy al gateway GKE.

Crea una risorsa GCPTrafficExtension

La risorsaGCPTrafficExtension definisce un'estensione per Apigee e fa riferimento a ApigeeBackendService creato nel passaggio precedente come backendRef. Per maggiori dettagli sulla configurazione di un GCPTrafficExtension, vedi Configurare le estensioni di servizio.

Il campo supportedEvents specifica quali parti del ciclo di vita della richiesta e della risposta sono esposte all'estensione. L'operatore Apigee per Kubernetes supporta i seguenti eventi:

  • RequestHeaders
  • RequestBody
  • RequestTrailers
  • ResponseHeaders
  • ResponseBody
  • ResponseTrailers
Per le norme che richiedono l'ispezione o la modifica del corpo della richiesta o della risposta (ad es. JSONThreatProtection), devi includere RequestBody e ResponseBody nell'elenco supportedEvents. Per saperne di più sugli eventi supportati, consulta la documentazione sulle estensioni del traffico di Cloud Load Balancing.

Per creare un GCPTrafficExtension:

  1. Crea un file YAML denominato gcp-traffic-extension.yaml con i seguenti contenuti:
    # 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 kind and name
            kind: ApigeeBackendService
            name: APIGEE_BACKEND_SERVICE_NAME
            Port: 443

    Dove:

    • GATEWAY_NAME è il nome del gateway GKE a cui si applica l'estensione.
    • EXTENSION_CHAIN_NAME è il nome della catena di estensioni.
    • EXTENSION_NAME è il nome dell'estensione di servizio del traffico.
    • APIGEE_BACKEND_SERVICE_NAME è il nome di ApigeeBackendService creato in precedenza. Questa etichetta all'interno del blocco extensions deve corrispondere a metadata.name di ApigeeBackendService creato in precedenza.
    • Il campo supportedEvents specifica quali parti del ciclo di vita della richiesta e della risposta sono esposte all'estensione. L'operatore Apigee per Kubernetes supporta i seguenti eventi:
      • RequestHeaders
      • RequestBody
      • RequestTrailers
      • ResponseHeaders
      • ResponseBody
      • ResponseTrailers
      Per le norme che richiedono l'ispezione o la modifica del corpo della richiesta o della risposta (ad es. JSONThreatProtection), devi includere RequestBody e ResponseBody nell'elenco supportedEvents. Per saperne di più sugli eventi supportati, consulta la documentazione sulle estensioni del traffico di Cloud Load Balancing.
  2. Applica il file YAML al cluster:
    kubectl apply -f gcp-traffic-extension.yaml

Passaggi successivi