Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Este exemplo demonstra como usar o Apigee Adapter for Envoy instalando e executando o Envoy localmente e não num cluster do Kubernetes. Pode seguir o exemplo neste documento para instalações do Apigee e do Apigee Hybrid.
As chamadas de proxy da API passam pelo Envoy em execução como uma aplicação nativa. A Apigee fornece serviços de gestão de APIs, como a criação de produtos de API e apps para programadores. O Envoy comunica com o plano de gestão do Apigee através do serviço remoto do adaptador. O adaptador também envia dados de estatísticas para o Apigee, onde os pode ver no Apigee Analytics.
Pré-requisitos
Antes de começar: |
---|
|
|
|
Verifique a configuração do gcloud
- Verifique se a configuração do
gcloud
está definida para o projeto do Google Cloud associado à sua organização do Apigee.Para listar as definições atuais. Veja também gcloud config.
gcloud config list
Se necessário, defina o ID do projeto do Google Cloud correto com este comando:
gcloud config set project project-id
- Tem de ter a autenticação com o SDK do Google Cloud (gcloud) para o seu projeto do Google Cloud. Veja também
gcloud auth login.
gcloud auth login
Aprovisione o Apigee
Neste passo, vai usar a CLI de serviço remoto para aprovisionar recursos do Apigee Adapter for Envoy no Apigee. O comando de aprovisionamento implementa proxies de API usados para operações do adaptador do Apigee, configura um certificado no Apigee e gera credenciais que o serviço remoto vai usar para se ligar em segurança do seu sistema ao Apigee.
- Aceda ao diretório
$CLI_HOME
:cd $CLI_HOME
- (Opcional) Por predefinição, o adaptador procura credenciais da conta de serviço predefinidas no seu projeto do Google Cloud para ter autorização para enviar dados de estatísticas para o Apigee. Se não quiser usar as
credenciais da conta de serviço
predefinidas, pode criar uma conta de serviço e referenciar a respetiva chave no
comando de aprovisionamento. A conta de serviço tem de ter a função
apigee.analyticsAgent
. Para obter instruções, consulte o artigo Criar e gerir contas de serviço. - Crie as seguintes variáveis de ambiente. Estas variáveis vão ser usadas como parâmetros para o script de aprovisionamento:
export ORG=organization_name
export ENV=environment_name
export RUNTIME=host_alias_url
export NAMESPACE=hybrid_runtime_namespace
## Apigee hybrid onlyexport AX_SERVICE_ACCOUNT=analytics_service_account
## OptionalOnde:
Variável Descrição organization_name O nome da sua organização da Apigee. environment_name O nome de um ambiente na sua organização. host_alias_url - Para o Apigee Hybrid, um URL que inclui o
hostAlias
para um anfitrião virtual definido na sua configuração híbrida. - Para o Apigee, um nome de anfitrião do grupo de ambientes que inclui o ambiente. Pode encontrar grupos de ambientes na IU do Apigee em Administração > Ambientes > Grupos.
Nota: o URL tem de começar por
https://
. Por exemplo:https://apitest.mydomain.net
hybrid_runtime_namepace (Apenas para o Apigee Hybrid) O espaço de nomes no qual os componentes do tempo de execução do Hybrid são implementados. Nota: o espaço de nomes predefinido para uma implementação híbrida é
apigee
.analytics_service_account (Opcional) O caminho para um ficheiro JSON da chave da conta de serviço do Google Cloud que tenha a função Apigee Analytics Agent
. Para uma descrição detalhada deste parâmetro, consulte o artigo Comando Provision. - Para o Apigee Hybrid, um URL que inclui o
- Se não for proprietário do projeto do Google Cloud associado à organização do Apigee, certifique-se de que a sua conta de utilizador do Google Cloud inclui a função Administrador da organização do Apigee ou as funções Criador de APIs e Implementador. Consulte o artigo Conceder, alterar e revogar o acesso a recursos.
- Obtenha uma chave de acesso:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- Aprovisione o proxy de serviço remoto no Apigee. O resultado do comando é redirecionado para um ficheiro de configuração
que vai usar num passo posterior.
Se não estiver a fazer a atualização, use este comando para aprovisionar o Apigee. Se estiver a fazer o aprovisionamento para o Apigee hybrid, certifique-se de que adiciona o parâmetro
--namespace $NAMESPACE
:./apigee-remote-service-cli provision --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
Se estiver a fazer uma atualização, use este comando com a flag
--force-proxy-install
para aprovisionar o Apigee. Se estiver a fazer o aprovisionamento para o Apigee hybrid, certifique-se de que adiciona o parâmetro--namespace $NAMESPACE
:./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
- Verifique o conteúdo do ficheiro
config.yaml
. Deverá ter um aspeto semelhante a este:# Configuration for apigee-remote-service-envoy (platform: Google Cloud) # generated by apigee-remote-service-cli provision on 2020-11-20 02:49:28 apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://apitest.mydomain.com/remote-service org_name: my-org env_name: test analytics: collection_interval: 10s auth: jwt_provider_key: https://apitest.mydomain.com/remote-service/token --- apiVersion: v1 kind: Secret metadata: name: my-org-new-test-policy-secret namespace: apigee type: Opaque data: remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci... remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS... remote-service.properties: a2lkPTIwMjAtMDctMDZ... --- apiVersion: v1 kind: Secret metadata: name: my-org-new-test-analytics-secret namespace: apigee type: Opaque data: client_secret.json: ewogICJ0eXBlIjogInNlcnZ... --- apiVersion: v1 kind: ServiceAccount metadata: name: apigee-remote-service-envoy namespace: apigee
- Se estiver a usar o Apigee Hybrid, aplique a configuração do serviço (o ficheiro gerado pelo comando de aprovisionamento) ao cluster onde o Apigee Hybrid foi instalado no Passo 1: crie um cluster.
Execução apigee-remote-service-envoy
Pode executar o serviço remoto como um ficheiro binário nativo ou no Docker.
Executar o serviço de forma nativa
Execute o ficheiro binário do serviço com o ficheiro de configuração gerado pelo comando de aprovisionamento:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml
Execute o serviço no Docker
As imagens do Docker são publicadas com etiquetas de lançamento. Para esta instalação, use a versão mais recente. Existem três variações de imagens à sua escolha:
Variação | Imagem |
---|---|
Google distroless | google/apigee-envoy-adapter:v2.0.3 |
Ubuntu | google/apigee-envoy-adapter:v2.0.3-ubuntu |
Ubuntu com Boring Crypto | google/apigee-envoy-adapter:v2.0.3-boring |
Por exemplo, para executar a imagem de teste com o seu config.yaml
local disponível como /config.yaml
através de uma montagem de volume, use este comando:
docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.3
Crie um ficheiro de configuração do Envoy de exemplo
Gere um ficheiro de configuração do Envoy de exemplo através da CLI:
- Certifique-se de que está no diretório
$ENVOY_HOME
. - Liste os modelos de configuração disponíveis:
$CLI_HOME/apigee-remote-service-cli samples templates
Execute o comando samples. Para TEMPLATE, substitua um dos modelos do Envoy suportados:
$CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml
O comando cria o ficheiro
./samples/envoy-config.yaml
.
Para mais informações, consulte o artigo Comando de amostras.
Instale e execute o proxy Envoy
Siga estes passos para instalar e executar o proxy Envoy:
- Transfira um binário do Envoy ou crie-o.
- Execute o Envoy com um ficheiro de configuração de exemplo que gerou anteriormente para o serviço
httpbin.org
:envoy -c ./samples/envoy-config.yaml
Teste a instalação
- Configure um produto de API e obtenha uma chave da API, conforme explicado em Como obter uma chave da API.
- Chame o serviço
httpbin
sem uma chave da API:curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
O serviço está agora a ser gerido pela Apigee e, como não forneceu uma chave de API, a chamada devolve o seguinte erro.
curl -i http://localhost:8080/headers -H "HOST:httpbin.org" HTTP/1.1 403 Forbidden date: Tue, 12 May 2020 17:51:36 GMT server: envoy content-length: 0 x-envoy-upstream-service-time: 11
- Faça uma chamada API com a chave:
export APIKEY=YOUR_API_KEY
curl -i http://localhost:8080/headers -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"
A chamada deve ter êxito com um estado 200 e devolver uma lista de cabeçalhos na resposta. Por exemplo:
curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS" HTTP/1.1 200 OK server: envoy date: Tue, 12 May 2020 17:55:34 GMT content-type: application/json content-length: 828 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 301 { "headers": { "Accept": "*/*", "Content-Length": "0", "Host": "httpbin.default.svc.cluster.local", "User-Agent": "curl/7.70.0-DEV", "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS", "X-Apigee-Accesstoken": "", "X-Apigee-Api": "httpbin.default.svc.cluster.local", "X-Apigee-Apiproducts": "httpbin", "X-Apigee-Application": "httpbin", "X-Apigee-Authorized": "true", "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS", "X-Apigee-Developeremail": "user@mydomain.com", "X-Apigee-Environment": "test", "X-Apigee-Organization": "my-org", "X-Apigee-Scope": "", "X-B3-Parentspanid": "1476f9a2329bbdfa", "X-B3-Sampled": "0", "X-B3-Spanid": "1ad5c19bfb4bc96f", "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa" } }
Desinstale o adaptador do Apigee Envoy
Para remover uma instalação do adaptador do Apigee Envoy:
- Onde quer que tenha optado por executar o adaptador do Envoy (nativamente ou no Docker), remova-o.
- Elimine os proxies remote-service e remote-token dos seus ambientes do Apigee. Consulte o artigo Eliminar um proxy de API.
- Remova todos os produtos API ou operações não usados pelos exemplos de utilização do adaptador Envoy. Consulte o artigo Eliminar um produto de API.
Passos seguintes
O tráfego da API para o serviço httpbin
é agora gerido pela Apigee. Seguem-se
algumas funcionalidades que pode explorar e experimentar:
- Aceda ao Apigee Analytics na IU do Edge. Aceda a Analisar > Métricas da API > Desempenho do proxy da API.
- Explore as opções da CLI na referência.