Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questa pagina descrive come modificare il gateway Google Kubernetes Engine (GKE) in esecuzione nel cluster per applicare i criteri di gestione delle API Apigee utilizzando Apigee APIM Operator for Kubernetes (anteprima).
Prima di iniziare
Prima di iniziare questa attività, assicurati di completare i seguenti passaggi:
- Verifica che nel cluster GKE sia configurata un'identità per i carichi di lavoro. Per i passaggi necessari, consulta Creare un'identità di carico di lavoro.
- Verifica che nel cluster sia configurato e funzionante un gateway GKE. Per ulteriori dettagli, consulta la sezione Eseguire il deployment dei gateway.
- Installa l'operatore APIM. Per le istruzioni di installazione, consulta Installare l'operatore APIM di Apigee per Kubernetes.
Ruoli obbligatori
Se hai assegnato i ruoli richiesti al tuo account di servizio come descritto in Installa l'operatore APIM di Apigee per Kubernetes, non sono richieste autorizzazioni o ruoli IAM aggiuntivi per completare queste attività.
Puoi scegliere di 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 ulteriori informazioni, consulta Autorizzare le azioni nei cluster utilizzando il controllo degli accessi basato sui ruoli.
Panoramica
Le sezioni seguenti descrivono i passaggi necessari per modificare il tuo gateway GKE in modo che utilizzi i criteri Apigee utilizzando APIM Operator. In questa procedura dettagliata:
- Definire il criterio di estensione APIM.
- Definisci il prodotto API.
- Definisci l'insieme di operazioni dell'API.
- Testa l'estensione di servizio Apigee.
- Visualizza Apigee API Analytics nella console Google Cloud.
Definisci il criterio dell'estensione APIM
In questo passaggio, dovrai definire il criterio di estensione APIM e applicarlo a GKE Gateway in esecuzione nel cluster.
Questo criterio regola tutto il traffico che passa attraverso il gateway e il relativo HTTPRoutes
associato,
funzionando in modo simile a un flowhook a livello di ambiente in Apigee oggi.
Definisci il criterio di estensione APIM:
- Crea un nuovo file denominato
global-ext-lb1-apim-policy.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default
dove ENV_NAME è il nome dell'ambiente Apigee creato nel passaggio di installazione Crea un ambiente Apigee.
Puoi visualizzare tutti gli ambienti disponibili nella pagina Ambienti Apigee della console Google Cloud:
- Applica il criterio:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Una volta applicato il file
yaml
, l'operatore APIM crea le risorse di networking in background. - Controlla lo stato delle norme relative alle estensioni API utilizzando il seguente comando:
kubectl -n apim get APIMExtensionPolicy
L'output dovrebbe essere simile al seguente, con un valore
State
pari aRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Utilizza il seguente comando per inviare una richiesta al gateway:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, doveGATEWAY_NAME
è il nome del gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
è il nome host definito inHTTPRoute
del gateway.
- La richiesta dovrebbe non riuscire con una risposta simile alla seguente:
{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}
Ciò indica che il criterio di estensione Apigee è attivo e che l'applicazione delle chiavi API e la verifica dei token di accesso sono attive.
Definisci il prodotto API
Definisci il prodotto API:
- Crea un nuovo file denominato
api-product.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file:
# api-product.yaml apiVersion: apim.googleapis.com/v1alpha1 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
- Applica il file al gateway utilizzando il seguente comando:
kubectl -n apim apply -f api-product.yaml
Definisci l'insieme di operazioni dell'API
Definisci l'insieme di operazioni API per il prodotto API creato nel passaggio precedente:
- Crea un nuovo file denominato
apim-policies.yaml
nello spazio dei nomiapim
. - Copia i seguenti contenuti nel nuovo file.
Questo file definisce un criterio di quota e le operazioni REST disponibili
per il prodotto API definito nel passaggio precedente:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIOperationSet metadata: name: item-set 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
- Applica il file al gateway:
kubectl -n apim apply -f apim-policies.yaml
Testa l'estensione di servizio Apigee
In questo passaggio, utilizzerai l'interfaccia utente di Apigee nella console Google Cloud per testare l'estensione del servizio Apigee e il criterio di estensione Apigee applicato al tuo gateway.
Configurazione dei test
Configura le risorse API necessarie per i test:
Vai alla pagina Gestione API Apigee nella console Google Cloud:
- Seleziona l'organizzazione Apigee in cui hai installato l'operatore APIM.
- Crea uno sviluppatore:
- Seleziona Distribuzione > Sviluppatori.
- Nella pagina Sviluppatori, fai clic su + Crea.
- Nella pagina Aggiungi sviluppatore, compila i campi obbligatori utilizzando i valori che preferisci.
- Fai clic su Aggiungi.
- Crea un'app:
- Seleziona Distribuzione> App.
- Nella pagina App, fai clic su + Crea.
- Nella pagina Crea app, compila i campi obbligatori nella sezione Dettagli app utilizzando i seguenti valori:
- Nome app: demo-app
- Sviluppatore: seleziona lo sviluppatore che hai creato nel passaggio precedente o un altro sviluppatore dall'elenco.
- Nella sezione Credenziali app, fai clic su + Aggiungi credenziale.
- Nella sezione Credenziali, compila i campi obbligatori nella sezione Dettagli credenziali con i seguenti valori:
- Nome credenziale: demo-credential
- Tipo di credenziale: seleziona Chiave API.
- Fai clic su Crea.
- Nella sezione Prodotti, fai clic su + Aggiungi prodotti.
- Seleziona il
api-product-1
creato nel passaggio precedente. - Fai clic su Aggiungi.
- Fai clic su Crea.
- Nella pagina Dettagli app, nella sezione Credenziale, fai clic su
visibility_off per visualizzare il valore della Chiave.
Copia il valore
Key
. La utilizzerai per effettuare chiamate API al tuo servizio in un passaggio successivo. - Nella pagina Dettagli app, nella sezione Credenziale, fai clic su visibility_off
per visualizzare il valore dell'App Secret.
Copia il valore App secret. Utilizzerai questo valore per generare un token di accesso in un passaggio successivo.
Testare l'applicazione delle chiavi API
Utilizza il seguente comando per inviare una richiesta al tuo gateway utilizzando la chiave API ottenuta in un passaggio precedente:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, doveGATEWAY_NAME
è il nome del gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
è il nome host definito inHTTPRoute
del gateway.API_KEY
è il valore della chiave API ottenuto in Configurazione del test.
La richiesta dovrebbe riuscire e restituire una risposta simile alla seguente:
{ "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/get" }
Testare l'applicazione delle quote
Per testare l'applicazione della quota definita nel criterio di estensione APIM, invia la richiesta del passaggio precedente al gateway dieci volte nell'arco di un minuto.
Per generare le richieste, puoi eseguire lo script seguente:
#!/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
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, doveGATEWAY_NAME
è il nome del gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
è il nome host definito inHTTPRoute
del gateway.API_KEY
è il valore della chiave API ottenuto in Configurazione del test.
Questa azione dovrebbe attivare una violazione della quota e generare un errore simile al seguente:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Testare l'applicazione delle operazioni REST
Per testare l'applicazione delle operazioni REST, utilizza il seguente comando per inviare una richiesta al gateway utilizzando un URL non presente nell'insieme di operazioni dell'API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Dove:
GATEWAY_IP_ADDRESS
è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, doveGATEWAY_NAME
è il nome del gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
è il nome host definito inHTTPRoute
del gateway.API_KEY
è il valore della chiave API ottenuto in Configurazione del test.
La richiesta dovrebbe non riuscire con una risposta simile alla seguente:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Visualizzare Apigee API Analytics nella console Google Cloud
Puoi visualizzare il traffico API gestito da GKE Gateway e dalla policy APIMExtension che hai installato utilizzando Apigee API Analytics nella console Google Cloud:
- Vai alla pagina Gestione API Apigee nella console Google Cloud:
- Seleziona l'organizzazione Apigee in cui hai installato l'operatore APIM.
- Seleziona Analytics > Metriche API nel menu di navigazione laterale.
- Nella scheda API Proxy Performance (Rendimento del proxy API), scegli l'ambiente che hai creato nel passaggio facoltativo di installazione
Crea un ambiente Apigee o l'ambiente creato dall'operatore APIM durante l'installazione. Il nome dell'ambiente inizierà con il prefisso
apigee-ext-proc-enabled-env
. - Osserva il traffico API registrato.
Risoluzione dei problemi
Se riscontri problemi durante l'utilizzo dei criteri di gestione delle API con APIM Operator, consulta la sezione Risolvere i problemi di APIM Operator per trovare le soluzioni agli errori comuni.
Passaggi successivi
- Scopri come aggiungere le norme al gateway GKE.
- Scopri come disinstallare l'operatore APIM di Apigee per Kubernetes.