Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Questa pagina descrive come applicare le norme 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. Consulta Configurare la federazione delle identità per i carichi di lavoro per GKE per i passaggi richiesti.
- Verifica che il cluster abbia un gateway GKE configurato e funzionante. Per ulteriori dettagli, consulta la sezione Deployment dei gateway.
- Installa l'operatore Apigee per Kubernetes. Consulta Installare l'operatore Apigee per Kubernetes per istruzioni di installazione.
Crea il APIMExtensionPolicy
In questo passaggio, crea APIMExtensionPolicy e applicalo al gateway GKE in esecuzione nel cluster. Questo criterio regola tutto il traffico che passa attraverso il gateway e il relativo HTTPRoutes, funzionando in modo simile a un flowhook a livello di ambiente in Apigee oggi.
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 Crea un ambiente Apigee.Nota:se installi l'operatore Apigee per Kubernetes utilizzando il flag
generateEnv=TRUE, il campoapigeeEnvnon è obbligatorio.Puoi visualizzare tutti gli ambienti disponibili nella pagina Ambienti della console Google Cloud .
- Applica la policy:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlUna volta applicato il criterio, 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 un
STATEdiRUNNING: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 attiva 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 il criterio di estensione Apigee è attivo e che l'applicazione della chiave API e la verifica del token di accesso sono attive.
Passaggi successivi
- Scopri come aggiungere criteri 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
APIMExtensionPolicy richiede il certificato pubblico con codifica base64
associato al nome host del gruppo di ambienti. Hai creato questo certificato in
Installa l'ambiente ibrido Apigee utilizzando Helm.
Fornisci questo certificato all'operatore creando un secret Kubernetes nello spazio dei nomi
apim.
- Recupera la stringa del certificato codificata in 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 tuo cluster:
kubectl apply -f secret-cert.yaml
Definisci e applica il APIMExtensionPolicy
Definisci una risorsa APIMExtensionPolicy e applicala a Istio Gateway in esecuzione nel cluster. Questa estensione delle norme intercetta il traffico gestito dal gateway
e dal relativo HTTPRoutes e applica le norme 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 che hai creato con le estensioni di servizio abilitate, ad esempiomy-hybrid-env.HOST_NAME: il nome di dominio utilizzato per il gruppo Ambiente, ad esempiomy-proxies.example.com.INGRESS_IP_ADDRESS: l'indirizzo IP in entrata per l'ingresso del runtime di Apigee Hybrid. Per informazioni dettagliate sul recupero di questo IP, consulta Esporre 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 finché
STATEnon mostraRUNNING. L'output dovrebbe essere simile al seguente:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Testa la policy
Nel APIMExtensionPolicy creato nel passaggio precedente,
defaultSecurityEnabled è stato impostato su true. In questo modo vengono attivate automaticamente le norme di verifica della chiave API e del token OAuth2 per il traffico corrispondente a questo gateway.
Per testare questa operazione, invia una richiesta non autenticata al servizio di esempio httpbin
che hai configurato durante la verifica della configurazione di Istio Gateway in
Verifica la configurazione di Istio Gateway.
- 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 deve 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 norme Apigee vengono applicate da Istio Gateway.
Passaggi successivi
Scopri come creare prodotti API, sviluppatori e app per ottenere chiavi API per richieste autenticate: