Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Come ottenere una chiave API
L'esempio seguente spiega come ottenere una chiave API che puoi utilizzare per convalidare le chiamate API a un servizio di destinazione trasferite al proxy tramite Apigee Adapter for Envoy.
1. Accedi ad Apigee
- Apri l'interfaccia utente di Apigee in un browser.
- Una volta nell'interfaccia utente, seleziona la stessa organizzazione che hai utilizzato per configurare Apigee Adapter for Envoy.
2. Creazione di uno sviluppatore
Puoi utilizzare uno sviluppatore esistente per i test oppure crearne uno nuovo nel seguente modo:
- Seleziona Pubblica > Sviluppatori nel menu di navigazione laterale.
- Fai clic su + Sviluppatore.
- Compila la finestra di dialogo per creare un nuovo sviluppatore. Puoi utilizzare qualsiasi nome/indirizzo email sviluppatore che preferisci.
3. Creazione di un prodotto API
Segui l'esempio di creazione dei prodotti fornito di seguito. Vedi anche Informazioni sulla configurazione del prodotto API.
- Seleziona Pubblica > Prodotti API nel menu di navigazione laterale.
- Fai clic su + Prodotto API.
- Compila la pagina Dettagli prodotto come segue.
- Nella sezione Target di servizio remoto Apigee, fai clic su Aggiungi target di servizio remoto Apigee.
- Nella finestra di dialogo della destinazione del servizio remoto Apigee, aggiungi i seguenti valori:
Attributo Valore Descrizione Nome destinazione Inserisci il nome del servizio di destinazione. Ad esempio: httpbin.org
L'endpoint di destinazione indirizzato al proxy Envoy. Percorso Inserisci nel servizio un percorso della risorsa da abbinare. Ad esempio: /headers
.Il percorso di richiesta per la corrispondenza nell'endpoint di destinazione. Le chiamate proxy API a questo percorso corrisponderanno a questo prodotto API. - Fai clic su Salva.
Campo | Valore |
---|---|
Nome | httpbin-product
|
Display Name | httpbin product
|
Ambiente | your_environment
Impostalo sull'ambiente utilizzato durante il provisioning di Apigee Adapter for Envoy. |
Accesso | Private
|
Quota | 5 richieste ogni minuto
Vedi anche Quota. |
4. Creazione di un'app sviluppatore
- Seleziona Pubblica > App nel menu di navigazione laterale.
- Fai clic su + App.
- Compila la pagina App sviluppatore come segue. Non salvare fino a quando ti viene chiesto di farlo.
- Quindi, aggiungi il prodotto API all'app:
- Nella sezione Credenziali, fai clic su + Aggiungi prodotto e seleziona il prodotto appena configurato: httpbin-product.
- Fai clic su Crea.
- In Credenziali, fai clic su Mostra accanto a Chiave.
- Copia il valore della chiave utente. Questo valore è la chiave API che utilizzerai per effettuare chiamate API al servizio
httpbin
.
Informazioni sui prodotti basati su API
I prodotti API sono il punto di controllo principale per Apigee Remote Service. Quando crei un prodotto API e lo associ a un servizio di destinazione, crei un criterio che verrà applicato a tutte le richieste che configuri il tuo Apigee Adapter for Envoy per gestire.
Definizione del prodotto API
Quando definisci un prodotto API in Apigee, puoi impostare un numero di parametri che verranno utilizzati per valutare le richieste:
- Target
- Percorso richiesta
- Quota
- Ambiti OAuth
Destinazioni dei servizi remoti
La definizione del prodotto API verrà applicata a una richiesta se quest'ultima corrisponde sia all'associazione di destinazione (ad esempio
httpbin.org
) sia al percorso di richiesta (ad esempio/httpbin
). Un elenco di potenziali target viene archiviato come attributo nel prodotto API.Per impostazione predefinita, il servizio remoto Apigee controlla l'intestazione
:authority (host)
speciale di Envoy rispetto al suo elenco di destinazioni. Tuttavia, può essere configurato per l'utilizzo di altre intestazioni.Percorso risorsa API
Il percorso inserito corrisponde alle seguenti regole:
- Una singola barra (
/
) corrisponde a qualsiasi percorso. *
è valido ovunque e corrisponde all'interno di un segmento (tra barre).**
è valido alla fine e corrisponde a qualsiasi cosa alla fine della riga.
Quota
Una quota specifica il numero di messaggi di richiesta che un'app può inviare a un'API nel corso di un'ora, un giorno, una settimana o un mese. Quando un'app raggiunge il limite di quota, le successive chiamate API vengono rifiutate.
Casi d'uso delle quoteLe quote consentono di applicare il numero di richieste che un client può effettuare a un servizio in un determinato periodo di tempo. Le quote vengono spesso utilizzate per applicare contratti aziendali o SLA (accordi sul livello del servizio) con sviluppatori e partner, anziché per la gestione del traffico operativo. Ad esempio, potrebbe essere utilizzata una quota per limitare il traffico di un servizio senza costi, consentendo al contempo l'accesso completo ai clienti paganti.
La quota viene definita in un prodotto APII parametri delle quote sono configurati nei prodotti API. Ad esempio, quando crei un prodotto API, puoi facoltativamente impostare il limite di quota consentito, l'unità di tempo e l'intervallo.
Poiché le chiavi API vengono rimappate ai prodotti API, ogni volta che una chiave API viene verificata, il contatore di quota appropriato può essere ridotto (se nel prodotto associato è stata definita una quota).
A differenza del runtime Apigee, le quote inserite nella definizione del prodotto vengono applicate automaticamente dal servizio remoto Apigee. Se la richiesta viene autorizzata, viene conteggiata nella quota consentita.
Dove vengono mantenute le quoteLe quote vengono mantenute e controllate localmente dal processo del servizio remoto e mantenute in modo asincrono con Apigee Runtime. Ciò significa che le quote non sono precise e potrebbero comportare un superamento se hai più di un servizio remoto che mantiene la quota. Se la connessione al runtime Apigee viene interrotta, la quota locale continuerà come quota autonoma fino al momento in cui potrà riconnettersi al runtime Apigee.
Ambiti OAuth
Se utilizzi token JWT, puoi limitare i token a sottoinsiemi degli ambiti OAuth consentiti. Gli ambiti assegnati al token JWT emesso verranno verificati in base agli ambiti del prodotto API.
Informazioni sulle app per sviluppatori
Una volta configurati i Prodotti API, dovrai creare un'App associata a uno Sviluppatore. L'app consente a un client l'accesso ai prodotti API associati con una chiave API o un token JWT.
Utilizzo dell'autenticazione basata su JWT
Puoi utilizzare un token JWT per effettuare chiamate proxy API autenticate anziché utilizzare una chiave API. Questa sezione spiega come utilizzare il comando
apigee-remote-service-cli token
per creare, ispezionare e ruotare i token JWT.Panoramica
La verifica e l'autenticazione JWT vengono gestite da Envoy utilizzando il suo filtro di autenticazione JWT.
Una volta autenticato, il filtro
ext-authz
di Envoy invia le intestazioni delle richieste e il JWT aapigee-remote-service-envoy
. Corrisponde alle rivendicazioniapi_product_list
escope
del JWT nei confronti dei Prodotti API Apigee per autorizzarlo a fronte del target della richiesta.Creazione di token JWT Apigee
I token JWT Apigee possono essere creati utilizzando l'interfaccia a riga di comando:
$CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
In alternativa, puoi utilizzare l'endpoint del token OAuth standard. Esempio di ricciolo:
curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"
Utilizzo del token JWT
Una volta ottenuto il token, devi semplicemente passarlo a Envoy nell'intestazione Autorizzazione. Esempio:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Errore del token JWT
Rifiuto di Envoy
Se Envoy rifiuta il token, è possibile che venga visualizzato un messaggio come:
Jwks remote fetch is failed
In questo caso, assicurati che la configurazione Envoy contenga un URI valido nella sezione
remote_jwks
, che sia raggiungibile da Envoy e di aver impostato correttamente i certificati quando hai installato il proxy Apigee. Dovresti essere in grado di chiamare l'URI direttamente con una chiamata GET e ricevere una risposta JSON valida.Esempio:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Altri messaggi di Envoy potrebbero avere il seguente aspetto:
- "I segmenti di pubblico in Jwt non sono consentiti"
- "L'emittente Jwt non è configurato"
Questi derivano dai requisiti della tua configurazione Envoy che potresti dover modificare.
Ispeziona un token
Puoi utilizzare l'interfaccia a riga di comando per esaminare il token. Esempio
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
o
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Debug
Vedi Errori relativi a una chiave API valida.Logging
Puoi regolare il livello di logging sul servizio $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Tutto il logging viene inviato a stdout e stderr.
Elemento Obbligatorie Descrizione -l, --log-level Livelli validi: debug, informazioni, avviso, errore. Regola il livello di logging. Predefinito: info -j, --json-log Emette l'output di log come record JSON. Envoy fornisce il logging. Per ulteriori informazioni, consulta i seguenti link alla documentazione Envoy:
Utilizzo di un proxy di rete
Un proxy HTTP può essere inserito utilizzando le variabili di ambiente HTTP_PROXY e HTTPS_PROXY nell'ambiente del programma binario apigee-remote-service-envoy. Quando le utilizzi, la variabile di ambiente NO_PROXY può essere utilizzata anche per escludere host specifici dall'invio tramite il proxy.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Ricorda che il proxy deve essere raggiungibile da apigee-remote-service-envoy.
Informazioni su metriche e analisi
Un endpoint delle metriche di Prometheus è disponibile all'indirizzo
:5001/metrics
. Puoi configurare questo numero di porta. Vedi File di configurazione.Analisi di Envoy
I seguenti link forniscono informazioni su come ottenere i dati di analisi proxy di Envoy:
Analisi Istio
I seguenti link forniscono informazioni su come ottenere i dati di analisi proxy di Envoy:
Analisi Apigee
Apigee Remote Service for Envoy invia statistiche delle richieste ad Apigee per l'elaborazione delle analisi. Apigee segnala queste richieste sotto il nome del prodotto API associato.
Per informazioni sull'analisi di Apigee, consulta la panoramica dei servizi di analisi.
Supporto per ambienti multi-tenant
Ora puoi abilitare l'adattatore per il servizio di più ambienti in un'organizzazione Apigee. Questa funzionalità consente di utilizzare un adattatore Apigee per Envoy associato a un'organizzazione Apigee per gestire più ambienti. Prima di questa modifica, un adattatore era sempre associato a un ambiente Apigee.
Per configurare il supporto di più ambienti, modifica il valore di
tenant:env_name
in*
nel fileconfig.yaml
. Ad esempio:- Apri il file
config.yaml
in un editor. - Modifica il valore di
tenant.env_name
in*
. Ad esempio:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://myorg-myenv.apigee.net/remote-service org_name: apigee-docs-hybrid-a env_name: * allow_unverified_ssl_cert: true analytics: collection_interval: 10s auth: jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
- Salva il file.
- Applica il file:
kubectl apply -f $CLI_HOME/config.yaml
Quando configuri la modalità multi-ambiente, devi anche configurare Envoy in modo che invii un valore di ambiente appropriato all'adattatore aggiungendo i seguenti metadati nella sezione
virtual_hosts:routes
del fileenvoy-config.yaml
. Ad esempio:- Genera il file
envoy-config.yaml
utilizzando l'interfaccia a riga di comando. Ad esempio:$CLI_HOME/apigee-remote-service-cli samples create \ -t envoy-1.16 -c ./config.yaml --out myconfigs
- Apri il file generato (il nome del file è
envoy-config.yaml
). - Aggiungi i seguenti metadati nella sezione
virtual_host
oroutes
del file:typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test
L'esempio seguente illustra la configurazione per un elemento
virtual_host
con più route definite, in cui ogni route invia il traffico a un ambiente specifico:filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress_http route_config: virtual_hosts: - name: default domains: "*" routes: - match: { prefix: /test } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test - match: { prefix: /prod } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: prod
- Ripeti l'ultimo passaggio per aggiungere altri ambienti in base alle esigenze.
- Salva il file e applicalo.
Configurazione di mTLS tra l'adattatore e il runtime Apigee
Puoi fornire certificati TLS lato client nella sezione
tenant
del fileconfig.yaml
dell'adattatore per utilizzare mTLS tra l'adattatore e il runtime Apigee. Questa modifica si applica a tutte le piattaforme Apigee supportate. Inoltre, abilita mTLS per l'analisi per la piattaforma Apigee Edge per il cloud privato. Ad esempio:tenant: tls: ca_file: path/ca.pem cert_file: path/cert.pem key_file: path/key.pem allow_unverified_ssl_cert: false
Nome | httpbin-app
|
Display Name | httpbin app
|
Developer | Seleziona lo sviluppatore che hai creato in precedenza o scegli quello che preferisci dall'elenco. |