Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Limites das variáveis de ambiente
Os destinos hospedados limita o tamanho e o número de variáveis de ambiente que podem ser definidas no ambiente de execução dos destinos hospedados.
- 1.000: tamanho máximo de uma única variável de ambiente.
- 100: número máximo de variáveis de ambiente que podem ser definidas.
Para saber mais sobre a configuração de variáveis de ambiente, consulte Arquivo de manifesto.
Variáveis de ambiente definidas no ambiente de execução do aplicativo
Quando você implanta um aplicativo de destinos hospedados, as seguintes variáveis de ambiente são definidas e ficam disponíveis para seu aplicativo no ambiente de execução:
APIGEE_ENVIRONMENT
: o ambiente em que o proxy de destino hospedado é implantado.APIGEE_ORGANIZATION
: organização onde o proxy de destino hospedado é implantado.PORT
: a porta em que o aplicativo de destino hospedado precisa detectar.
Alocação de recursos do sistema
Cada instância de destinos hospedados recebe os seguintes recursos:
- 256 MB de memória
- CPU de 1,2 GHz
Escalonamento
Nesta seção, descrevemos como os aplicativos de Destinos hospedados são escalonados, dependendo do tipo de conta do Edge que você tem.- Uma versão de teste do Apigee Edge está limitada a uma instância de destinos hospedados por proxy.
- As contas pagas do Apigee Edge recebem escalonamento automático com base na taxa de solicitação, nas latências de resposta
e em outras métricas de aplicativos por proxy.
- Os apps de destinos hospedados implantados em versões pagas e de teste do Apigee Edge escalonam para zero em períodos de inatividade. Nesse caso, você vai notar tempos de resposta mais lentos por um breve período. Consulte também Problemas conhecidos
O arquivo de manifesto
Para coletar informações do ambiente de execução para criar e implantar o aplicativo hospedado, o Edge procura um arquivo de manifesto chamado app.yaml no diretório resources/hosting. Esse arquivo contém informações necessárias para criar e implantar o aplicativo Hosted Destinations.
Sintaxe do arquivo Manfiest
runtime: node runtimeVersion: version_number command: command_name args: argument_array env: - name: variable_name value: literal_value - name: variable_name valueRef: name: kvm_name key: kvm_value
Elementos do arquivo de manifesto
Um arquivo de manifesto app.yaml inclui os seguintes elementos:
- runtime: (obrigatório) especifica o tipo de aplicativo que você está implantando.
É necessário especificar
node
. - runtimeVersion (opcional): versão do ambiente de execução usada pelo aplicativo. Padrão: Node.js LTS (v10.x). Consulte o repositório oficial do Docker para Node e veja outras opções.
- command: (opcional) permite especificar um comando para ser executado diferente do
comando padrão usado para iniciar seu aplicativo. Padrão:
Node.js=npm
- args (opcional): matriz de argumentos de linha de comando a serem passados para o aplicativo (especificado na sintaxe de matriz YAML padrão). Normalmente, eles são adicionados ao comando padrão.
O padrão é start. Por exemplo, o aplicativo Node.js receberá por padrão o comando
npm start
. - env: (opcional) uma matriz de variáveis de ambiente (pares de nome/valor) a serem definidas no ambiente de execução de destinos hospedados. Essas variáveis estão disponíveis para o app de destinos hospedados implantado.
- name: o nome da variável.
- value | valueRef: você tem duas opções. É possível definir um valor literal
ou fazer referência a um valor armazenado em um mapa de chave-valor. O mapa de chave-valor já
precisa existir no ambiente de borda. Consulte Como trabalhar com mapas de chave-valor.
- Se você usar value, precisará especificar uma variável
name
e umvalue
literal. Exemplo:runtime: node env: - name: NODE_ENV value: production
- Se você usar valueRef, será necessário fornecer o nome de um mapa de chave-valor (KVM) criado anteriormente no Edge e uma key.
Por exemplo:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- Se você usar value, precisará especificar uma variável
Exemplos de arquivos de manifesto
Esta seção contém exemplos de arquivos de manifesto para aplicativos
Node.js. Um arquivo de manifesto é necessário para implantar um app de destinos hospedados e precisa estar localizado
no diretório apiproxy/resources/hosted
, e o nome do arquivo precisa ser app.yaml
.
Veja a seguir exemplos de arquivos app.yaml
(manifesto) para aplicativos Node.js.
Exemplo que especifica uma variável de ambiente literal:
runtime: node env: - name: NODE_ENV value: production
Exemplo com um comando "start", argumentos de linha de comando e uma variável de ambiente.
runtime: node command: ./node_modules/pm2/bin/pm2 env: - name: NODE_ENV value: production args: - app.js
Exemplo que especifica uma referência de mapa de chave-valor (KVM):
Para saber mais sobre o acesso ao KVM, consulte O arquivo de manifesto.
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
Exemplos de aplicativos hospedados de destinos no GitHub
A Apigee fornece proxies de amostra no GitHub com aplicativos de destinos hospedados escritos em Node.js. Clone este repositório e siga as instruções README para implantar qualquer um dos proxies.
Pré-requisitos
Para implantar as amostras, é preciso ter duas ferramentas instaladas no sistema:
- apigeetool: uma ferramenta de linha de comando para implantar proxies do Edge.
- get_token: ferramenta de linha de comando para receber um token de autorização exigido pelo apigeetool.
Para testar amostras localmente, você também precisará ter o Node.js instalado.
Como receber o repositório de amostra
- Em um navegador, acesse https://github.com/apigee/api-platform-samples.
- Clique em Clonar ou fazer o download e extraia o repositório para seu sistema local usando seu método preferido.
- De cd para <your install dir>/api-platform-samples/doc-samples/hosting-targets
- Depois de fazer o download do repositório, use cd para qualquer um dos diretórios de amostra e siga as instruções README para implantar um proxy de exemplo no Edge. O comando de implantação é mostrado abaixo. Basta substituir os parâmetros indicados pelos da sua conta da Apigee:
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
Exemplo: como executar um app de exemplo
Clone o repositório de amostras
cd ~/myhome
git clone https://github.com/apigee/api-platform-samples.git
cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
cd node-hosted-hello
Teste o aplicativo localmente
É preciso ter o Node.js instalado para fazer esse teste local.
PORT=8081 node apiproxy/resources/hosted/index.js
curl http://localhost:8081
Exemplo de saída:
{"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}
Implante o proxy
get_token && apigeetool deployproxy \ -o myorg \ -e test \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api node-hosted-hello \ --directory .
Teste a implantação
A implantação pode levar alguns minutos para ser concluída. Se você receber um erro de implantação, execute o comando de implantação novamente.
curl http://myorg-test.apigee.net/node-hosted-hello
Exemplo de saída:
{"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"
Problemas conhecidos
- Latências de rede: agora que o aplicativo Node.js não é mais executado na JVM do MP, há um salto de rede entre o MP e a implantação. Isso tem um custo, mas os comparativos iniciais mostram que está dentro de um valor razoável
- Respostas lentas da API: a infraestrutura que executa os aplicativos é escalonada automaticamente conforme a necessidade. Isso significa que o aplicativo pode reduzir a zero instância e, se esse for o caso, a próxima solicitação de API demorará um pouco mais do que as solicitações de API normais, já que a infraestrutura está ativando as instâncias para processar as solicitações.
- Erro de implantação: se você receber um erro de implantação ao implantar um proxy de Destinos hospedados, tente reimplantá-lo. Em alguns casos, a implantação pode expirar, e, se você fizer isso, o problema será resolvido sozinho.