Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Edge Microgateway версии 3.1.5 и более поздних версий.
В этой теме рассматривается управление и настройка Edge Microgateway.
Обновление Edge Microgateway при наличии подключения к интернету.
В этом разделе объясняется, как обновить существующую установку Edge Microgateway. Если вы работаете без подключения к интернету, см. раздел «Можно ли установить Edge Microgateway без подключения к интернету?» .
Компания Apigee рекомендует протестировать существующую конфигурацию с новой версией перед обновлением производственной среды.
- Выполните следующую команду
npmдля обновления Edge Microgateway до последней версии:npm upgrade edgemicro -g
Для обновления до определенной версии Edge Microgateway необходимо указать номер версии в команде обновления. Если номер версии не указан, будет установлена последняя версия. Например, для обновления до версии 3.1.0 используйте следующую команду:
npm upgrade edgemicro@3.1.0 -g
- Проверьте номер версии. Например, если вы установили версию 3.1.0:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.1.0 - Наконец, обновите прокси-сервер edgemicro-auth до последней версии:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Внесение изменений в конфигурацию
К числу необходимых конфигурационных файлов относятся:
- Файл конфигурации системы по умолчанию
- Файл конфигурации по умолчанию для только что инициализированного экземпляра Edge Microgateway.
- Динамический конфигурационный файл для запущенных экземпляров
В этом разделе рассматриваются эти файлы и то, что вам нужно знать об их изменении.
Файл конфигурации системы по умолчанию
При установке Edge Microgateway в это место помещается файл конфигурации системы по умолчанию:
prefix/lib/node_modules/edgemicro/config/default.yaml
Где prefix — это каталог префикса npm . Если вы не можете найти этот каталог, см. раздел «Где установлен Edge Microgateway» .
Если вы изменили файл конфигурации системы, необходимо повторно инициализировать, перенастроить и перезапустить Edge Microgateway:
edgemicro initedgemicro configure [params]edgemicro start [params]
Файл конфигурации по умолчанию для вновь инициализированных экземпляров Edge Microgateway.
При запуске edgemicro init системный конфигурационный файл (описанный выше), default.yaml , помещается в каталог ~/.edgemicro .
Если вы измените конфигурационный файл в ~/.edgemicro , вам потребуется перенастроить и перезапустить Edge Microgateway:
edgemicro stopedgemicro configure [params]edgemicro start [params]
Динамический конфигурационный файл для запущенных экземпляров
При выполнении команды edgemicro configure [params] в каталоге ~/.edgemicro создаётся динамический конфигурационный файл. Имя файла соответствует следующему шаблону: org - env -config.yaml , где org и env — это названия вашей организации и среды Apigee Edge. Вы можете использовать этот файл для внесения изменений в конфигурацию, а затем перезагружать её без простоя. Например, если вы добавите и настроите плагин, вы сможете перезагрузить конфигурацию без простоя, как описано ниже.
Если Edge Microgateway запущен (опция с нулевым временем простоя):
- Перезагрузите конфигурацию Edge Microgateway:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Где:
- $ORG — это имя вашей организации Edge (вы должны быть администратором организации).
- $ENV — это среда в вашей организации (например, "test" или "prod").
- $KEY — это ключ, возвращенный ранее командой configure.
- $SECRET — это ключ, возвращенный ранее командой configure.
Например
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
Если Edge Microgateway остановлен:
- Перезапустите Edge Microgateway:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Где:
- $ORG — это имя вашей организации Edge (вы должны быть администратором организации).
- $ENV — это среда в вашей организации (например, "test" или "prod").
- $KEY — это ключ, возвращенный ранее командой configure.
- $SECRET — это ключ, возвращенный ранее командой configure.
Например:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Вот пример файла конфигурации. Подробную информацию о настройках файла конфигурации см. в справочнике по настройке Edge Microgateway .
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Настройка переменных среды
Команды интерфейса командной строки, требующие значений для вашей организации и среды Edge, а также ключ и секрет, необходимые для запуска Edge Microgateway, могут быть сохранены в следующих переменных среды:
-
EDGEMICRO_ORG -
EDGEMICRO_ENV -
EDGEMICRO_KEY -
EDGEMICRO_SECRET
Установка этих переменных необязательна. Если вы их установите, вам не нужно будет указывать их значения при использовании интерфейса командной строки (CLI) для настройки и запуска Edge Microgateway.
Настройка SSL на сервере Edge Microgateway
Посмотрите следующие видеоролики, чтобы узнать о настройке TLS в Apigee Edge Microgateway:
| Видео | Описание |
|---|---|
| Настройте одностороннее TLS-соединение в северном направлении. | Узнайте о настройке TLS в Apigee Edge Microgateway. В этом видео представлен обзор TLS и его важности, показано, как использовать TLS в Edge Microgateway, а также продемонстрировано, как настроить одностороннее TLS-соединение в северном направлении. |
| Настройте двусторонний TLS-трафик в северном направлении. | Это второе видео по настройке TLS в Apigee Edge Microgateway. В этом видео объясняется, как настроить двусторонний TLS-трафик для подключения к серверу. |
| Настройте одностороннее и двустороннее соединение TLS в южном направлении. | В этом третьем видеоролике о настройке TLS в Apigee Edge Microgateway объясняется, как настроить односторонний и двусторонний TLS-трафик для передачи данных на юг. |
Вы можете настроить сервер Microgateway для использования SSL. Например, при настроенном SSL вы можете вызывать API через Edge Microgateway по протоколу «https», следующим образом:
https://localhost:8000/myapi
Для настройки SSL на сервере Microgateway выполните следующие действия:
- Сгенерируйте или получите SSL-сертификат и ключ, используя утилиту openssl или любой другой удобный для вас способ.
- Добавьте атрибут
edgemicro:sslв конфигурационный файл Edge Microgateway . Полный список параметров см. в таблице ниже. Например:edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Перезапустите Edge Microgateway. Следуйте инструкциям, изложенным в разделе «Внесение изменений в конфигурацию» , в зависимости от того, какой файл конфигурации вы редактировали: файл по умолчанию или файл конфигурации времени выполнения.
Вот пример раздела edgemicro в конфигурационном файле с настроенным SSL:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Ниже приведён список всех поддерживаемых вариантов серверов:
| Вариант | Описание |
|---|---|
key | Путь к файлу ca.key (в формате PEM). |
cert | Путь к файлу ca.cert (в формате PEM). |
pfx | Путь к файлу pfx содержащему закрытый ключ, сертификат и сертификаты центра сертификации клиента в формате PFX. |
passphrase | Строка, содержащая парольную фразу для закрытого ключа или PFX-файла. |
ca | Путь к файлу, содержащему список доверенных сертификатов в формате PEM. |
ciphers | Строка, описывающая используемые шифры, разделённые символом ":". |
rejectUnauthorized | Если значение истинно, сертификат сервера проверяется по списку предоставленных центров сертификации. Если проверка не удается, возвращается ошибка. |
secureProtocol | Метод SSL для использования. Например, SSLv3_method для принудительного использования SSL версии 3. |
servername | Имя сервера для расширения TLS SNI (Server Name Indication). |
requestCert | true для двустороннего SSL; false для одностороннего SSL |
Использование клиентских параметров SSL/TLS
Вы можете настроить Edge Microgateway как TLS- или SSL-клиент при подключении к целевым конечным точкам. В файле конфигурации Microgateway используйте элемент targets для установки параметров SSL/TLS.
В этом примере приведены настройки, которые будут применены ко всем хостам:
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueВ этом примере настройки применяются только к указанному хосту:
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueВот пример использования TLS:
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueНиже приведён список всех поддерживаемых клиентских опций:
| Вариант | Описание |
|---|---|
pfx | Путь к файлу pfx содержащему закрытый ключ, сертификат и сертификаты центра сертификации клиента в формате PFX. |
key | Путь к файлу ca.key (в формате PEM). |
passphrase | Строка, содержащая парольную фразу для закрытого ключа или PFX-файла. |
cert | Путь к файлу ca.cert (в формате PEM). |
ca | Путь к файлу, содержащему список доверенных сертификатов в формате PEM. |
ciphers | Строка, описывающая используемые шифры, разделённые символом ":". |
rejectUnauthorized | Если значение истинно, сертификат сервера проверяется по списку предоставленных центров сертификации. Если проверка не удается, возвращается ошибка. |
secureProtocol | Метод SSL для использования. Например, SSLv3_method для принудительного использования SSL версии 3. |
servername | Имя сервера для расширения TLS SNI (Server Name Indication). |
Настройка прокси-сервера edgemicro-auth
По умолчанию Edge Microgateway использует прокси-сервер, развернутый на Apigee Edge, для аутентификации OAuth2. Этот прокси-сервер развертывается при первом запуске edgemicro configure . Вы можете изменить конфигурацию этого прокси-сервера по умолчанию, чтобы добавить поддержку пользовательских утверждений в JSON Web Token (JWT), настроить срок действия токена и генерировать токены обновления. Подробности см. на странице edgemicro-auth в GitHub.
Использование собственной службы аутентификации
По умолчанию Edge Microgateway использует прокси-сервер, развернутый на Apigee Edge, для аутентификации OAuth2. Этот прокси-сервер развертывается при первом запуске edgemicro configure . По умолчанию URL-адрес этого прокси-сервера указывается в файле конфигурации Edge Microgateway следующим образом:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
Если вы хотите использовать собственную пользовательскую службу для обработки аутентификации, измените значение authUri в файле конфигурации, указав путь к вашей службе. Например, у вас может быть служба, использующая LDAP для проверки личности.
Управление файлами журналов
Edge Microgateway регистрирует информацию о каждом запросе и ответе. Файлы журналов содержат полезную информацию для отладки и устранения неполадок.
Где хранятся файлы журналов
По умолчанию файлы журналов хранятся в каталоге /var/tmp .
Как изменить каталог для файлов журналов по умолчанию
Каталог, в котором хранятся файлы журналов, указывается в конфигурационном файле Edge Microgateway. См. также раздел «Внесение изменений в конфигурацию» .
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Измените значение параметра dir , чтобы указать другой каталог для файлов журналов.
Отправка логов в консоль
Вы можете настроить ведение журнала таким образом, чтобы информация отправлялась в стандартный вывод, а не в файл журнала. Установите флаг to_console в значение true следующим образом:
edgemicro:
logging:
to_console: trueПри таких настройках логи будут отправляться в стандартный вывод. В настоящее время нельзя отправлять логи одновременно в стандартный вывод и в файл логов.
Как установить уровень логирования
Вы можете установить следующие уровни логирования: info , warn и error . Рекомендуется использовать уровень info. Он регистрирует все запросы и ответы API и является уровнем по умолчанию.
Как изменить интервалы логирования
Эти интервалы можно настроить в конфигурационном файле Edge Microgateway. См. также раздел «Внесение изменений в конфигурацию» .
К настраиваемым атрибутам относятся:
- stats_log_interval : (по умолчанию: 60) Интервал в секундах, через который запись статистики записывается в файл журнала API.
- rotate_interval : (по умолчанию: 24) Интервал в часах, через который происходит ротация файлов журналов. Например:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Правильные методы ведения журналов событий.
Поскольку данные в файлах журналов накапливаются со временем, Apigee рекомендует применять следующие методы:
- Поскольку файлы журналов могут достигать довольно больших размеров, убедитесь, что в каталоге файлов журналов достаточно места. См. следующие разделы «Где хранятся файлы журналов» и «Как изменить каталог файлов журналов по умолчанию» .
- Удаляйте или перемещайте файлы журналов в отдельную архивную директорию как минимум раз в неделю.
- Если ваша политика предусматривает удаление журналов, вы можете использовать команду CLI
edgemicro log -cдля удаления (очистки) старых журналов.
Соглашение об именовании файлов журналов
Каждый экземпляр Edge Microgateway создает три типа файлов журналов:
- api — Регистрирует все запросы и ответы, проходящие через Edge Microgateway. В этот файл также записываются счетчики API (статистика) и ошибки.
- err - Записывает в лог всё, что отправляется в стандартный поток ошибок.
- out - Выводит в лог все данные, отправляемые в стандартный поток вывода.
Вот существующая система именования:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
Например:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
О содержимом файла журнала
Добавлено в: v2.3.3
По умолчанию служба логирования не записывает JSON-данные о загруженных прокси-серверах, продуктах и JSON Web Token (JWT). Если вы хотите записывать эти объекты в файлы журналов, установите DEBUG=* при запуске Edge Microgateway. Например:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
Содержимое файла журнала "api".
Файл журнала "api" содержит подробную информацию о потоке запросов и ответов через Edge Microgateway. Файлы журнала "api" называются следующим образом:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Для каждого запроса, отправленного в Edge Microgateway, в лог-файл "api" записываются четыре события:
- Входящий запрос от клиента
- Исходящий запрос направлен целевому объекту.
- Входящий ответ от цели
- Исходящий ответ клиенту
Каждая из этих отдельных записей представлена в сокращенной записи, чтобы сделать файлы журналов более компактными. Вот четыре примера записей, представляющих каждое из четырех событий. В файле журнала они выглядят так (номера строк приведены только для справки в документе, в файле журнала они не отображаются).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Рассмотрим их по очереди:
1. Пример входящего запроса от клиента:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - Метка даты Unix
- info — Зависит от контекста. Может быть info, warn или error в зависимости от уровня логирования. Может быть stats для записи статистики, warn для предупреждений или error для ошибок.
- req — Идентифицирует событие. В данном случае, запрос от клиента.
- m — HTTP-глагол, используемый в запросе.
- u - Часть URL-адреса, следующая за базовым путем.
- h - Хост и номер порта, на котором работает Edge Microgateway.
- r - Удаленный хост и порт, откуда поступил запрос от клиента.
- i - Идентификатор запроса. Все четыре записи событий будут иметь этот идентификатор. Каждому запросу присваивается уникальный идентификатор. Сопоставление записей журнала по идентификатору запроса может дать ценную информацию о задержке целевого устройства.
- d - Время в миллисекундах с момента получения запроса Edge Microgateway. В приведенном выше примере ответ целевого устройства на запрос 0 был получен через 7 миллисекунд (строка 3), а ответ был отправлен клиенту еще через 4 миллисекунды (строка 4). Другими словами, общая задержка запроса составила 11 миллисекунд, из которых 7 миллисекунд пришлись на целевое устройство и 4 миллисекунды — на само Edge Microgateway.
2. Пример исходящего запроса, направленного адресату:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - Метка даты Unix
- info — Зависит от контекста. Может быть info, warn или error в зависимости от уровня логирования. Может быть stats для записи статистики, warn для предупреждений или error для ошибок.
- treq — Идентифицирует событие. В данном случае, целевой запрос.
- m — HTTP-глагол, используемый в целевом запросе.
- u - Часть URL-адреса, следующая за базовым путем.
- h - Номер хоста и порта целевого бэкэнда.
- i - Идентификатор записи в журнале. Все четыре записи событий будут иметь этот идентификатор.
3. Пример входящего ответа от целевого объекта.
1436403888672 info tres s=200, d=7, i=0
1436403888651 - Метка даты Unix
- info — Зависит от контекста. Может быть info, warn или error в зависимости от уровня логирования. Может быть stats для записи статистики, warn для предупреждений или error для ошибок.
- tres — Идентифицирует событие. В данном случае, целевую реакцию.
- s - Статус HTTP-ответа.
- d - Длительность в миллисекундах. Время, затраченное целевым устройством на вызов API.
- i - Идентификатор записи в журнале. Все четыре записи событий будут иметь этот идентификатор.
4. Пример исходящего ответа клиенту.
1436403888676 info res s=200, d=11, i=0
1436403888651 - Метка даты Unix
- info — Зависит от контекста. Может быть info, warn или error в зависимости от уровня логирования. Может быть stats для записи статистики, warn для предупреждений или error для ошибок.
- res — Идентифицирует событие. В данном случае, ответ клиенту.
- s - Статус HTTP-ответа.
- d - Продолжительность в миллисекундах. Это общее время, затраченное на вызов API, включая время, затраченное целевым API, и время, затраченное самим Edge Microgateway.
- i - Идентификатор записи в журнале. Все четыре записи событий будут иметь этот идентификатор.
расписание файлов журналов
Файлы журналов ротируются с интервалом, указанным в атрибуте конфигурации rotate_interval . Записи будут продолжать добавляться в тот же файл журнала до истечения интервала ротации. Однако при каждом перезапуске Edge Microgateway он получает новый UID и создает новый набор файлов журналов с этим UID. См. также раздел «Рекомендации по правильному обслуживанию файлов журналов» .
Сообщения об ошибках
Некоторые записи в журнале будут содержать сообщения об ошибках. Чтобы определить, где и почему возникают ошибки, см. справочник ошибок Edge Microgateway .
Справочник по настройке Edge Microgateway
Расположение файла конфигурации
Атрибуты конфигурации, описанные в этом разделе, находятся в файле конфигурации Edge Microgateway. См. также раздел «Внесение изменений в конфигурацию» .
атрибуты edge_config
Эти параметры используются для настройки взаимодействия между экземпляром Edge Microgateway и Apigee Edge.
- bootstrap : (по умолчанию: none) URL-адрес, указывающий на службу, специфичную для Edge Microgateway и работающую на Apigee Edge. Edge Microgateway использует эту службу для связи с Apigee Edge. Этот URL-адрес возвращается при выполнении команды для генерации пары открытого/закрытого ключей:
edgemicro genkeys. См. раздел «Настройка и конфигурирование Edge Microgateway» для получения подробной информации. - jwt_public_key : (по умолчанию: none) URL-адрес, указывающий на прокси-сервер Edge Microgateway, развернутый на Apigee Edge. Этот прокси-сервер служит конечной точкой аутентификации для выдачи подписанных токенов доступа клиентам. Этот URL-адрес возвращается при выполнении команды развертывания прокси-сервера: edgemicro configure . См. раздел «Настройка и конфигурирование Edge Microgateway» для получения подробной информации.
- quotaUri : Установите это свойство конфигурации, если вы хотите управлять квотами через прокси-сервер
edgemicro-auth, развернутый в вашей организации. Если это свойство не задано, по умолчанию используется внутренняя конечная точка Edge Microgateway для управления квотами.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
атрибуты edgemicro
Эти параметры настраивают процесс Edge Microgateway.
- порт : (по умолчанию: 8000) Номер порта, на котором процесс Edge Microgateway прослушивает запросы.
- max_connections : (по умолчанию: -1) Задает максимальное количество одновременных входящих соединений, которые может принимать Edge Microgateway. Если это число превышено, возвращается следующий статус:
res.statusCode = 429; // Too many requests - max_connections_hard : (по умолчанию: -1) Максимальное количество одновременных запросов, которые Edge Microgateway может получить до разрыва соединения. Этот параметр предназначен для предотвращения атак типа «отказ в обслуживании». Обычно его следует устанавливать на значение больше, чем max_connections.
- ведение журнала :
- уровень : (по умолчанию: ошибка)
- info — Регистрирует все запросы и ответы, проходящие через экземпляр Edge Microgateway.
- Предупреждение - Регистрирует только предупреждающие сообщения.
- error - Регистрирует только сообщения об ошибках.
- dir : (по умолчанию: /var/tmp) Каталог, где хранятся файлы журналов.
- stats_log_interval : (по умолчанию: 60) Интервал в секундах, через который запись статистики записывается в файл журнала API.
- rotate_interval : (по умолчанию: 24) Интервал в часах, через который происходит ротация файлов журналов.
- уровень : (по умолчанию: ошибка)
- Плагины : Плагины добавляют функциональность в Edge Microgateway. Подробную информацию о разработке плагинов см. в разделе «Разработка пользовательских плагинов» .
- dir : Относительный путь от каталога ./gateway до каталога ./plugins или абсолютный путь.
- sequence : Список модулей плагинов для добавления в ваш экземпляр Edge Microgateway. Модули будут выполняться в том порядке, в котором они указаны здесь.
- debug: Добавляет удаленную отладку в процесс Edge Microgateway.
- порт : Номер порта, на котором будет осуществляться прослушивание. Например, настройте отладчик вашей IDE на прослушивание этого порта.
- args : Аргументы для процесса отладки. Например:
args --nolazy
- config_change_poll_interval: (по умолчанию: 600 секунд) Edge Microgateway периодически загружает новую конфигурацию и выполняет перезагрузку, если что-либо изменилось. Опрос отслеживает любые изменения, внесенные в Edge (изменения в продуктах, прокси-серверы, поддерживающие Microgateway и т. д.), а также изменения, внесенные в локальный файл конфигурации.
- disable_config_poll_interval: (по умолчанию: false) Установите значение true , чтобы отключить автоматический опрос изменений.
- request_timeout : Устанавливает тайм-аут для целевых запросов. Тайм-аут задается в секундах. В случае превышения тайм-аута Edge Microgateway отвечает кодом состояния 504. (Добавлено в версии 2.4.x)
- keep_alive_timeout : Это свойство позволяет установить тайм-аут Edge Microgateway (в миллисекундах). (По умолчанию: 5 секунд) (Добавлено в версии 3.0.6)
- headers_timeout : Этот атрибут ограничивает время (в миллисекундах), в течение которого HTTP-парсер будет ждать получения полных HTTP-заголовков.
Например:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
Внутри системы этот параметр устанавливает атрибут
Server.headersTimeoutв запросах Node.js. (По умолчанию: на 5 секунд больше, чем время, установленное с помощьюedgemicro.keep_alive_timeout. Эта настройка по умолчанию предотвращает ошибочное разрыв соединения балансировщиками нагрузки или прокси-серверами.) (Добавлено в версии 3.1.1) - noRuleMatchAction: (String) Действие, которое следует предпринять (разрешить или запретить доступ), если правило соответствия, указанное в плагине
accesscontrolне найдено (не соответствует условию). Допустимые значения:ALLOWилиDENYПо умолчанию:ALLOW(Добавлено: v3.1.7) - enableAnalytics: (по умолчанию: true) Установите атрибут в значение false , чтобы предотвратить загрузку плагина аналитики. В этом случае вызовы к Apigee Edge analytics выполняться не будут. Если установлено значение true или этот атрибут не указан, плагин аналитики будет работать как обычно. Подробнее см. в атрибутах edgemicro . (Добавлено в версии 3.1.8).
Пример:
edgemicro enableAnalytics=false|true
атрибуты заголовков
Эти настройки определяют, как обрабатываются определенные HTTP-заголовки.
- x-forwarded-for : (по умолчанию: true) Установите значение false, чтобы предотвратить передачу заголовков x-forwarded-for целевому объекту. Обратите внимание, что если заголовок x-forwarded-for присутствует в запросе, его значение будет установлено равным значению client-ip в Edge Analytics.
- x-forwarded-host : (по умолчанию: true) Установите значение false, чтобы предотвратить передачу заголовков x-forwarded-host целевому объекту.
- x-request-id : (по умолчанию: true) Установите значение false, чтобы предотвратить передачу заголовков x-request-id целевому объекту.
- x-response-time : (по умолчанию: true) Установите значение false, чтобы предотвратить передачу заголовков x-response-time целевому объекту.
- via : (по умолчанию: true) Установите значение false, чтобы предотвратить передачу заголовков via целевому объекту.
атрибуты OAuth
Эти параметры определяют, как Edge Microgateway обеспечивает аутентификацию клиента.
- allowNoAuthorization : (по умолчанию: false) Если установлено значение true, вызовы API разрешаются через Edge Microgateway без заголовка Authorization. Установите значение false, чтобы требовать заголовок Authorization (по умолчанию).
- allowInvalidAuthorization : (по умолчанию: false) Если установлено значение true, вызовы API разрешаются, если токен, переданный в заголовке Authorization, недействителен или истек. Установите значение false, чтобы требовать действительные токены (по умолчанию).
- authorization-header : (по умолчанию: Authorization: Bearer) Заголовок, используемый для отправки токена доступа в Edge Microgateway. Вы можете изменить значение по умолчанию в случаях, когда целевому устройству необходимо использовать заголовок Authorization для других целей.
- api-key-header : (по умолчанию: x-api-key) Имя заголовка или параметра запроса, используемого для передачи ключа API в Edge Microgateway. См. также Использование ключа API .
- keep-authorization-header : (по умолчанию: false) Если установлено значение true, заголовок Authorization, отправленный в запросе, передается целевому объекту (он сохраняется).
- allowOAuthOnly — Если установлено значение true, каждый API должен содержать заголовок Authorization с токеном доступа Bearer. Позволяет разрешить только модель безопасности OAuth (с сохранением обратной совместимости). (Добавлено в версии 2.4.x)
- allowAPIKeyOnly — Если установлено значение true, каждый API должен содержать заголовок x-api-key (или пользовательское местоположение) с ключом API. Позволяет разрешить только модель безопасности с использованием ключа API (с сохранением обратной совместимости). (Добавлено в версии 2.4.x)
- gracePeriod — Этот параметр помогает предотвратить ошибки, вызванные незначительными расхождениями между системными часами и временем «Не раньше» (nbf) или «Выдано в» (iat), указанными в токене авторизации JWT. Установите этот параметр равным количеству секунд, которое следует учитывать при таких расхождениях. (Добавлено в версии 2.5.7)
Атрибуты, специфичные для плагина
Подробную информацию о настраиваемых атрибутах каждого плагина см. в разделе «Использование плагинов».
Фильтрация прокси
Вы можете отфильтровать, какие прокси-серверы, поддерживающие microgateway, будет обрабатывать экземпляр Edge Microgateway. При запуске Edge Microgateway загружает все прокси-серверы, поддерживающие microgateway, в организации, с которой он связан. Используйте следующую конфигурацию, чтобы ограничить круг обрабатываемых прокси-серверов. Например, эта конфигурация ограничивает количество обрабатываемых прокси-серверов тремя: edgemicro_proxy-1 , edgemicro_proxy-2 и edgemicro_proxy-3 :
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Фильтрация товаров по названию
Используйте следующую конфигурацию, чтобы ограничить количество продуктов API, которые Edge Microgateway загружает и обрабатывает. Для фильтрации загруженных продуктов добавьте параметр запроса productnamefilter к API /products указанному в файле *.config.yaml Edge Microgateway. Например:
edge_config:
bootstrap: >-
https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
managementUri: 'https://api.enterprise.apigee.com'
vaultName: microgateway
authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
baseUri: >-
https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
bootstrapMessage: Please copy the following property to the edge micro agent config
keySecretMessage: The following credentials are required to start edge micro
products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'Обратите внимание, что значение параметра запроса должно быть указано в формате регулярного выражения и закодировано в формате URL. Например, регулярное выражение ^[Ee]dgemicro.*$ обрабатывает такие имена, как: "edgemicro-test-1", "edgemicro_demo" и "Edgemicro_New_Demo". Закодированное в формате URL значение, подходящее для использования в параметре запроса, выглядит следующим образом: %5E%5BEe%5Ddgemicro.%2A%24 .
Приведенный ниже отладочный вывод показывает, что были загружены только отфильтрованные товары:
...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
"apiProduct":[
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590549037549,
"createdBy":"k***@g********m",
"displayName":"test upper case in name",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590549037549,
"lastModifiedBy":"k***@g********m",
"name":"Edgemicro_New_Demo",
"proxies":[
"catchall"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590548328998,
"createdBy":"k***@g********m",
"displayName":"edgemicro test 1",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590548328998,
"lastModifiedBy":"k***@g********m",
"name":"edgemicro-test-1",
"proxies":[
"Lets-Encrypt-Validation-DoNotDelete"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
"/",
"/**"
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1558182193472,
"createdBy":"m*********@g********m",
"displayName":"Edge microgateway demo product",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1569077897465,
"lastModifiedBy":"m*********@g********m",
"name":"edgemicro_demo",
"proxies":[
"edgemicro-auth",
"edgemicro_hello"
],
"quota":"600",
"quotaInterval":"1",
"quotaTimeUnit":"minute",
"scopes":[
]
}
]
}Фильтрация товаров по пользовательским атрибутам
Для фильтрации товаров на основе пользовательских атрибутов:
- В пользовательском интерфейсе Edge выберите прокси-сервер edgemicro_auth в организации/среде, где вы настроили Edge Microgateway.
- На вкладке «Разработка» откройте политику JavaCallout в редакторе.
- Добавьте пользовательский атрибут с ключом
products.filter.attributes, содержащий список имен атрибутов, разделенных запятыми. В Edge Microgateway будут возвращены только те продукты, которые содержат хотя бы одно из имен пользовательских атрибутов. - При желании вы можете отключить проверку на включение продукта в текущей среде, установив для пользовательского атрибута
products.filter.env.enableзначениеfalse. (По умолчанию — true.) - (Только для частного облака) Если вы используете Edge для частного облака, установите свойство
org.noncpsвtrue, чтобы получать продукты для сред, не использующих CPS.
Например:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
<DisplayName>JavaCallout</DisplayName>
<FaultRules/>
<Properties>
<Property name="products.filter.attributes">attrib.one, attrib.two</Property>
<Property name="products.filter.env.enable">false</Property>
<Property name="org.noncps">true</Property>
</Properties>
<ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
<ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
</JavaCallout>Настройка частоты отправки аналитических уведомлений
Используйте следующие параметры конфигурации для управления частотой отправки аналитических данных Edge Microgateway в Apigee:
- bufferSize (необязательно): максимальное количество аналитических записей, которое может вместить буфер, прежде чем начнут удаляться самые старые записи. По умолчанию: 10000
- batchSize (необязательно): Максимальный размер пакета аналитических записей, отправляемых в Apigee. По умолчанию: 500
- flushInterval (необязательно): количество миллисекунд между отправкой пакета аналитических записей в Apigee. По умолчанию: 5000
Например:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Маскирование аналитических данных
Следующая конфигурация предотвращает отображение информации о пути запроса в Edge Analytics. Добавьте следующее в конфигурацию микрошлюза, чтобы скрыть URI запроса и/или путь запроса. Обратите внимание, что URI состоит из имени хоста и пути запроса.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Разделение вызовов API в Edge Analytics
Вы можете настроить плагин аналитики таким образом, чтобы определенный путь к API отображался как отдельный прокси-сервер на панелях мониторинга Edge Analytics. Например, вы можете выделить API проверки работоспособности на панели мониторинга, чтобы избежать путаницы с фактическими вызовами прокси-серверов API. На панели мониторинга Analytics выделенные прокси-серверы имеют следующий шаблон именования:
edgemicro_proxyname-health
На следующем изображении показаны два отдельных прокси-сервера на панели аналитики: edgemicro_hello-health и edgemicro_mock-health :

Используйте эти параметры для разделения относительных и абсолютных путей на панели аналитики в качестве отдельных прокси-объектов:
- relativePath (необязательно): указывает относительный путь для разделения на панели мониторинга Analytics. Например, если вы укажете
/healthcheck, все вызовы API, содержащие путь/healthcheckбудут отображаться на панели мониторинга какedgemicro_ proxyname -health. Обратите внимание, что этот флаг игнорирует базовый путь прокси. Для разделения на основе полного пути, включая базовый путь, используйте флагproxyPath. - proxyPath (необязательно): указывает полный путь к прокси-серверу API, включая базовый путь прокси, для выделения на панели аналитики. Например, если вы укажете
/mocktarget/healthcheck, где/mocktarget— это базовый путь прокси, все вызовы API с путем/mocktarget/healthcheckбудут отображаться на панели какedgemicro_ proxyname -health.
Например, в следующей конфигурации любой путь API, содержащий /healthcheck будет выделен плагином аналитики. Это означает, что /foo/healthcheck и /foo/bar/healthcheck будут выделены в отдельный прокси-сервер с именем edgemicro_ proxyname -health на панели аналитики.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckВ следующей конфигурации любой API с путем прокси /mocktarget/healthcheck будет выделен в отдельный прокси-сервер с именем edgemicro_ proxyname -health на панели аналитики.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckНастройка Edge Microgateway за корпоративным брандмауэром
Используйте HTTP-прокси для связи с Apigee Edge.
Добавлено в версии 3.1.2.
Для использования HTTP-прокси для связи между Edge Microgateway и Apigee Edge выполните следующие действия:
- Установите переменные среды
HTTP_PROXY,HTTPS_PROXYиNO_PROXY. Эти переменные управляют хостами для каждого HTTP-прокси, которые вы хотите использовать для связи с Apigee Edge, или теми хостами, которые не должны обрабатывать связь с Apigee Edge. Например:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
Обратите внимание, что
NO_PROXYможет представлять собой список доменов, разделенных запятыми, на которые Edge Microgateway не должен направлять проксирование.Для получения дополнительной информации об этих переменных см. https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
- Перезапустите Edge Microgateway.
Используйте HTTP-прокси для связи с целевым устройством.
Добавлено в версии 3.1.2.
Для использования HTTP-прокси для связи между Edge Microgateway и целевыми серверными приложениями выполните следующие действия:
- Добавьте следующую конфигурацию в файл конфигурации микрошлюза:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseГде:
- tunnel : (Необязательно) Если true, Edge Microgateway использует метод HTTP CONNECT для туннелирования HTTP-запросов через одно TCP-соединение. (То же самое верно, если переменные среды, указанные ниже для настройки прокси, включают TLS). По умолчанию:
false - url : URL HTTP-прокси.
- bypass : (Необязательно) Указывает один или несколько разделенных запятыми целевых URL-адресов хостов, которые должны обходить HTTP-прокси. Если это свойство не задано, используйте переменную среды NO_PROXY, чтобы указать, какие целевые URL-адреса следует обходить.
- enabled : Если true и задан параметр
proxy.url, использовать значениеproxy.urlдля HTTP-прокси. Если true иproxy.urlне задан, использовать прокси, указанные в переменных среды HTTP-проксиHTTP_PROXYиHTTPS_PROXY, как описано в разделе «Использование HTTP-прокси для связи с Apigee Edge» .
Например:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - tunnel : (Необязательно) Если true, Edge Microgateway использует метод HTTP CONNECT для туннелирования HTTP-запросов через одно TCP-соединение. (То же самое верно, если переменные среды, указанные ниже для настройки прокси, включают TLS). По умолчанию:
- Перезапустите Edge Microgateway.
Использование символов подстановки в прокси-серверах, поддерживающих Microgateway.
В базовом пути прокси-сервера edgemicro_* (совместимого с Microgateway) можно использовать один или несколько символов подстановки "*". Например, базовый путь /team/*/members позволяет клиентам обращаться к https://[host]/team/blue/members и https://[host]/team/green/members без необходимости создания новых API-прокси для поддержки новых команд. Обратите внимание, что /**/ не поддерживается.
Важно: Apigee НЕ поддерживает использование символа подстановки "*" в качестве первого элемента базового пути. Например, это НЕ поддерживается: /*/ search.
Вращающиеся JWT-ключи
Через некоторое время после первоначальной генерации JWT может потребоваться изменить пару открытого/закрытого ключей, хранящуюся в зашифрованном KVM-сервере Edge. Этот процесс генерации новой пары ключей называется ротацией ключей.
Как Edge Microgateway использует JWT
JSON Web Token (JWT) — это стандарт токенов, описанный в RFC7519 . JWT предоставляет способ подписать набор утверждений, которые могут быть надежно проверены получателем JWT.
С помощью CLI можно сгенерировать JWT и использовать его в заголовке Authorization вызовов API вместо ключа API. Например:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
Для получения информации о генерации JWT с помощью CLI см. раздел «Генерация токена» .
Что такое ротация ключей?
Через некоторое время после первоначальной генерации JWT может потребоваться изменить пару открытого/закрытого ключей, хранящуюся в зашифрованном KVM-сервере Edge. Этот процесс генерации новой пары ключей называется ротацией ключей. При ротации ключей генерируется новая пара закрытого/открытого ключей, которая сохраняется в KVM-сервере «микрошлюза» в вашей организации/среде Apigee Edge. Кроме того, старый открытый ключ сохраняется вместе с его исходным идентификатором.
Для генерации JWT Edge использует информацию, хранящуюся в зашифрованном KVM-сервере. KVM-сервер под названием microgateway был создан и заполнен ключами при первоначальной настройке (конфигурации) Edge Microgateway. Ключи в KVM используются для подписи и шифрования JWT.
В число клавиш KVM входят:
private_key — Последний (самый недавно созданный) закрытый ключ RSA, используемый для подписи JWT.
public_key — последний (самый недавно созданный) сертификат, используемый для проверки JWT, подписанных с помощью private_key.
private_key_kid — Идентификатор последнего (самого недавно созданного) закрытого ключа. Этот идентификатор ключа связан со значением private_key и используется для поддержки ротации ключей.
public_key1_kid — Идентификатор последнего (самого недавно созданного) открытого ключа. Этот ключ связан со значением public_key1 и используется для поддержки ротации ключей. Это значение совпадает с идентификатором закрытого ключа kid.
public_key1 - Последний (самый недавно созданный) открытый ключ.
При выполнении ротации ключей существующие значения ключей заменяются в карте, а для сохранения старых открытых ключей добавляются новые. Например:
public_key2_kid — старый идентификатор открытого ключа. Этот ключ связан со значением public_key2 и используется для поддержки ротации ключей.
public_key2 - Старый открытый ключ.
Предъявленные для проверки JWT будут проверены с использованием нового открытого ключа. Если проверка не удастся, будет использоваться старый открытый ключ до истечения срока действия JWT (после интервала token_expiry*, по умолчанию 30 минут). Таким образом, вы можете «ротировать» ключи, не прерывая немедленно трафик API.
Как выполнить поворот клавиш
В этом разделе объясняется, как выполнить поворот клавиши.
- Для обновления KVM используйте команду
edgemicro upgradekvm. Подробную информацию о выполнении этой команды см. в разделе «Обновление KVM» . Этот шаг необходимо выполнить только один раз. - Для обновления прокси-сервера edgemicro-oauth используйте команду
edgemicro upgradeauth. Подробную информацию о выполнении этой команды см. в разделе «Обновление прокси-сервера edgemicro-auth» . Этот шаг необходимо выполнить только один раз. - Добавьте следующую строку в файл
~/.edgemicro/org-env-config.yaml, где необходимо указать ту же организацию и среду, которые вы настроили для использования микрошлюзом:jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
Выполните команду поворота клавиш, чтобы повернуть клавиши. Подробную информацию об этой команде см. в разделе «Поворот клавиш» .
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
Например:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
После ротации ключей Edge возвращает Edge Microgateway несколько ключей. Обратите внимание, что в следующем примере каждый ключ имеет уникальное значение «kid» (идентификатор ключа). Затем микрошлюз использует эти ключи для проверки авторизационных токенов. Если проверка токена не удается, микрошлюз проверяет наличие более старого ключа в наборе ключей и пытается использовать его. Формат возвращаемых ключей — JSON Web Key (JWK). Подробнее об этом формате можно прочитать в RFC 7517 .
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}Настройка задержки "не раньше"
В версиях 3.1.5 и более ранних новый закрытый ключ, сгенерированный командой rotatekey , вступал в силу немедленно, и новые сгенерированные токены подписывались этим новым закрытым ключом. Однако новый открытый ключ становился доступен экземплярам Edge Microgateway только каждые 10 минут (по умолчанию) при обновлении конфигурации микрошлюза. Из-за этой задержки между подписанием токена и обновлением экземпляра микрошлюза токены, подписанные последним ключом, отклонялись до тех пор, пока все экземпляры не получали последний открытый ключ.
В случаях, когда существует несколько экземпляров микрошлюза, задержка с открытым ключом иногда приводила к периодическим ошибкам выполнения со статусом 403, поскольку проверка токена проходила успешно на одном экземпляре, но завершалась неудачей на другом до тех пор, пока не были обновлены все экземпляры.
Начиная с версии 3.1.6, в команде rotatekey появился новый флаг, позволяющий указать задержку для вступления в силу нового закрытого ключа, что дает время всем экземплярам микрошлюза обновиться и получить новый открытый ключ. Новый флаг называется --nbf , что означает «не раньше». Этот флаг принимает целочисленное значение — количество минут задержки.
В следующем примере задержка установлена на 15 минут:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
Обратите внимание, что рекомендуется устанавливать задержку больше, чем значение параметра конфигурации config_change_poll_internal , которое по умолчанию составляет 10 минут. См. также атрибуты edgemicro .
Фильтрация загруженных прокси-серверов
По умолчанию Edge Microgateway загружает все прокси-серверы в вашей организации Edge, имена которых начинаются с префикса "edgemicro_". Вы можете изменить это значение по умолчанию, чтобы загружать прокси-серверы, имена которых соответствуют определенному шаблону.
- Откройте файл конфигурации Edge Micro:
~/.edgemicro/org-env-config.yaml - Добавьте элемент proxyPattern в раздел edge_config. Например, следующий шаблон загрузит прокси-серверы, такие как edgemicro_foo, edgemicro_fast и edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Указание продуктов без API-прокси
В Apigee Edge можно создать API-продукт, который не содержит никаких API-прокси. Такая конфигурация продукта позволяет использовать связанный с этим продуктом API-ключ с любым прокси-сервером, развернутым в вашей организации. Начиная с версии 2.5.4, Edge Microgateway поддерживает эту конфигурацию продукта.
Отладка и устранение неполадок
Подключение к отладчику
Вы можете запустить Edge Microgateway с отладчиком, например, node-inspector . Это полезно для поиска и устранения неисправностей и отладки пользовательских плагинов.
- Перезапустите Edge Microgateway в режиме отладки. Для этого добавьте
DEBUG=*в начало командыstart:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Для вывода отладочной информации в файл можно использовать следующую команду:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Запустите отладчик и настройте его на прослушивание порта, указанного в настройках отладки.
- Теперь вы можете пошагово просматривать код Edge Microgateway, устанавливать точки останова, отслеживать выражения и так далее.
Вы можете указать стандартные флаги Node.js, относящиеся к режиму отладки. Например, --nolazy помогает при отладке асинхронного кода.
Проверка файлов журналов
Если у вас возникли проблемы, обязательно изучите файлы журналов, чтобы получить подробную информацию о выполнении и об ошибках. Более подробные сведения см. в разделе «Управление файлами журналов» .
Использование безопасности по ключу API
Ключи API предоставляют простой механизм аутентификации клиентов, отправляющих запросы к Edge Microgateway. Вы можете получить ключ API, скопировав значение ключа потребителя (также называемого идентификатором клиента) из продукта Apigee Edge, который включает прокси-сервер аутентификации Edge Microgateway.
Кэширование ключей
Ключи API обмениваются на токены носителя, которые кэшируются. Вы можете отключить кэширование, установив заголовок Cache-Control: no-cache во входящих запросах для Edge Microgateway.
Использование ключа API
Вы можете передать ключ API в запросе API либо в качестве параметра запроса, либо в заголовке. По умолчанию заголовок и имя параметра запроса имеют вид x-api-key .
Пример параметра запроса:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Пример заголовка:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Настройка имени ключа API
По умолчанию для заголовка ключа API и параметра запроса используется имя x-api-key . Вы можете изменить это значение по умолчанию в файле конфигурации, как описано в разделе «Внесение изменений в конфигурацию» . Например, чтобы изменить имя на apiKey :
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
В этом примере имя параметра запроса и имени заголовка изменено на apiKey . Имя x-api-key больше не будет работать ни в одном из случаев. См. также раздел «Внесение изменений в конфигурацию» .
Например:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Для получения дополнительной информации об использовании ключей API с прокси-запросами см. Secure Edge Microgateway .
Включить коды ответа вышестоящего источника
По умолчанию плагин oauth возвращает только коды ошибок 4xx, если ответ не имеет статуса 200. Вы можете изменить это поведение, чтобы он всегда возвращал точный код 4xx или 5xx в зависимости от ошибки.
Чтобы включить эту функцию, добавьте свойство oauth.useUpstreamResponse: true в конфигурацию вашего Edge Microgateway. Например:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Использование безопасности на основе токенов OAuth2
В этом разделе объясняется, как получить токены доступа OAuth2 и токены обновления. Токены доступа используются для выполнения безопасных вызовов API через микрошлюз. Токены обновления используются для получения новых токенов доступа.
Как получить токен доступа
В этом разделе объясняется, как использовать прокси-сервер edgemicro-auth для получения токена доступа.
Также вы можете получить токен доступа, используя команду CLI edgemicro token . Подробную информацию о CLI см. в разделе «Управление токенами» .
API 1: Отправка учетных данных в качестве параметров тела запроса.
Замените названия вашей организации и среды в URL-адресе, а значения идентификатора потребителя (Consumer Id) и секретного ключа потребителя (Consumer Secret), полученные из приложения разработчика на Apigee Edge, на параметры client_id и client_secret в теле запроса:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Отправка учетных данных в заголовке Basic Auth.
Отправляйте учетные данные клиента в заголовке Basic Authentication, а grant_type в качестве параметра формы. Эта форма команды также обсуждается в RFC 6749: The OAuth 2.0 Authorization Framework .
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Пример выходных данных
API возвращает JSON-ответ. Обратите внимание, что между свойствамиtoken и access_token нет никакой разницы. Вы можете использовать любой из них. { "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
Как получить токен обновления
Для получения токена обновления выполните вызов API к конечной точке /token прокси-сервера edgemicro-auth . ОБЯЗАТЕЛЬНО используйте тип предоставления доступа password для этого вызова API. Следующие шаги описывают весь процесс.
- Получите токен доступа и обновления с помощью API
/token. Обратите внимание, что тип предоставления доступа —password:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'API возвращает токен доступа и токен обновления. Ответ выглядит примерно так:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - Теперь вы можете использовать токен обновления для получения нового токена доступа, вызвав конечную точку
/refreshтого же API. Например:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'API возвращает новый токен доступа. Ответ выглядит примерно так:
{ "token": "your-new-access-token" }
Постоянный мониторинг
Forever — это инструмент для Node.js, который автоматически перезапускает приложение Node.js в случае сбоя или ошибки в процессе. Edge Microgateway имеет файл forever.json , в котором можно настроить количество перезапусков и интервалы их выполнения. Этот файл настраивает службу Forever под названием forever-monitor , которая управляет Forever программно.
Файл forever.json можно найти в корневом каталоге установки Edge Microgateway. См. раздел «Где установлен Edge Microgateway» . Подробную информацию о параметрах конфигурации см. в документации forever-monitor .
Команда edgemicro forever включает флаги, позволяющие указать расположение файла forever.json (флаг -f ) и запустить/остановить процесс мониторинга Forever (флаг -a ). Например:
edgemicro forever -f ~/mydir/forever.json -a start
Для получения более подробной информации см. раздел « Мониторинг Forever» в справочнике командной строки.
Указание конечной точки файла конфигурации
Если вы используете несколько экземпляров Edge Microgateway, вам может потребоваться управлять их конфигурациями из одного места. Это можно сделать, указав HTTP-адрес, куда Edge Micro сможет загрузить свой файл конфигурации. Этот адрес можно указать при запуске Edge Micro с помощью флага -u .
Например:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
где конечная точка mgconfig возвращает содержимое вашего конфигурационного файла. Этот файл по умолчанию находится в ~/.edgemicro и имеет следующее название: org-env-config.yaml .
Отключение буферизации данных TCP-соединения
С помощью атрибута конфигурации nodelay можно отключить буферизацию данных для TCP-соединений, используемых Edge Microgateway.
По умолчанию TCP-соединения используют алгоритм Нейгла для буферизации данных перед их отправкой. Установка nodelay в true отключает это поведение (данные будут немедленно отправляться каждый раз при вызове socket.write() `). См. также документацию Node.js для получения более подробной информации.
Чтобы включить nodelay , отредактируйте конфигурационный файл Edge Micro следующим образом:
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Running Edge Microgateway в автономном режиме
Вы можете запустить Edge Microgateway, полностью отключившись от любых зависимостей Apigee Edge. Этот сценарий, называемый автономным режимом, позволяет запускать и тестировать Edge Microgateway без подключения к Интернету.
В автономном режиме следующие функции не работают, поскольку требуют подключения к Apigee Edge:
- OAuth и ключ API
- Квота
- Аналитика
С другой стороны, пользовательские плагины и защита от скачков нагрузки работают нормально, поскольку не требуют подключения к Apigee Edge. Кроме того, новый плагин под названием extauth позволяет авторизовать вызовы API к микрошлюзу с помощью JWT в автономном режиме.
Настройка и запуск шлюза
Для запуска Edge Microgateway в автономном режиме:
- Создайте конфигурационный файл со следующим именем:
$HOME/.edgemicro/ $ORG-$ENV -config.yamlНапример:
vi $HOME/.edgemicro/foo-bar-config.yaml
- Вставьте следующий код в файл:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Экспортируйте следующую переменную среды со значением "1":
export EDGEMICRO_LOCAL=1
- Выполните следующую команду
start, указав значения для создания локального прокси-сервера:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Где:
- $ORG — это имя организации, которое вы использовали в имени файла конфигурации.
- $ENV — это имя переменной среды, которое вы использовали в имени файла конфигурации.
- $LOCAL_PROXY_NAME — это имя локального прокси-сервера, который будет создан. Вы можете использовать любое имя по своему желанию.
- $LOCAL_PROXY_VERSION — это номер версии прокси-сервера.
- $TARGET_URL — это URL-адрес целевого объекта прокси-сервера. ( Целевой объект — это служба, к которой обращается прокси-сервер.)
- $BASE_PATH — это базовый путь к прокси-серверу. Это значение должно начинаться с косой черты. Для корневого базового пути укажите только косую черту; например, "/".
Например:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Проверьте конфигурацию.
curl http://localhost:8000/echo { "error" : "missing_authorization" }Поскольку плагин
extauthнаходится в файлеfoo-bar-config.yaml, вы получаете ошибку "missing_authorization". Этот плагин проверяет наличие JWT, который должен присутствовать в заголовке Authorization вызова API. В следующем разделе вы получите JWT, который позволит выполнять вызовы API без этой ошибки.
Пример: Получение токена авторизации
В следующем примере показано, как получить JWT из конечной точки JWT Edge Microgateway на Apigee Edge ( edgemicro-auth/jwkPublicKeys ). Эта конечная точка развертывается при стандартной настройке Edge Microgateway. Чтобы получить JWT из конечной точки Apigee, необходимо сначала выполнить стандартную настройку Edge Microgateway и подключиться к Интернету. Конечная точка Apigee используется здесь только в качестве примера и не является обязательной. При желании вы можете использовать другую конечную точку для получения JWT-токена. В этом случае вам потребуется получить JWT, используя API, предоставляемый для этой конечной точки.
Следующие шаги описывают, как получить токен с помощью конечной точки edgemicro-auth/jwkPublicKeys :.
- Для развертывания прокси-сервера
edgemicro-authв вашей организации/среде на Apigee Edge необходимо выполнить стандартную настройку и конфигурацию Edge Microgateway. Если вы уже выполняли этот шаг ранее, повторять его не нужно. - Если вы развернули Edge Microgateway в облаке Apigee, вам необходимо подключение к Интернету, чтобы получить JWT от этой конечной точки.
- Остановить микрошлюз Edge:
edgemicro stop
- В созданном вами ранее конфигурационном файле (
$HOME/.edgemicro/ org - env-config.yaml) укажите атрибутextauth:publickey_urlна конечную точкуedgemicro-auth/jwkPublicKeysв вашей организации/среде Apigee Edge. Например:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
- Перезапустите Edge Microgateway, как делали ранее, используя имена org/env, которые вы указывали в имени файла конфигурации. Например:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Получите JWT-токен из конечной точки авторизации. Поскольку вы используете конечную точку
edgemicro-auth/jwkPublicKeys, вы можете использовать следующую команду CLI:
You can generate a JWT for Edge Microgateway using the edgemicro token command or an API. For example:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Где:
- your_org is the name of your Apigee organization for which you previously configured Edge Microgateway.
- your_env is an environment in the organization.
- The
ioption specifies the Consumer Key from a developer app that has a product that includes theedgemicro-authproxy. - The
soption specifies the Consumer Secret from a developer app that has a product that includes theedgemicro-authproxy.
This command asks Apigee Edge to generate a JWT that can then be used to verify API calls.
See also Generate a token .Test the standalone configuration
To test the configuration, call the API with the token added in the Authorization header as follows:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
Пример:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Пример выходных данных:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Using local proxy mode
In local proxy mode, Edge Microgateway does not require a microgateway-aware proxy to be deployed on Apigee Edge. Instead, you configure a "local proxy" by providing a local proxy name, basepath, and target URL when you start the microgateway. API calls to the microgateway are then sent to the target URL of the local proxy. In all other respects, local proxy mode works exactly the same as running Edge Microgateway in its normal mode. Authentication works the same, as do spike arrest and quota enforcement, custom plugins, and so on.
Use case and example
Local proxy mode is useful when you only need to associate one single proxy with an Edge Microgateway instance. For example, you can inject Edge Microgateway into Kubernetes as a sidecar proxy, where a microgateway and a service each run in a single pod, and where the microgateway manages traffic to and from its companion service. The following figure illustrates this architecture where Edge Microgateway functions as a sidecar proxy in a Kubernetes cluster. Each microgateway instance talks only to a single endpoint on its companion service:

A benefit of this style of architecture is that Edge Microgateway provides API management for individual services deployed to a container environment, such as a Kubernetes cluster.
Configuring local proxy mode
To configure Edge Microgateway to run in local proxy mode, follow these steps:
- Run
edgemicro initto set up your local configuration environment, exactly as you would in a typical Edge Microgateway setup. See also Configure Edge Microgateway . - Run
edgemicro configure, as you would in a typical Edge Microgateway setup procedure. For example:edgemicro configure -o your_org -e your_env -u your_apigee_username
This command deploys the edgemicro-auth policy to Edge and returns a key and secret that you will need to start the microgateway. If you need help, see Configure Edge Microgateway .
- On Apigee Edge, create an API product and with the following mandatory configuration requirements (you can manage all other configurations as you wish):
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
edgemicro configure. - You must provide a resource path. Apigee recommends adding this path to the product:
/**. To learn more, see Configuring the behavior of the resource path . See also Create API products in the Edge documentation.
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
On Apigee Edge, create a developer, or you can use an existing developer if you wish. For help, see Adding developers using the Edge management UI .
- On Apigee Edge, create a developer app. You must add the API product you just created to the app. For help, see Registering an app in the Edge management UI .
- On the machine where Edge Microgateway is installed, export the following environment variable with the value "1".
export EDGEMICRO_LOCAL_PROXY=1
- Execute the following
startcommand:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathГде:
- your_org is your Apigee organization.
- your_environment is an environment in your organization.
- your_key is the key that was returned when you ran
edgemicro configure. - your_secret is the secret that was returned when you ran
edgemicro configure. - local_proxy_name is the name of the local proxy that will be created.
- local_proxy_version is the version number for the proxy.
- target_url is the URL for the target of the proxy (the service the proxy will call).
- base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".
Например:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Testing the configuration
You can test the local proxy configuration by calling the proxy endpoint. For example, if you specified a basepath of /echo , you can call the proxy as follows:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}This initial API call produced an error because you did not provide a valid API key. You can find the key in the Developer app you created previously. Open the app in the Edge UI, copy the Consumer Key, and use that key as follows:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
Например:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Пример выходных данных:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Using the synchronizer
This section explains how to use the synchronizer, an optional feature that improves the resiliency of Edge Microgteway by allowing it to retrieve configuration data from Apigee Edge and write it to a local Redis database. With a synchronizer instance running, other Edge Microgateway instances running on different nodes can retrieve their configuration directly from this database.
The syncrhonizer feature is currently supported to work with Redis 5.0.x.
What is the synchronizer?
The synchronizer provides a level of resilience for Edge Microgateway. It helps ensure that every instance of Edge Microgateway uses the same configuration, and that in the event of an internet disruption, Edge Microgateway instances can start up and run properly.
By default, Edge Microgateway instances must be able to communicate with Apigee Edge to retrieve and refresh their configuration data, such as API proxy and API product configurations. If the internet connection with Edge is disrupted, microgateway instances can continue to function because the latest configuration data is cached. However, new microgateway instances cannot start up without a clear connection. Furthermore, it is possible for an internet disruption to result in one or more microgateway instances running with configuration information that is out of sync with other instances.
The Edge Microgateway synchronizer provides an alternative mechanism for Edge Microgateway instances to retrieve configuration data that they require to start up and process API proxy traffic. The configuration data retrieved from calls to Apigee Edge include: the jwk_public_keys call, the jwt_public_key call, the bootstrap call, and the API products call. The synchronizer makes it possible for all of the Edge Microgateway instances running on different nodes to start up properly and stay in sync even if the internet connection between Edge Microgateway and Apigee Edge is disrupted.
The synchronizer is a specially configured instance of Edge Microgateway. Its only purpose is to poll Apigee Edge (the timing is configurable), retrieve configuration data, and write it to a local Redis database. The synchronizer instance itself cannot process API proxy traffic. Other instances of Edge Microgateway running on different nodes can be configured to retrieve configuration data from the Redis database rather than from Apigee Edge. Because all microgateway instances pull their configuration data from the local database, they can start up and process API requests even in the event of an internet disruption.
Configuring a synchronizer instance
Add the following configuration to the org-env /config.yaml file for the Edge Microgateway installation that you wish to use as the synchronizer:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
Например:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| Вариант | Описание |
|---|---|
redisHost | The host where your Redis instance is running. Default: 127.0.0.1 |
redisPort | The port of the Redis instance. Default: 6379 |
redisDb | The Redis DB to use. Default: 0 |
redisPassword | Your database password. |
Finally, save the configuration file and start the Edge Microgateway instance. It will begin polling Apigee Edge and storing downloaded configuration data in the Redis database.
Configuring regular Edge Microgateway instances
With the synchronizer running, you can configure additional Edge Microgateway nodes to run regular microgateway instances that process API proxy traffic. However, you configure these instances to obtain their configuration data from the Redis database rather than from Apigee Edge.
Add the following configuration to each additional Edge Microgateway node's org-env /config.yaml file. Note that the synchronizerMode property is set to 0 . This property sets the instance to operate as a normal Edge Microgateway instance that processes API proxy traffic, and the instance will obtain its configuration data from the Redis database.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Например:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Configuration properties
The following configuration properties have been added to support the use of the synchronizer:
| Атрибут | Ценности | Описание |
|---|---|---|
edge_config.synchronizerMode | 0 or 1 | If 0 (the default) Edge Microgateway operates in its standard mode. If 1, start the Edge Microgateway instance to operate as a synchronizer. In this mode, the instance will pull configuration data from Apigee Edge and store it in a local Redis database. This instance is not able to process API proxy requests; its only purpose is to poll Apigee Edge for configuration data and write it to the local database. You must then configure other microgateway instances to read from the database. |
edge_config.redisBasedConfigCache | true or false | If true, the Edge Microgateway instance fetches its configuration data from the Redis database instead of from Apigee Edge. The Redis database must be the same one that the synchronizer is configured to write to. If the Redis database is unavailable or if the database is empty, the microgateway looks for an existing cache-config.yaml file for its configuration.If false (the default), the Edge Microgateway instance fetches configuration data from Apigee Edge as usual. |
edgemicro.config_change_poll_interval | Time interval, in seconds | Specifies the polling interval for the synchronizer to pull data from Apigee Edge. |
Configuring exclude URLs for plugins
You can configure the microgateway to skip the processing of plugins for specified URLs. You can configure these "exclude" URLs globally (for all plugins) or for specific plugins.
Например:
...
edgemicro:
...
plugins:
excludeUrls: '/hello,/proxy_one' # global exclude urls
sequence:
- oauth
- json2xml
- quota
json2xml:
excludeUrls: '/hello/xml' # plugin level exclude urls
...In this example, plugins will not process incoming API proxy calls with the paths /hello or /proxy_one . In addition, the json2xml plugin will be skipped for APIs with /hello/xml in their path.
Setting configuration attributes with environment variable values
You can specify environment variables using tags in the configuration file. The specified environment variable tags are replaced by the actual environment variable values. Replacements are stored in memory only and not stored in the original configuration or cache files.
In this example, the attribute key is replaced by the value of the TARGETS_SSL_CLIENT_KEY environment variable, and so on.
targets:
- ssl:
client:
key: <E>TARGETS_SSL_CLIENT_KEY</E>
cert: <E>TARGETS_SSL_CLIENT_CERT</E>
passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>In this example, the <n> tag is used to indicate an integer value. Only positive integers are supported.
edgemicro: port: <E><n>EMG_PORT</n></E>
In this example, the <b> tag is used to indicate a boolean ( that is, true or false) value.
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>