Configurar o roteamento do caminho base

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:

  1. 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
    
  2. Execute os seguintes comandos em qualquer ordem:
    1. apigeectl apply -f overrides/overrides-dev2.yaml -c udca
    2. apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
    3. apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  3. Implante o proxy foo2 no ambiente dev2.
  4. 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:

  1. Abra o arquivo de modificações que tem a definição do ambiente dev2.
  2. Adicione o caminho base /foo4 ao elemento paths.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
    
  3. Aplique o componente runtime ao cluster:
    apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  4. 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 ambiente dev2.