Справочник по размещенным целям

Вы просматриваете документацию по Apigee Edge.
См. документацию по Apigee X.

Пределы переменных среды

Hosted Targets ограничивает размер и количество переменных среды, которые можно задать в среде выполнения Hosted Targets.

  • 1000: максимальная длина одной переменной среды.
  • 100: максимальное количество переменных среды, которые вы можете установить.

Сведения о настройке переменных среды см. в разделе Файл манифеста .

Переменные среды, установленные во время выполнения приложения

При развертывании приложения Hosted Targets устанавливаются следующие переменные среды, которые доступны вашему приложению во время выполнения:

  • APIGEE_ENVIRONMENT — среда, в которой развернут целевой прокси Hosted Target.
  • APIGEE_ORGANIZATION — организация, в которой развернут целевой прокси Hosted Target.
  • PORT — порт, на котором должно прослушиваться размещенное целевое приложение.

Распределение системных ресурсов

Каждый экземпляр Hosted Targets получает следующие ресурсы:

  • 256 МБ памяти
  • ЦП 1,2 ГГц

Масштабирование

В этом разделе описывается масштабирование приложений Hosted Targets в зависимости от типа вашей учетной записи Edge.
  • Пробная версия Apigee Edge ограничена одним экземпляром Hosted Targets на прокси.
  • Платные учетные записи Apigee Edge получают автоматическое масштабирование на основе скорости запросов, задержек ответа и других показателей приложения для каждого прокси.
  • Приложения Hosted Targets, развернутые как в платной, так и в пробной версиях Apigee Edge, масштабируются до нуля в периоды бездействия. В этом случае вы можете заметить более медленное время отклика в течение короткого периода времени. См. также Известные проблемы

Файл манифеста

Чтобы собрать информацию о времени выполнения для создания и развертывания размещенного приложения, Edge ищет файл манифеста с именем app.yaml в каталоге resources/hosted . Этот файл содержит информацию, необходимую для создания и развертывания приложения Hosted Targets.

Синтаксис файла 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

Элементы файла манифеста

Файл манифеста app.yaml включает следующие элементы:

  • runtime — (обязательно) указывает тип развертываемого приложения. Вы должны указать node .
  • runtimeVersion — (необязательно) версия среды выполнения, которую использует ваше приложение. По умолчанию: Node.js LTS (v10.x). Обратитесь к официальному репозиторию Docker для Node за другими вариантами.
  • command — (необязательно) позволяет указать команду для запуска, отличную от команды по умолчанию, используемой для запуска вашего приложения. По умолчанию: Node.js=npm
  • args — (необязательно) массив аргументов командной строки для передачи приложению (указан в стандартном синтаксисе массива YAML). Обычно они добавляются к команде по умолчанию. По умолчанию старт . Например, по умолчанию приложению Node.js будет передана команда npm start .
  • env — (необязательно) массив переменных среды (пары имя/значение) для установки в среде выполнения Hosted Targets. Эти переменные доступны для вашего развернутого приложения Hosted Targets.
    • имя - имя переменной.
    • значение | valueRef — у вас есть два варианта. Вы можете установить буквальное значение или сослаться на значение, хранящееся в Key Value Map . Карта ключевых значений уже должна существовать в вашей среде Edge. См. Работа с картами ключ-значение
      • Если вы используете значение , то вы должны указать name переменной и буквальное value . Например:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • Если вы используете valueRef , вы должны указать имя Key Value Map (KVM), которое вы ранее создали в Edge, и key . Например:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    Примеры файлов манифеста

    Этот раздел содержит примеры файлов манифеста для приложений Node.js. Файл манифеста необходим для развертывания приложения Hosted Targets и должен находиться в каталоге apiproxy/resources/hosted , а имя файла должно быть app.yaml .

    Ниже приведены примеры файлов app.yaml (манифеста) для приложений Node.js.

    Пример, указывающий литеральную переменную среды:

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

    Пример с командой запуска, аргументами командной строки и переменной среды.

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


    Пример, в котором указана ссылка на карту значений ключей (KVM):

    Дополнительные сведения о доступе к KVM см. в файле манифеста .

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

    Примеры приложений Hosted Targets на GitHub

    Apigee предоставляет образцы прокси-серверов на GitHub с приложениями Hosted Targets, написанными на Node.js. Вы можете клонировать этот репозиторий и следовать инструкциям README, чтобы развернуть любой из прокси.

    Предпосылки

    Для развертывания примеров в вашей системе должны быть установлены два инструмента:

    • apigeetool — инструмент командной строки для развертывания прокси-серверов Edge.
    • get_token — инструмент командной строки для получения токена авторизации, необходимого для apigeetool.

    Если вы хотите тестировать образцы локально, у вас также должен быть установлен Node.js.

    Получение образца репо

    1. В браузере перейдите на https://github.com/apigee/api-platform-samples .
    2. Нажмите «Клонировать» или загрузите и перетащите репозиторий в локальную систему, используя предпочитаемый вами метод.
    3. cd в <ваш установочный каталог>/api-platform-samples/doc-samples/hosted-targets
    4. После загрузки репозитория вы можете перейти в любой из каталогов примеров и следовать инструкциям README, чтобы развернуть образец прокси-сервера в Edge. Команда развертывания показана ниже. Просто замените указанные параметры на параметры вашей учетной записи 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 .

    Пример: выполнение примера приложения

    Клонировать репозиторий примеров

    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

    Протестируйте приложение локально

    Для выполнения этого локального теста у вас должен быть установлен Node.js.

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

    Пример вывода:

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

    Развернуть прокси

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

    Протестируйте развертывание

    Развертывание может занять несколько минут. Если вы получили сообщение об ошибке развертывания, выполните команду развертывания еще раз.

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

    Пример вывода:

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

    Известные вопросы

    • Сетевые задержки . Теперь, когда приложение Node.js больше не работает в JVM MP, теперь между MP и развертыванием существует переход по сети. Конечно, за это приходится платить, но первоначальные тесты показывают, что они находятся в разумных пределах.
    • Медленные ответы API . Инфраструктура, на которой работают ваши приложения, автоматически масштабируется в зависимости от необходимости. Это означает, что ваше приложение может фактически масштабироваться до нуля экземпляров, и в этом случае следующий запрос API займет немного больше времени, чем обычные запросы API, поскольку инфраструктура запускает экземпляр(ы) для обработки запроса(ов).
    • Ошибка развертывания . Если вы получаете сообщение об ошибке развертывания при развертывании прокси-сервера Hosted Targets, попробуйте повторно развернуть прокси-сервер. В некоторых случаях время развертывания может истечь, и при повторном развертывании проблема разрешится сама собой.