Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Как получить ключ API
В следующем примере объясняется, как получить ключ API, который можно использовать для проверки вызовов API к целевому сервису, проксируемому через Apigee Adapter for Envoy.
1. Войдите в Apigee.
- Откройте пользовательский интерфейс Apigee в браузере.
- После входа в пользовательский интерфейс выберите ту же организацию, которую вы использовали для настройки адаптера Apigee для Envoy.
2. Создайте разработчика.
Для тестирования можно использовать уже существующего разработчика или создать нового следующим образом:
- В боковом навигационном меню выберите «Опубликовать» > «Разработчики» .
- Click + Developer.
- Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете использовать любое имя/адрес электронной почты разработчика по своему усмотрению.
3. Создайте API-продукт
Следуйте приведенному ниже примеру создания продукта. См. также раздел «О настройке продукта API» .
- В боковом навигационном меню выберите «Публикация» > «Продукты API» .
- Click + API Product .
- Заполните страницу с подробными сведениями о товаре следующим образом.
- В разделе « Цели удаленной службы Apigee» нажмите «Добавить цель удаленной службы Apigee» .
- В диалоговом окне «Целевой объект удаленной службы Apigee» добавьте следующие значения:
Атрибут Ценить Описание Целевое имя Введите название целевого сервиса. Например: httpbin.orgЦелевая конечная точка, перед которой работает прокси-сервер Envoy. Путь Введите путь к ресурсу в соответствующей службе. Например: /headers.Путь запроса для сопоставления с целевой конечной точкой. Вызовы API-прокси по этому пути будут соответствовать данному API-продукту. - Нажмите « Сохранить ».
| Поле | Ценить |
|---|---|
| Имя | httpbin-product |
| Отображаемое имя | httpbin product |
| Среда | your_environment Укажите среду, которую вы использовали при настройке адаптера Apigee для Envoy. |
| Доступ | Private |
| Квота | 5 запросов каждые 1 минуту См. также Квота . |
4. Создайте приложение для разработчиков.
- В боковом навигационном меню выберите «Публикация» > «Приложения» .
- Click + App .
- Заполните страницу приложения разработчика следующим образом. Не сохраняйте изменения, пока не получите соответствующее указание.
- Далее добавьте API-продукт в приложение:
- В разделе «Учетные данные» нажмите « + Добавить продукт» и выберите только что настроенный продукт: httpbin-product .
- Нажмите «Создать» .
- В разделе «Учетные данные» нажмите «Показать» рядом с пунктом «Ключ» .
- Copy the value of the Consumer Key. This value is the API key that you will use to make API calls to the
httpbinservice.
О продуктах API
API-продукты являются основной точкой управления для удаленной службы Apigee. При создании API-продукта и его привязке к целевой службе вы создаете политику, которая будет применяться ко всем запросам, которые вы настроите для обработки в вашем адаптере Apigee для Envoy.
Определение продукта API
При определении API-продукта в Apigee можно задать ряд параметров, которые будут использоваться для обработки запросов:
- Цель
- Путь запроса
- Квота
- Области действия OAuth
Цели удаленного обслуживания
Определение API-продукта будет применяться к запросу, если запрос соответствует как целевой привязке (например,
httpbin.org), так и пути запроса (например/httpbin). Список потенциальных целей хранится в качестве атрибута API-продукта.По умолчанию служба Apigee Remote Service проверяет специальный заголовок Envoy
:authority (host)на соответствие списку целевых объектов; однако ее можно настроить на использование других заголовков.Путь к ресурсу API
Введенный путь соответствует следующим правилам:
- Одиночный слэш (
/) сам по себе соответствует любому пути. -
*допустимо в любом месте и соответствует сегменту (между косыми чертами). -
**это допустимый символ в конце строки, соответствующий любому содержимому до конца строки.
Квота
Квота определяет количество запросов, которые приложение может отправить в API в течение часа, дня, недели или месяца. Когда приложение достигает лимита квоты, последующие вызовы API отклоняются.
Варианты использования квотКвоты позволяют ограничить количество запросов, которые клиент может отправить к сервису за определенный промежуток времени. Квоты часто используются для обеспечения соблюдения бизнес-контрактов или соглашений об уровне обслуживания (SLA) с разработчиками и партнерами, а не для оперативного управления трафиком. Например, квота может использоваться для ограничения трафика для бесплатного сервиса, предоставляя при этом полный доступ платным клиентам.
Квота определяется в API-продукте.Параметры квот настраиваются в API-продуктах. Например, при создании API-продукта можно дополнительно установить допустимый лимит квоты, единицу времени и интервал.

Поскольку ключи API сопоставляются с продуктами API, при каждой проверке ключа API соответствующий счетчик квоты может быть уменьшен (если квота определена в соответствующем продукте).
В отличие от среды выполнения Apigee, квоты, введенные в определении продукта, автоматически применяются удаленной службой Apigee. Если запрос авторизован, он будет учитываться в рамках разрешенной квоты.
Там, где сохраняются квотыКвоты поддерживаются и проверяются локально процессом удаленной службы и асинхронно с Apigee Runtime. Это означает, что квоты не являются точными и могут быть превышены, если у вас более одной удаленной службы, поддерживающей квоту. Если соединение с Apigee Runtime прерывается, локальная квота будет продолжать действовать как автономная квота до тех пор, пока не будет восстановлено соединение с Apigee Runtime.
Области действия OAuth
Если вы используете токены JWT, вы можете ограничить их использование подмножествами разрешенных областей действия OAuth. Области действия, назначенные вашему выданному токену JWT, будут проверяться на соответствие областям действия API-продукта.
О приложениях для разработчиков
После настройки API-продуктов вы создадите приложение, связанное с разработчиком. Приложение позволит клиенту получить доступ к соответствующим API-продуктам с помощью API-ключа или JWT-токена.
Использование аутентификации на основе JWT.
Вместо ключа API можно использовать JWT-токен для выполнения аутентифицированных вызовов API-прокси. В этом разделе объясняется, как использовать команду
apigee-remote-service-cli tokenдля создания, проверки и ротации JWT-токенов.Обзор
Проверка и аутентификация JWT осуществляется Envoy с помощью собственногофильтра аутентификации JWT .
После аутентификации фильтр Envoy
ext-authzотправляет заголовки запроса и JWT вapigee-remote-service-envoy. Он сопоставляет утвержденияapi_product_listиscopeиз JWT с продуктами API Apigee, чтобы авторизовать его для целевого объекта запроса.Создание JWT-токенов Apigee
JWT-токены Apigee можно создавать с помощью интерфейса командной строки:
$CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
Или используя стандартную конечную точку для ввода токена OAuth. Пример использования Curl:
curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"Использование токена JWT
Получив токен, вы просто передаете его в Envoy в заголовке Authorization. Пример:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
JWT token failure
Отказ посланника
Если Envoy отклонит токен, вы можете увидеть сообщение следующего вида:
Jwks remote fetch is failed
В таком случае убедитесь, что в разделе
remote_jwksвашей конфигурации Envoy указан действительный URI, что он доступен для Envoy и что вы правильно настроили сертификаты при установке прокси-сервера Apigee. Вы должны иметь возможность напрямую вызвать URI с помощью GET-запроса и получить действительный JSON-ответ.Пример:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Другие сообщения от Envoy могут выглядеть следующим образом:
- «Присутствие зрителей в Jwt запрещено»
- "Эмитент JWT не настроен"
Эти параметры заданы в настройках Envoy, и вам, возможно, потребуется их изменить.
Проверить токен
Вы можете использовать интерфейс командной строки для проверки своего токена. Пример.
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
или
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Отладка
См. раздел "Недействительный ключ API" .Ведение журнала
Вы можете настроить уровень логирования для службы $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Все сообщения в лог отправляются в стандартный вывод и стандартную ошибку.
Элемент Необходимый Описание -l, --log-level Допустимые уровни: debug, info, warn, error. Регулирует уровень ведения журнала. По умолчанию: info. -j, --json-log Выводит лог-файлы в формате JSON. Envoy обеспечивает ведение журналов. Для получения дополнительной информации см. следующие ссылки на документацию Envoy:
Использование сетевого прокси
HTTP-прокси можно установить, используя переменные среды HTTP_PROXY и HTTPS_PROXY в окружении исполняемого файла apigee-remote-service-envoy. При их использовании также можно использовать переменную среды NO_PROXY для исключения определенных хостов из рассылки через прокси.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Помните, что прокси-сервер должен быть доступен из apigee-remote-service-envoy.
О метриках и аналитике
Доступна конечная точка для сбора метрик Prometheus по адресу
:5001/metrics. Вы можете настроить этот номер порта. См. файл конфигурации .Аналитика Envoy
По следующим ссылкам вы найдете информацию о получении аналитических данных прокси-сервера Envoy:
Аналитика Istio
По следующим ссылкам вы найдете информацию о получении аналитических данных прокси-сервера Envoy:
Apigee analytics
Apigee Remote Service for Envoy отправляет статистику запросов в Apigee для аналитической обработки. Apigee сообщает об этих запросах под соответствующим именем продукта API.
Для получения информации об аналитике Apigee см. раздел «Обзор аналитических сервисов» .
Поддержка многопользовательской среды
Теперь вы можете включить адаптер для обслуживания нескольких сред в рамках организации Apigee. Эта функция позволяет использовать один адаптер Apigee для Envoy, связанный с одной организацией Apigee, для обслуживания нескольких сред. До этого изменения один адаптер всегда был привязан к одной среде Apigee.
Для настройки поддержки нескольких сред измените значение параметра
tenant:env_nameна*в файлеconfig.yaml. Например:- Откройте файл
config.yamlв текстовом редакторе. - Измените значение параметра
tenant.env_nameна*. Например:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://myorg-myenv.apigee.net/remote-service org_name: apigee-docs-hybrid-a env_name: * allow_unverified_ssl_cert: true analytics: collection_interval: 10s auth: jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token - Сохраните файл.
- Примените файл:
kubectl apply -f $CLI_HOME/config.yaml
При настройке многосредового режима необходимо также настроить Envoy для отправки соответствующего значения среды адаптеру, добавив следующие метаданные в раздел
virtual_hosts:routesфайлаenvoy-config.yaml. Например:- Сгенерируйте файл
envoy-config.yamlс помощью командной строки. Например:$CLI_HOME/apigee-remote-service-cli samples create \ -t envoy-1.16 -c ./config.yaml --out myconfigs
- Откройте сгенерированный файл (он называется
envoy-config.yaml). - Добавьте следующие метаданные в раздел
virtual_hostилиroutesфайла:typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: testСледующий пример иллюстрирует конфигурацию
virtual_hostс несколькими определенными маршрутами, где каждый маршрут направляет трафик в определенную среду:filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress_http route_config: virtual_hosts: - name: default domains: "*" routes: - match: { prefix: /test } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test - match: { prefix: /prod } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: prod - Повторите последний шаг, чтобы добавить дополнительные среды по мере необходимости.
- Сохраните файл и примените его.
Настройка mTLS между адаптером и средой выполнения Apigee.
Для использования mTLS между адаптером и средой выполнения Apigee вы можете указать клиентские TLS-сертификаты в разделе
tenantфайлаconfig.yamlадаптера. Это изменение применяется ко всем поддерживаемым платформам Apigee. Оно также включает mTLS для аналитики на платформе Apigee Edge for Private Cloud. Например:tenant: tls: ca_file: path/ca.pem cert_file: path/cert.pem key_file: path/key.pem allow_unverified_ssl_cert: false
| Имя | httpbin-app |
| Отображаемое имя | httpbin app |
| Разработчик | Выберите разработчика, которого вы создали ранее, или выберите любого разработчика из списка. |