Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Пределы переменных окружающей среды
Hosted Targets ограничивает размер и количество переменных среды, которые можно установить в среде выполнения Hosted Targets.
- 1000: Максимальная длина одной переменной среды.
- 100: Максимальное количество переменных среды, которые можно установить.
Для получения информации о настройке переменных среды см. файл манифеста .
Переменные среды, установленные в среде выполнения приложения.
При развертывании приложения, размещенного на целевых серверах, устанавливаются следующие переменные среды, которые становятся доступны вашему приложению во время выполнения:
-
APIGEE_ENVIRONMENT— среда, в которой развернут прокси-сервер Hosted Target. -
APIGEE_ORGANIZATION— Организация, в которой развернут прокси-сервер Hosted Target. -
PORT— порт, на котором целевое приложение должно прослушивать запросы.
Распределение системных ресурсов
Каждый экземпляр Hosted Targets получает следующие ресурсы:
- 256 МБ памяти
- Процессор 1,2 ГГц
Масштабирование
В этом разделе описывается, как масштабируются приложения Hosted Targets в зависимости от типа вашей учетной записи Edge.- Пробная версия Apigee Edge ограничена одним экземпляром Hosted Targets на каждый прокси-сервер.
- В платных аккаунтах Apigee Edge масштабирование происходит автоматически в зависимости от скорости запросов, задержки ответа и других показателей приложения для каждого прокси-сервера.
- Приложения, размещенные на платных и пробных версиях 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 .
- команда - (Необязательно) Позволяет указать команду для выполнения, отличную от команды по умолчанию, используемой для запуска вашего приложения. По умолчанию:
Node.js=npm - args - (Необязательно) Массив аргументов командной строки для передачи приложению (указывается в стандартном синтаксисе массивов YAML). Как правило, они добавляются к команде по умолчанию. По умолчанию используется команда `start` . Например, по умолчанию приложению Node.js будет передана команда
npm start. - env - (Необязательно) Массив переменных среды (пары имя/значение), которые необходимо установить в среде выполнения Hosted Targets. Эти переменные доступны для развернутого приложения Hosted Targets.
- name - Имя переменной.
- value | valueRef - У вас есть два варианта. Вы можете задать буквальное значение или сослаться на значение, хранящееся в карте «Ключ-значение» . Карта «Ключ-значение» должна уже существовать в вашей среде Edge. См. раздел «Работа с картами «Ключ-значение»».
- Если вы используете значение , то необходимо указать
nameпеременной и её литеральноеvalue. Например:runtime: node env: - name: NODE_ENV value: production - Если вы используете valueRef , то необходимо указать имя созданной ранее в Edge карты «ключ-значение » (KVM) и ключ . Например:
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- Если вы используете значение , то необходимо указать
- apigeetool — инструмент командной строки для развертывания прокси-серверов Edge.
- get_token — инструмент командной строки для получения токена авторизации, необходимого для работы apigeetool.
- В браузере перейдите по ссылке https://github.com/apigee/api-platform-samples .
- Нажмите «Клонировать» или «Загрузить» и загрузите репозиторий на свой локальный компьютер, используя удобный для вас способ.
- Перейдите в каталог <ваша директория установки>/api-platform-samples/doc-samples/hosted-targets
- После загрузки репозитория вы можете перейти в любую из директорий с примерами и следовать инструкциям в файле README для развертывания тестового прокси-сервера в Edge. Команда развертывания показана ниже. Просто замените указанные параметры параметрами вашей учетной записи Apigee:
- Задержки в сети — теперь, когда приложение Node.js больше не работает в JVM модуля управления, между модулем управления и развертыванием возникает сетевой переход. Конечно, это имеет свои последствия, но первоначальные тесты показывают, что задержка находится в пределах разумных значений.
- Медленные ответы API — инфраструктура, на которой работают ваши приложения, автоматически масштабируется в зависимости от потребностей. Это означает, что ваше приложение может фактически сократить количество экземпляров до нуля, и в этом случае следующий запрос API займет немного больше времени, чем обычные запросы API, поскольку инфраструктура запускает экземпляры для обработки запроса(ов).
- Ошибка развертывания — Если при развертывании прокси-сервера Hosted Targets возникает ошибка развертывания, попробуйте повторно развернуть прокси. В некоторых случаях развертывание может завершиться по истечении времени ожидания, и если вы выполните повторное развертывание, проблема решится сама собой.
Примеры файлов манифеста
В этом разделе приведены примеры файлов манифеста для приложений 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 см. файл Manifest .
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
Примеры приложений, размещенных на GitHub.
Apigee предоставляет примеры прокси-серверов на GitHub с приложениями Hosted Targets, написанными на Node.js. Вы можете клонировать этот репозиторий и следовать инструкциям в файле README для развертывания любого из прокси-серверов.
Предварительные требования
Для развертывания примеров вам необходимо установить на свою систему два инструмента:
Для локального тестирования примеров вам также необходимо установить Node.js.
Получение образца репозитория
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
Пример: Запуск тестового приложения
Клонируйте репозиторий с примерами.
cd ~/myhomegit clone https://github.com/apigee/api-platform-samples.gitcd ~/myhome/api-platform-samples/doc-samples/hosted-targetscd node-hosted-hello
Протестируйте приложение локально.
Для проведения этого локального теста необходимо установить Node.js.
PORT=8081 node apiproxy/resources/hosted/index.jscurl 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!"