Questo argomento illustra il routing del percorso di 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.
Utilizzare il routing del percorso base per gestire i deployment dei proxy
Poiché in modalità ibrida puoi mappare un singolo host virtuale a più ambienti, devi avere un modo per specificare a quale ambiente viene mappato il percorso base del proxy.
Ad esempio, supponiamo che tu voglia mappare due ambienti allo stesso alias host:
apitest.mydomain.net
. Nel file degli override, puoi creare la seguente configurazione in cui gli ambienti dev1 e dev2 sono entrambi mappati a questo host. Ad esempio:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: dev2 hostAlias: "apitest.mydomain.net" ...
Ora, supponiamo che tu esegua il deployment dei proxy in questi ambienti. Esegui il deployment di:
- Proxy foo1 con percorso di base da /foo1 a dev1
- Proxy foo2 con percorso di base da /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 c'è nulla che indichi a Hybrid a quale ambiente inoltrare la chiamata. È stato eseguito il deployment del proxy foo1?
in dev1 o dev2?
Solo in base all'URL della richiesta, non c'è modo di saperlo. Devi mappare esplicitamente ogni
di questi percorsi di base verso uno o più ambienti.
Per specificare a quale ambiente deve essere instradata una chiamata proxy, aggiungi il metodo
paths.uri.prefixes
alla proprietà envs
nel file degli 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 è dipiegato nell'ambiente dev1 e che la chiamata viene indirizzata all'elaboratore dei messaggi di dev1.
Se invii questa chiamata, https://apitest.mydomain.net/foo2
, viene inoltrata anche al MP dell'ambiente dev2
e così via.
In sintesi, la configurazione paths.uri.prefixes
consente di gestire i deployment dei proxy tra 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 base ti consente di limitare il numero di proxy di cui è stato eseguito il deployment in un singolo ambiente. Per ulteriori informazioni, consulta Limitare il numero di implementazioni dei proxy.
Aggiungi un nuovo ambiente allo stesso dominio
Questa sezione spiega come aggiungere un nuovo ambiente a un dominio.
In questo scenario, supponiamo che tu abbia già eseguito il deployment di un ambiente dev1
nel cluster. In questa configurazione di esempio, sono consentiti solo i proxy con il prefisso del percorso di base
/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 denominato
dev2
. In questo ambiente sono consentiti solo i 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
Aggiungi un nuovo percorso di base proxy a un ambiente esistente
Per aggiungere un nuovo percorso base a un ambiente esistente, è sufficiente aggiungere una voce prefixes
per ogni nuovo percorso base. Ad esempio, se crei un nuovo proxy con il percorso di base
/foo4 e vuoi eseguirlo nell'ambiente dev2, segui questi passaggi:
- Apri il file degli override che contiene la definizione dell'ambiente dev2.
- Aggiungi il percorso di base
/foo4
all'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
runtime
al 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 come indirizzarla all'ambientedev2
.