Este tópico aborda o encaminhamento do caminho base. O encaminhamento do caminho base permite-lhe configurar e gerir a forma como o Apigee Hybrid encaminha as chamadas de proxy da API para o ambiente correto.
Use o encaminhamento do caminho base para gerir implementações de proxy
Uma vez que pode mapear um único anfitrião virtual para vários ambientes no híbrido, precisa de uma forma de especificar que caminho base do proxy é mapeado para que ambiente.
Por exemplo, suponhamos que quer mapear dois ambientes para o mesmo alias de anfitrião:
apitest.mydomain.net
. No ficheiro de substituições, pode criar a seguinte configuração em que os ambientes dev1 e dev2 são mapeados para este anfitrião. Por exemplo:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: dev2 hostAlias: "apitest.mydomain.net" ...
Agora, suponhamos que implementa proxies nestes ambientes. Implementa:
- Encaminhar proxy de foo1 com o caminho base /foo1 para dev1
- Encaminhe o proxy foo2 com o caminho base /foo2 para dev2
Suponhamos que um cliente chama esta API: https://apitest.mydomain.net/foo1
. Tenha em atenção que não existe nada
neste caminho (ou no cabeçalho do anfitrião gerado para o pedido) que indique ao híbrido
para que ambiente encaminhar a chamada. O proxy foo1 está implementado
em dev1 ou dev2?
Com base apenas no URL do pedido, não é possível determinar. Tem de mapear explicitamente cada um destes caminhos base para um ou mais ambientes.
Para especificar para que ambiente uma chamada de proxy deve ser encaminhada, adicione a propriedade paths.uri.prefixes
à propriedade envs
no ficheiro de substituições, conforme mostrado no exemplo seguinte:
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 chega uma chamada API, como: https://apitest.mydomain.net/foo1
, o router de entrada sabe para onde a enviar. Sabe que o proxy /foo1 está implementado no ambiente dev1 e a chamada é encaminhada para o processador de mensagens de dev1.
Se enviar esta chamada, https://apitest.mydomain.net/foo2
, esta é igualmente encaminhada para o MP do ambiente dev2
e assim sucessivamente.
Em resumo, a configuração paths.uri.prefixes
permite-lhe gerir implementações de proxy
em vários ambientes que partilham o mesmo alias de anfitrião.
Prática recomendada: use o encaminhamento de caminho base quando quiser que vários ambientes partilhem o mesmo alias de anfitrião. O encaminhamento do caminho base permite-lhe limitar o número de proxies implementados a qualquer ambiente único. Para mais informações, consulte o artigo Limite o número de implementações de proxy.
Adicione um novo ambiente ao mesmo domínio
Esta secção explica como adicionar um novo ambiente a um domínio.
Neste cenário, partimos do princípio de que já tem um ambiente dev1
implementado no cluster. Nesta configuração de exemplo, apenas são permitidos proxies com o prefixo do caminho 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
Para adicionar outro ambiente que partilhe o mesmo domínio, siga estes passos:
- Crie um novo ficheiro de substituições com a nova configuração do ambiente. Por exemplo, esta configuração cria um ambiente denominado
dev2
. Neste ambiente, apenas são permitidos proxies com o sufixo do caminho/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
- Execute os seguintes comandos por 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
- Implemente o proxy foo2 no ambiente dev2.
- Ligue para o proxy para testar a configuração.
curl https://apitest.mydomain.net/foo2
Adicione um novo caminho base do proxy a um ambiente existente
Para adicionar um novo caminho base a um ambiente existente, basta adicionar uma entrada prefixes
para cada novo caminho base. Por exemplo, se criar um novo proxy com o caminho base /foo4 e quiser implementá-lo no ambiente denominado dev2, siga estes passos:
- Abra o ficheiro de substituiçõ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
- Ligue para o proxy para testar a configuração.
curl https://apitest.mydomain.net/foo4
Se for recebida uma chamada API para
https://apitest.mydomain.net/foo4
, o híbrido sabe que deve encaminhá-la para o ambientedev2
.