Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Как получить ключ API
В приведенном ниже примере показано, как получить ключ API, который можно использовать для проверки вызовов API к целевому сервису, проксируемому через адаптер Apigee для Envoy.
1. Как войти в Apigee
- Откройте интерфейс Apigee в браузере.
- В интерфейсе выберите ту же организацию, которую использовали для настройки адаптера Apigee для Envoy.
2. Создание разработчика
Вы можете использовать существующего разработчика для тестирования или создать нового, выполнив следующие действия:
- В меню навигации слева выберите Публикация > Разработчики.
- Нажмите + Разработчик.
- Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете указать любое имя разработчика и адрес электронной почты.
3. Создание продукта API
Следуйте примеру создания товара ниже. Дополнительная информация приведена в статье О конфигурации продукта API.
- В меню навигации слева выберите Publish > API Products (Публикация > Продукты API).
- Нажмите + Продукт API.
- Заполните страницу "Сведения о товаре" следующим образом:
- В разделе Цели удаленного сервиса Apigee нажмите Добавить цель удаленного сервиса Apigee.
- В диалоговом окне Apigee remote service target (Цель удаленного сервиса Apigee) добавьте следующие значения:
Атрибут Значение Описание Название цели Введите название целевого сервиса. Пример: httpbin.org.Целевая конечная точка, перед которой находится прокси-сервер Envoy. Путь Введите путь к ресурсу в сервисе, который нужно сопоставить. Пример: /headers.Путь запроса, который должен совпадать с целевой конечной точкой. Вызовы прокси-сервера API к этому пути будут сопоставляться с этим продуктом API. - Нажмите Сохранить.
| Поле | Значение |
|---|---|
| Название | httpbin-product
|
| Отображаемое название | httpbin product
|
| Среда | your_environment
Укажите среду, которую вы использовали при инициализации адаптера Apigee для Envoy. |
| Доступ | Private
|
| Quota | 5 запросов в минуту
См. также Quota. |
4. Создание приложения разработчика
- В меню навигации слева выберите Публикация > Приложения.
- Нажмите + Приложение.
- Заполните страницу приложения разработчика следующим образом: Не нажимайте "Сохранить", пока не получите инструкции.
- Затем добавьте продукт API в приложение:
- В разделе "Учетные данные" нажмите + Добавить продукт и выберите продукт, который вы только что настроили: httpbin-product.
- Нажмите Создать.
- В разделе "Учетные данные" нажмите Показать рядом с пунктом Ключ.
- Скопируйте значение ключа потребителя. Это ключ API, который вы будете использовать для вызовов API к сервису
httpbin.
Продукты API
Продукты API – это основная точка управления для удаленного сервиса Apigee. Когда вы создаете продукт API и связываете его с целевым сервисом, вы создаете правило, которое будет применяться ко всем запросам, которые вы настроили для обработки адаптером Apigee для Envoy.
Определение продукта API
При определении продукта API в Apigee можно задать ряд параметров, которые будут использоваться для оценки запросов:
- Цель
- Путь для запроса
- Квота
- Области действия OAuth
Целевые показатели удаленного обслуживания
Определение продукта API применяется к запросу, если запрос соответствует целевой привязке (например,
httpbin.org) и пути запроса (например,/httpbin). Список возможных целей хранится как атрибут в продукте API.По умолчанию удаленный сервис Apigee проверяет специальный заголовок
:authority (host)Envoy по списку целевых объектов, но его можно настроить на использование других заголовков.Путь к ресурсу API
Указанный путь соответствует следующим правилам:
- Один косая черта (
/) соответствует любому пути. *можно использовать в любом месте, и он будет соответствовать любому символу в сегменте (между косыми чертами).**действителен в конце и соответствует любому символу до конца строки.
Квота
Квота определяет количество запросов, которые приложение может отправлять в API в течение часа, дня, недели или месяца. Когда приложение достигает лимита квоты, последующие вызовы API отклоняются.
Примеры использования квотКвоты позволяют ограничить количество запросов, которые клиент может отправлять сервису за определенный период времени. Квоты часто используются для обеспечения соблюдения коммерческих договоров или соглашений об уровне обслуживания с разработчиками и партнерами, а не для управления рабочим трафиком. Например, квота может использоваться для ограничения трафика бесплатного сервиса, при этом предоставляя полный доступ платным клиентам.
Квота определена в продукте APIПараметры квоты настраиваются в продуктах API. Например, при создании продукта API можно задать допустимый лимит квоты, единицу времени и интервал.
Поскольку ключи API сопоставляются с продуктами API, при каждой проверке ключа API соответствующий счетчик квоты может быть уменьшен (если квота определена в связанном продукте).
В отличие от среды выполнения Apigee, квоты, указанные в определении продукта, автоматически применяются удаленным сервисом Apigee. Если запрос авторизован, он будет учитываться в разрешенной квоте.
Где хранятся квотыКвоты поддерживаются и проверяются локально процессом удаленного сервиса и асинхронно поддерживаются средой выполнения Apigee. Это означает, что квоты неточные и, скорее всего, будут превышены, если у вас несколько удаленных сервисов, поддерживающих квоту. Если подключение к среде выполнения Apigee будет нарушено, локальная квота продолжит действовать как отдельная квота, пока не восстановится подключение к среде выполнения Apigee.
Области действия OAuth
Если вы используете токены JWT, то можете ограничить их подмножествами разрешенных областей действия OAuth. Области действия, назначенные выданному JWT-токену, будут сопоставлены с областями действия продукта API.
О приложениях разработчиков
После того как вы настроите продукты API, создайте приложение, связанное с разработчиком. Приложение предоставляет клиенту доступ к связанным продуктам API с помощью ключа API или токена JWT.
Использование аутентификации на основе JWT
Вы можете использовать токен JWT для выполнения аутентифицированных вызовов прокси-сервера API вместо ключа API. В этом разделе рассказывается, как использовать команду
apigee-remote-service-cli tokenдля создания, проверки и ротации токенов JWT.Обзор
Проверка и аутентификация JWT выполняется Envoy с помощью фильтра аутентификации JWT.
После аутентификации фильтр Envoy
ext-authzотправляет заголовки запроса и JWT вapigee-remote-service-envoy. Он сопоставляет утвержденияapi_product_listиscopeJWT с продуктами 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
Отклонение Envoy
Если Envoy отклонит токен, вы можете увидеть сообщение, например:
Jwks remote fetch is failed
Если это так, убедитесь, что в конфигурации Envoy в разделе
remote_jwksуказан действительный URI, доступный для Envoy, и что при установке прокси Apigee вы правильно задали сертификаты. Вы должны иметь возможность напрямую вызвать URI с помощью вызова GET и получить действительный ответ JSON.Пример:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Другие письма от Envoy могут выглядеть так:
- "Audiences in Jwt are not allowed" (Аудитории в JWT не разрешены)
- "Jwt issuer is not configured" (Издатель 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. Все журналы отправляются в stdout и stderr.
Элемент Обязательно Описание -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
Удаленный сервис Apigee для 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
Вы можете предоставить клиентские TLS-сертификаты в разделе
tenantфайлаconfig.yamlадаптера, чтобы использовать mTLS между адаптером и средой выполнения Apigee. Это изменение применяется ко всем поддерживаемым платформам Apigee. Он также включает mTLS для аналитики на платформе Apigee Edge для частного облака. Пример: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
|
| Разработчик | Выберите ранее созданного разработчика или любого другого из списка. |