Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questa pagina descrive come attivare le opzioni predefinite di applicazione della sicurezza e delle quote disponibili con Apigee Operator per Kubernetes.
Prima di iniziare
Prima di iniziare questa attività, assicurati di completare i seguenti passaggi:
- Installa l'operatore Apigee per Kubernetes. Per istruzioni sull'installazione, consulta Installare l'operatore Apigee per Kubernetes.
- Crea un'estensione di servizio del traffico. Per completare questo passaggio, puoi utilizzare
ApigeeBackendService
oAPIMExtensionPolicy
. Per saperne di più sulla creazione di un'estensione del traffico utilizzandoAPIMExtensionPolicy
, consulta Creare un APIMExtensionPolicy. Per ulteriori informazioni sulla creazione di un'estensione del traffico utilizzandoApigeeBackendService
, consulta Crea un ApigeeBackendService.
Indipendentemente dal fatto che tu abbia creato un'estensione del servizio di gestione del traffico per il tuo gateway GKE utilizzando ApigeeBackendService
o APIMExtensionPolicy
,
devi completare i passaggi descritti in questa procedura dettagliata per attivare la chiave API e le norme relative alle quote predefinite aggiunte al APIMExtensionPolicy
di backend.
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 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 maggiori informazioni, vedi Autorizzare le azioni nei cluster utilizzando il controllo degli accessi basato sui ruoli.
Panoramica
Le sezioni seguenti descrivono come attivare le opzioni predefinite di applicazione di sicurezza e quote disponibili con Apigee Operator per Kubernetes. In questa procedura dettagliata:
- Definisci il prodotto API.
- Definisci il set di operazioni API.
- Testa l'estensione di servizio Apigee.
- Visualizza l'analisi dell'API Apigee nella console Google Cloud .
I passaggi necessari per definire il prodotto API e il set di operazioni API variano leggermente a seconda che tu abbia creato un'estensione del traffico per il gateway GKE utilizzando ApigeeBackendService
o APIMExtensionPolicy
.
Definisci il prodotto API
In questo passaggio, definirai il prodotto API che verrà utilizzato per gestire l'applicazione della chiave API e le norme relative alle quote.
Utilizzo di APIMExtensionPolicy
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/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
- Applica il file al gateway utilizzando il seguente comando:
kubectl -n apim apply -f api-product.yaml
Utilizzo di ApigeeBackendService
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/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
- Applica il file al gateway utilizzando il seguente comando:
kubectl -n default apply -f api-product.yaml
Definisci il set di operazioni API
In questo passaggio definirai il set di operazioni API che verrà utilizzato per gestire l'applicazione delle operazioni REST.
Utilizzo di APIMExtensionPolicy
Definisci il set 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/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
- Applica il file al gateway:
kubectl -n apim apply -f apim-policies.yaml
Utilizzo di ApigeeBackendService
Definisci il set di operazioni API per il prodotto API creato nel passaggio precedente:
- Crea un nuovo file denominato
apim-policies.yaml
nello spazio dei nomidefault
. - 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/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
- Applica il file al gateway:
kubectl -n default apply -f apim-policies.yaml
Testa l'estensione di servizio Apigee
In questo passaggio, utilizzerai l'interfaccia utente Apigee nella console Google Cloud per testare l'estensione del servizio Apigee e il criterio di estensione Apigee applicato al gateway.
Configurazione dei test
Configura le risorse API necessarie per il test:
Vai alla pagina Gestione API Apigee nella console Google Cloud :
- Seleziona l'organizzazione Apigee in cui hai installato l'operatore Apigee per Kubernetes.
- 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, completa i campi obbligatori nella sezione Dettagli credenziali
con i seguenti valori:
- Credential name (Nome credenziale): demo-credential
- Tipo di credenziale: seleziona Chiave API.
- Fai clic su Crea.
- Nella sezione Prodotti, fai clic su + Aggiungi prodotti.
- Seleziona
api-product-1
creato nel passaggio precedente. - Fai clic su Aggiungi.
- Fai clic su Crea.
- Nella pagina Dettagli app, nella sezione Credenziali, fai clic su
visibility_off per visualizzare il valore della chiave.
Copia il valore di
Key
. Utilizzerai questa chiave per effettuare chiamate API al tuo servizio in un passaggio successivo. - Nella pagina Dettagli app, nella sezione Credenziali, fai clic su visibility_off
per visualizzare il valore del secret dell'app.
Copia il valore di App secret. Utilizzerai questo valore per generare un token di accesso in un passaggio successivo.
Testare l'applicazione della chiave API
Utilizza il seguente comando per inviare una richiesta al 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 dei 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": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Test dell'applicazione delle quote
Per testare l'applicazione della quota definita in APIMExtensionPolicy
, invia la richiesta del passaggio precedente
al gateway dieci volte nell'arco di un minuto.
Puoi eseguire lo script seguente per generare le richieste:
#!/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 dei 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"}}}
Testa 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 nel set di operazioni 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 dei test.
La richiesta dovrebbe non andare a buon fine con una risposta simile alla seguente:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Visualizzare l'analisi dell'API Apigee nella console Google Cloud
Puoi visualizzare il traffico API gestito da GKE Gateway e APIMExtensionPolicy
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 Apigee per Kubernetes.
- Seleziona Analytics > Metriche API nel menu di navigazione laterale.
- Nella scheda Rendimento del proxy API, scegli l'ambiente che hai creato nel passaggio di installazione facoltativo
Crea un ambiente Apigee o l'ambiente creato dall'operatore Apigee per Kubernetes 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 Apigee Operator per Kubernetes, consulta la sezione Risoluzione dei problemi di Apigee Operator per Kubernetes per soluzioni a errori comuni.
Passaggi successivi
Per aggiungere altre policy, consulta Aggiungere policy al gateway GKE.