Configure o encaminhamento do caminho base

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:

  1. 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
    
  2. Execute os seguintes comandos por 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. Implemente o proxy foo2 no ambiente dev2.
  4. 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:

  1. Abra o ficheiro de substituiçõ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. 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 ambiente dev2.