Questo argomento tratta del routing del percorso base. Il routing del percorso di base ti consente di configurare e gestire il modo in cui Apigee hybrid indirizza le chiamate proxy API all'ambiente corretto.
Utilizza il routing del percorso base per gestire i deployment dei proxy
Poiché puoi mappare un singolo host virtuale a più ambienti in un ambiente ibrido, devi specificare quale percorso di base del proxy viene mappato a quale ambiente.
Ad esempio, supponiamo di voler mappare due ambienti allo stesso alias host:
apitest.mydomain.net. Nel file di override, puoi creare la seguente configurazione in cui gli ambienti dev1 e dev2 vengono entrambi mappati a questo host. Ad esempio:
envs:
- name: dev1
hostAlias: "apitest.mydomain.net"
...
- name: dev2
hostAlias: "apitest.mydomain.net"
...
Supponiamo ora di eseguire il deployment dei proxy in questi ambienti. Esegui il deployment:
- Proxy foo1 con percorso di base /foo1 a dev1
- Proxy foo2 con percorso di base /foo2 a dev2
Supponiamo che un client chiami questa API: https://apitest.mydomain.net/foo1. Tieni presente che in questo percorso (o nell'intestazione host generata per la richiesta) non è presente nulla che indichi a Hybrid a quale ambiente indirizzare la chiamata. Il proxy foo1 è stato implementato
in dev1 o dev2?
In base al solo URL della richiesta, non è possibile stabilirlo. Devi mappare esplicitamente ciascuno
di questi percorsi di base a uno o più ambienti.
Per specificare a quale ambiente deve essere indirizzata una chiamata proxy, aggiungi la proprietà
paths.uri.prefixes alla proprietà envs nel file di override,
come mostrato nell'esempio seguente:
gcpProjectID: example
k8sClusterName: apigee-hybrid
# Apigee org name.
org: my-org
envs:
# Apigee environment name.
- name: dev1
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo1
- name: dev2
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo2
...
Ora, quando arriva una chiamata API come: https://apitest.mydomain.net/foo1, il router
di ingresso sa dove inviarla. Sa che il proxy /foo1 è stato eseguito il deployment nell'ambiente dev1 e la chiamata viene indirizzata al processore di messaggi di dev1.
Se invii questa chiamata, https://apitest.mydomain.net/foo2, viene indirizzata
al MP dell'ambiente dev2 e così via.
In sintesi, la configurazione paths.uri.prefixes ti consente di gestire le implementazioni proxy
in più ambienti che condividono lo stesso alias host.
Best practice: utilizza il routing del percorso di base quando vuoi che più ambienti condividano lo stesso alias host. Il routing del percorso di base consente di limitare il numero di proxy di cui è stato eseguito il deployment in un singolo ambiente. Per ulteriori informazioni, vedi Limitare il numero di deployment proxy.
Aggiungi un nuovo ambiente allo stesso dominio
Questa sezione spiega come aggiungere un nuovo ambiente a un dominio.
In questo scenario, supponi di avere un ambiente dev1 già di cui è stato eseguito il deployment nel cluster. In questa configurazione di esempio, sono consentiti solo i proxy con il prefisso basepath
/foo1:
gcpProjectID: example
k8sClusterName: apigee-hybrid
# Apigee org name.
org: my-org
envs:
# Apigee environment name.
- name: dev1
hostAlias: "apitest.mydomain.net"
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
serviceAccountPaths:
synchronizer: ./service-accounts/example-apigee-synchronizer.json
udca: ./service-accounts/example-apigee-udca.json
paths:
uri:
prefixes:
- /foo1
mart:
hostAlias: "mart.apigee-hybrid-docs.net"
serviceAccountPath: ./service-accounts/example-apigee-mart.json
sslCertPath: ./certs/fullchain.pem
sslKeyPath: ./certs/privkey.key
metrics:
serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
Per aggiungere un altro ambiente che condivide lo stesso dominio:
- Crea un nuovo file di override con la nuova configurazione dell'ambiente. Ad esempio, questa
configurazione crea un ambiente chiamato
dev2. In questo ambiente sono consentiti solo proxy con il suffisso del percorso/foo2:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json - Esegui i seguenti comandi in qualsiasi ordine:
apigeectl apply -f overrides/overrides-dev2.yaml -c udca
apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- Esegui il deployment del proxy foo2 nell'ambiente dev2.
- Chiama il proxy per testare la configurazione.
curl https://apitest.mydomain.net/foo2
Aggiungere un nuovo percorso base proxy a un ambiente esistente
Per aggiungere un nuovo percorso di base a un ambiente esistente, aggiungi semplicemente una voce prefixes
per ogni nuovo percorso di base. Ad esempio, se crei un nuovo proxy con il percorso base
/foo4 e vuoi eseguirne il deployment
nell'ambiente denominato dev2, segui questi passaggi:
- Apri il file di override che contiene la definizione dell'ambiente dev2.
- Aggiungi il percorso di base
/foo4all'elementopaths.uri.prefixes:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 - /foo4 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json - Applica il componente
runtimeal cluster:apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- Chiama il proxy per testare la configurazione.
curl https://apitest.mydomain.net/foo4
Se arriva una chiamata API per
https://apitest.mydomain.net/foo4, hybrid sa di indirizzarla all'ambientedev2.