Acerca dos ambientes

Um ambiente oferece um contexto isolado ou uma "sandbox" para executar proxies de API. Numa única organização, pode criar vários ambientes.

O código seguinte mostra um exemplo de configuração de substituição em que são definidos vários ambientes.

namespace: my-namespace
org: my-organization
...
envs:
  - name: test
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json

  - name: prod
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json
...

Suponhamos que um proxy com o caminho base /foo1 é implementado no ambiente test. Pode chamar o proxy da seguinte forma:

curl -k https://api.example.com/foo1

Quando esta chamada atinge a entrada, a entrada sabe que a deve enviar para o processador de mensagens associado ao ambiente test, que processa o pedido.

Da mesma forma, se foo1 também estiver implementado no ambiente prod, pode fazer um pedido de proxy da seguinte forma para o alias de anfitrião apiprod.mydomain.net:

curl -k https://apiprod.example.com/foo1

A chamada é encaminhada pela entrada para o MP associado a esse anfitrião.

Antipattern: implemente todos os seus proxies num ambiente híbrido.

Prática recomendada: crie vários ambientes e implemente um número limitado de proxies em cada um deles.

Limite o número de implementações de proxy

Para o híbrido, o facto de muitos ambientes poderem partilhar os mesmos anfitriões virtuais, conforme definido nos grupos de ambientes, significa que tem de pensar cuidadosamente na forma como gere as implementações de proxy em qualquer ambiente específico. No modo híbrido, a prática recomendada é criar vários ambientes e implementar um número limitado de proxies em cada um.

Quantos proxies deve implementar num ambiente? Não existe uma resposta definida para esta pergunta. No entanto, a tabela seguinte fornece orientações gerais sobre o motivo pelo qual é uma boa ideia limitar o número de proxies implementados em cada ambiente e o que tem de ter em atenção ao gerir implementações de proxies:

Problema a considerar Descrição
Tempo de arranque do processador de mensagens Existe uma correlação direta entre o tempo que um processador de mensagens (MP) demora a arrancar e o número de proxies implementados nesse MP. Num ambiente do Kubernetes com escala automática, um aumento no tempo de arranque pode ser um problema. Quanto mais proxies forem implementados no MP, mais tempo demorará a que esse MP seja apresentado se precisar de ser dimensionado ou recriado.
Desempenho de escalabilidade Se tiver vários proxies implementados num ambiente e um dos proxies receber muito tráfego, de modo que seja frequentemente dimensionado automaticamente, todos os proxies nesse ambiente são dimensionados com ele. O efeito no desempenho da expansão de vários proxies com um único proxy de tráfego elevado pode ser um problema.
Vizinho ruidoso Se tiver vários proxies implementados no mesmo ambiente e um proxy falhar, todos os proxies no ambiente são desativados enquanto os MPs são reiniciados. Ao limitar o número de proxies implementados num ambiente, minimiza o impacto de uma falha de um único proxy.

Grupos de ambientes e anfitriões virtuais

Os grupos de ambientes permitem-lhe agrupar ambientes. Os ambientes em cada grupo partilham os mesmos nomes de anfitrião. Pode agrupar ambientes por função, por endereço de nome de anfitrião, por região se estiver a implementar uma instalação híbrida multirregional ou por qualquer outra métrica que escolher.

Uma vez que o encaminhamento é gerido pela combinação dos nomes de anfitrião do grupo de ambientes, dos caminhos base do proxy de API e dos ambientes, cada anfitrião virtual só precisa de indicar o nome do grupo de ambientes e os certificados adequados.

O código seguinte mostra um exemplo de configuração de substituição em que são definidos vários virtualhosts. Tenha em atenção que o nome dos anfitriões virtuais tem de ser o nome dos grupos de ambientes.

gcp:
  region: us-central1
  projectID: hybrid-example

k8sCluster:
  name: apigee-hybrid
  region: us-central1

org: hybrid-example

instanceID: "my_hybrid_example"

virtualhosts:
  - name: group-1  # the name of an environment group
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key

virtualhosts:
  - name: group-2
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
...

Recursos adicionais