Referência de destinos hospedados

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 um value 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

    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

    1. Em um navegador, acesse https://github.com/apigee/api-platform-samples.
    2. Clique em Clonar ou fazer o download e extraia o repositório para seu sistema local usando seu método preferido.
    3. De cd para <your install dir>/api-platform-samples/doc-samples/hosting-targets
    4. 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:
    5. 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.