Este tópico aborda o roteamento do caminho base. O roteamento de caminho base permite configurar e gerenciar como a Apigee híbrido roteia as chamadas de proxy da API para o ambiente correto.
Usar o roteamento de caminho base para gerenciar implantações de proxy
Como é possível mapear um host virtual único para vários ambientes em nuvem híbrida, é preciso especificar o caminho de proxy de base para qual ambiente.
Por exemplo, digamos que você queira mapear dois ambientes para o mesmo alias de host:
apitest.mydomain.net
. No arquivo de modificações, é possível criar a seguinte
configuração em que os ambientes dev1 e dev2 são
mapeados para esse host. Por exemplo:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: dev2 hostAlias: "apitest.mydomain.net" ...
Agora, digamos que você implante proxies nesses ambientes. Você implanta:
- Proxy foo1 com o caminho base /foo1 para dev1
- Proxy foo2 com o caminho base /foo2 para dev2
Suponha que um cliente chame esta API: https://apitest.mydomain.net/foo1
. Não há nada
nesse caminho (ou no cabeçalho do host gerado para a solicitação) que informa ao ambiente
híbrido para onde a chamada será encaminhada. O proxy foo1 está implantado
em dev1 ou dev2?
Com base apenas no URL da solicitação, não há como saber. Mapeie explicitamente cada um
desses caminhos base para um ou mais ambientes.
Para especificar a que ambiente uma chamada de proxy precisa ser roteada, adicione a
propriedade paths.uri.prefixes
à propriedade envs
no arquivo de modificações,
conforme mostrado no exemplo a seguir:
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 ...
Agora, quando uma chamada de API chega, como: https://apitest.mydomain.net/foo1
, o roteador
de entrada sabe para onde enviar. Ele sabe que o proxy /foo1
é implantado no ambiente dev1
e a chamada é encaminhada para o processador de mensagens dev1.
Se você enviar essa chamada, https://apitest.mydomain.net/foo2
, ela será encaminhada
para o MP do ambiente dev2
e assim por diante.
Em resumo, com a configuração paths.uri.prefixes
, você gerencia implantações de proxy
entre vários ambientes que compartilham o mesmo alias de host.
Prática recomendada: use o roteamento de caminho base quando quiser que vários ambientes compartilhem o mesmo alias de host. Com o roteamento de caminho base, você limita o número de proxies implantados em qualquer ambiente único. Para mais informações, consulte Limitar o número de implantações de proxy.
Adicionar um novo ambiente ao mesmo domínio
Nesta seção, explicamos como adicionar um novo ambiente a um domínio.
Nesse cenário, suponha que você tem um ambiente dev1
já implantado
no cluster. Nesta configuração de exemplo, somente proxies com o prefixo de caminho base
/foo1
são permitidos:
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
Para adicionar outro ambiente com o mesmo domínio, siga estas etapas:
- Crie um novo arquivo de modificação com a nova configuração de ambiente. Por exemplo, essa
configuração cria um ambiente chamado
dev2
. Nesse ambiente, apenas proxies com o sufixo de caminho/foo2
são permitidos: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
- Execute os seguintes comandos em qualquer ordem:
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
- Implante o proxy foo2 no ambiente dev2.
- Chame o proxy para testar a configuração.
curl https://apitest.mydomain.net/foo2
Adicionar um novo caminho base de proxy a um ambiente atual
Para adicionar um novo caminho base a um ambiente atual, basta adicionar uma entrada prefixes
para cada novo caminho base. Por exemplo, se você criar um novo proxy com o caminho base
/foo4 e quiser implantá-lo
no ambiente chamado dev2, siga estas etapas:
- Abra o arquivo de modificações que tem a definição do ambiente dev2.
- Adicione o caminho base
/foo4
ao 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
- Aplique o componente
runtime
ao cluster:apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- Chame o proxy para testar a configuração.
curl https://apitest.mydomain.net/foo4
Se uma chamada de API chega para
https://apitest.mydomain.net/foo4
, o híbrido sabe encaminhá-la para o ambientedev2
.