Referencia de Destinos alojados

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Límites de variables de entorno

Destinos alojados limita el tamaño y la cantidad de variables de entorno que puedes configurar en el entorno de ejecución de Destinos alojados.

  • 1,000: longitud máxima de una sola variable de entorno
  • 100: Cantidad máxima de variables de entorno que puedes configurar.

Para obtener información sobre cómo configurar variables de entorno, consulta El archivo de manifiesto.

Variables de entorno configuradas en el entorno de ejecución de la aplicación

Cuando implementas una aplicación de Destinos alojados, se configuran las siguientes variables de entorno y están disponibles para tu aplicación en el entorno de ejecución:

  • APIGEE_ENVIRONMENT: Es el entorno en el que se implementa el proxy de destino alojado.
  • APIGEE_ORGANIZATION: Es la organización en la que se implementa el proxy de destino alojado.
  • PORT: Es el puerto en el que debe escuchar la aplicación de destino alojada.

Asignación de recursos del sistema

Cada instancia de Destinos alojados recibe los siguientes recursos:

  • 256 MB de memoria
  • CPU de 1.2 GHz

Escalamiento

En esta sección, se describe cómo se escalan las aplicaciones de Destinos alojados según el tipo de cuenta de Edge que tengas.
  • Una versión de prueba de Apigee Edge está limitada a una instancia de Hosted Targets por proxy.
  • Las cuentas pagadas de Apigee Edge reciben el ajuste de escala automático según el porcentaje de solicitudes, las latencias de respuesta y otras métricas de la aplicación por proxy.
  • Las apps de Hosted Targets implementadas en versiones pagadas y de prueba de Apigee Edge escalan a cero en períodos de inactividad. En este caso, es posible que notes tiempos de respuesta más lentos durante un período breve. Consulta también Problemas conocidos

El archivo de manifiesto

Para recopilar información del entorno de ejecución a fin de compilar y, luego, implementar la aplicación alojada, Edge busca un archivo de manifiesto llamado app.yaml en el directorio resources/generated. Este archivo contiene la información necesaria para compilar y, luego, implementar la aplicación Hosted Targets.

Sintaxis del archivo de 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 del archivo de manifiesto

Un archivo de manifiesto app.yaml incluye estos elementos:

  • runtime (obligatorio): Especifica el tipo de aplicación que implementas. Debes especificar node.
  • runtimeVersion: Es la versión del entorno de ejecución que usa tu aplicación (opcional). Valor predeterminado: Node.js LTS (v10.x). Consulta el repositorio oficial de Docker para Node a fin de obtener otras opciones.
  • command: Te permite especificar un comando distinto del predeterminado que se usa para iniciar la aplicación (opcional). Predeterminada: Node.js=npm
  • args - (Opcional) Es un array de argumentos de línea de comandos para pasar a la aplicación (especificado en la sintaxis de array YAML estándar). Por lo general, se agregan al comando predeterminado. El valor predeterminado es start. Por ejemplo, de forma predeterminada, a la app de Node.js se le pasará el comando npm start.
  • env: Es un array de variables de entorno (pares nombre/valor) que se configurará en el entorno de ejecución de Destinos alojados (opcional). Estas variables están disponibles para la app de Hosted Targets implementada.
    • name: Es el nombre de la variable.
    • value | valueRef: Tienes dos opciones. Puedes establecer un valor literal o hacer referencia a un valor almacenado en un mapa de pares clave-valor. El mapa de par clave-valor ya debe existir en tu entorno de Edge. Consulta Cómo trabajar con mapas de par clave-valor.
      • Si usas value, debes especificar una variable name y un value literal. Por ejemplo:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • Si usas valueRef, debes proporcionar el nombre de un mapa de par clave-valor (KVM) que creaste anteriormente en Edge y una clave. Por ejemplo:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    Ejemplos de archivos de manifiesto

    En esta sección, se incluyen archivos de manifiesto de ejemplo para aplicaciones de Node.js. Se requiere un archivo de manifiesto para implementar una app de Destinos alojados, debe estar ubicado en el directorio apiproxy/resources/hosted y el nombre del archivo debe ser app.yaml.

    A continuación, se muestran archivos app.yaml (manifiesto) de ejemplo para apps de Node.js.

    Ejemplo en el que se especifica una variable de entorno literal:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    Ejemplo con un comando de inicio, argumentos de la línea de comandos y una variable de entorno.

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    Ejemplo en el que se especifica una referencia de mapa de par clave-valor (KVM):

    Para obtener más información sobre el acceso a KVM, consulta El archivo de manifiesto.

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    Aplicaciones de muestra de Hosted Targets en GitHub

    Apigee proporciona proxies de muestra en GitHub con aplicaciones de destinos alojados escritas en Node.js. Puedes clonar este repositorio y seguir las instrucciones del archivo README para implementar cualquiera de los proxies.

    Requisitos previos

    Para implementar las muestras, debes tener dos herramientas instaladas en tu sistema:

    • apigeetool: Es una herramienta de línea de comandos para implementar proxies perimetrales.
    • get_token: Es una herramienta de línea de comandos para obtener un token de autorización que requiere Apigeetool.

    Si quieres probar las muestras de forma local, también debes tener instalado Node.js.

    Obtén el repositorio de muestra

    1. En un navegador, ve a https://github.com/apigee/api-platform-samples.
    2. Haz clic en Clonar o descargar y extraer el repositorio a tu sistema local con el método que prefieras.
    3. cd para <el directorio de instalación>/api-platform-samples/doc-samples/generated-targets
    4. Una vez que se descargue el repositorio, puedes cambiar a cualquiera de los directorios de muestra y seguir las instrucciones README para implementar un proxy de muestra en Edge. A continuación, se muestra el comando de implementación. Solo reemplaza los parámetros indicados por los de tu cuenta de 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 .

    Ejemplo: Ejecución de una app de ejemplo

    Clona el repositorio de muestras

    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

    Prueba la aplicación de forma local

    Debes tener Node.js instalado para realizar esta prueba local.

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    Resultado de ejemplo:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    Implementa el proxy

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    Prueba la implementación

    La implementación puede tardar unos minutos en completarse. Si se produce un error de implementación, vuelve a ejecutar el comando de implementación.

    curl http://myorg-test.apigee.net/node-hosted-hello

    Resultado de ejemplo:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    Problemas conocidos

    • Latencias de red: Ahora que la aplicación de Node.js ya no se ejecuta en la JVM del MP, ahora hay un salto de red entre el MP y la implementación. Por supuesto, esto tiene un costo, pero las comparativas iniciales muestran que está dentro de un importe razonable.
    • Respuestas lentas de la API: La infraestructura en la que se ejecutan las aplicaciones se escala de forma automática según las necesidades. Esto significa que tu aplicación puede reducir la escala verticalmente a cero instancias y, si ese es el caso, la siguiente solicitud a la API tardará un poco más que las solicitudes típicas a la API, ya que la infraestructura inicia las instancias para procesar las solicitudes.
    • Error de implementación: Si recibes un error de implementación cuando implementas un proxy de destino alojado, intenta volver a implementar el proxy. En algunos casos, es posible que se agote el tiempo de espera de la implementación y, si vuelves a realizarla, el problema se resolverá solo.