Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza
Apigee Edge documentazione.
Questa pagina descrive come applicare le policy Apigee al traffico che passa attraverso un
gateway Kubernetes creando una risorsa personalizzata APIMExtensionPolicy. L'
operatore Apigee per Kubernetes monitora le risorse APIMExtensionPolicy e
configura il gateway di conseguenza.
Apigee
Segui questi passaggi se utilizzi Apigee.
Prima di iniziare
Prima di iniziare questa attività, completa i seguenti passaggi:
- Verifica che Workload Identity sia configurato nel cluster GKE. Per i passaggi necessari, consulta Configurare Workload Identity Federation for GKE.
- Verifica che nel cluster sia configurato e funzionante un gateway GKE. Per ulteriori dettagli, consulta Deployment dei gateway.
- Installa l'operatore Apigee per Kubernetes. Per le istruzioni di installazione, consulta Installare l'operatore Apigee per Kubernetes.
Crea APIMExtensionPolicy
In questo passaggio, crea APIMExtensionPolicy e applicala al gateway GKE
in esecuzione nel cluster. Questa policy regola tutto il traffico che passa attraverso il
gateway e le relative HTTPRoutes, operando in modo simile a un flowhook a livello di
ambiente in Apigee.
Per creare APIMExtensionPolicy:
- Crea un file denominato
global-ext-lb1-apim-policy.yamlcon i seguenti contenuti:# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default - Sostituisci
ENV_NAMEcon il nome dell'ambiente Apigee creato nel passaggio di installazione Creare un ambiente Apigee.Nota: se installi l'operatore Apigee per Kubernetes utilizzando il
generateEnv=TRUEflag, ilapigeeenvcampo non è obbligatorio.Puoi visualizzare tutti gli ambienti disponibili nella pagina Ambienti della Google Cloud console.
- Applica la policy:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlUna volta applicata la policy, l'operatore Apigee per Kubernetes crea risorse di rete in background.
- Controlla lo stato di
APIMExtensionPolicyutilizzando il seguente comando:kubectl -n apim get APIMExtensionPolicyL'output dovrebbe essere simile al seguente, con
STATEimpostato suRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Testa la policy
Utilizza il seguente comando per inviare una richiesta al gateway:
- Ottieni l'indirizzo IP del gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPSostituisci
GATEWAY_NAMEcon il nome del gateway, ad esempioglobal-ext-lb1. - Invia una richiesta a un endpoint configurato in
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Sostituisci
HOST_NAMEcon il nome host definito inHTTPRoutedel gateway, ad esempioexample.httpbin.com. - La richiesta dovrebbe non riuscire perché
defaultSecurityEnabled: trueè stato impostato nella risorsaAPIMExtensionPolicy, che abilita la verifica della chiave API e del token di accesso. Dovresti visualizzare una risposta simile alla seguente:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Ciò indica che la policy di estensione Apigee è attiva e che l'applicazione della chiave API e la verifica del token di accesso sono attive.
Passaggi successivi
- Scopri come aggiungere policy al gateway GKE.
- Scopri come disinstallare l'operatore Apigee per Kubernetes.
Apigee hybrid
Segui questi passaggi se utilizzi Apigee hybrid.
Prima di iniziare
Questa procedura presuppone che tu abbia installato l'operatore Apigee per Kubernetes seguendo i passaggi descritti in Installare l'operatore Apigee per Kubernetes per Apigee hybrid.
Crea un secret del certificato TLS
The APIMExtensionPolicy richiede il certificato pubblico con codifica base64
associato al nome host del gruppo di ambienti. Hai creato questo certificato in
Installare l'ambiente Apigee hybrid utilizzando Helm.
Fornisci questo certificato all'operatore creando un secret Kubernetes nello
apim spazio dei nomi.
- Ottieni la stringa del certificato con codifica base64 dal file creato durante l'installazione:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Crea un file denominato
secret-cert.yamlcon i seguenti contenuti:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Sostituisci
BASE64_ENCODED_CERT_STRINGcon l'output del comandocatnel passaggio 1. - Applica il secret al cluster:
kubectl apply -f secret-cert.yaml
Definisci e applica APIMExtensionPolicy
Definisci una risorsa APIMExtensionPolicy e applicala al gateway Istio
in esecuzione nel cluster. Questa estensione della policy intercetta il traffico gestito dal gateway
e dalle relative HTTPRoutes e applica le policy Apigee prima di inoltrare
le richieste alla destinazione di backend.
- Crea un file denominato
istio-gateway-apim-policy.yamlcon i seguenti contenuti:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeenv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Sostituisci le seguenti variabili:
ENV_NAME: il nome dell'ambiente Apigee hybrid creato con le estensioni di servizio abilitate, ad esempiomy-hybrid-env.HOST_NAME: il nome di dominio utilizzato per il gruppo di ambienti, ad esempiomy-proxies.example.com.INGRESS_IP_ADDRESS: l'indirizzo IP di ingresso per l'ingresso del runtime Apigee hybrid. Per informazioni su come recuperare questo IP, consulta Esponi l'ingresso Apigee.
- Applica la policy al cluster:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Una volta applicata la risorsa, l'operatore Apigee per Kubernetes inizia a configurare
le risorse di rete del gateway. Controlla lo stato di
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Attendi che
STATEmostriRUNNING. L'output dovrebbe essere simile al seguente:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Testa la policy
In APIMExtensionPolicy creato nel passaggio precedente,
defaultSecurityEnabled è stato impostato su true. In questo modo vengono abilitate automaticamente
le policy di verifica della chiave API e del token OAuth2 per il traffico corrispondente a questo gateway.
Per verificare, invia una richiesta non autenticata al servizio di esempio httpbin
configurato durante la verifica della configurazione del gateway Istio in
Verificare la configurazione del gateway Istio.
- Ottieni l'indirizzo IP del gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Invia una richiesta all'endpoint
/getconfigurato in HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Poiché
defaultSecurityEnabled: truerichiede l'autenticazione (ad esempio una chiave API valida), Apigee dovrebbe rifiutare la richiesta con un errore di autenticazione. La risposta dovrebbe essere simile alla seguente:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Questo output conferma che
APIMExtensionPolicyè attivo e che le policy Apigee vengono applicate dal gateway Istio.
Passaggi successivi
Scopri come creare prodotti API, sviluppatori e app per ottenere chiavi API per le richieste autenticate: