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

Вы просматриваете документацию по 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 для каждого прокси-сервера можно использовать только один размещенный целевой сервис.
  • В платных аккаунтах Apigee Edge автомасштабирование выполняется автоматически на основе частоты запросов, задержек ответов и других показателей приложения для каждого прокси.
  • Приложения Hosted Targets, развернутые в платных и пробных версиях Apigee Edge, масштабируются до нуля в периоды неактивности. В этом случае вы можете заметить, что ответы будут приходить с небольшой задержкой. Дополнительная информация: Известные проблемы

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

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

Синтаксис файла манифеста

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 (версия 10.x). Другие варианты можно найти в официальном репозитории Docker для Node.
  • command – (необязательно) позволяет указать команду, отличную от команды по умолчанию, используемой для запуска приложения. По умолчанию: Node.js=npm
  • args – (необязательный параметр) массив аргументов командной строки, которые будут переданы приложению (указывается в стандартном синтаксисе массива YAML). Обычно они добавляются в команду по умолчанию. По умолчанию задано значение start. Например, по умолчанию приложению Node.js будет передана команда npm start.
  • env – (необязательно) массив переменных среды (пары "имя/значение"), которые нужно задать в среде выполнения размещенных целевых объектов. Эти переменные доступны в развернутом приложении Hosted Targets.
    • name – название переменной.
    • value | valueRef – у вас есть два варианта. Вы можете задать литеральное значение или указать значение, хранящееся в карте пар "ключ-значение". Карта пар "ключ-значение" должна уже существовать в вашей среде Edge. Подробнее о работе с картами ключей-значений…
      • Если вы используете value, то должны указать переменную name и литерал value. Пример:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • Если вы используете valueRef, то должны указать название карты "ключ-значение" (KVM), которую вы ранее создали в Edge, и ключ. Пример:
        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


    Пример, в котором указана ссылка на карту пар "ключ-значение":

    Подробнее о файле манифеста…

    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. Нажмите Clone or download (Клонировать или скачать) и перенесите репозиторий в локальную систему удобным для вас способом.
    3. Перейдите в каталог <your install dir>/api-platform-samples/doc-samples/hosted-targets с помощью команды cd.
    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 .

    Как проверить развертывание

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

    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 будет выполняться немного дольше, чем обычно, поскольку инфраструктура запускает экземпляры для обработки запроса.
    • Ошибка развертывания. Если при развертывании прокси-сервера Hosted Targets возникает ошибка, попробуйте развернуть прокси-сервер ещё раз. В некоторых случаях время ожидания развертывания может истечь, и при повторном развертывании проблема будет устранена.