Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
В этом примере показано, как использовать адаптер Apigee для Envoy с Apigee Edge.
Предварительные условия
Прежде чем начать: |
---|
Обзор
В этом примере объясняется, как использовать адаптер Apigee для Envoy с Apigee Edge для публичного облака. Вызовы прокси-сервера API проходят через Envoy, работающий как собственное приложение, а Edge предоставляет услуги управления API через удаленную службу Apigee для Envoy.
На следующем рисунке показана базовая архитектура интеграции Apigee Edge:
Прокси-сервер Envoy и удаленная служба работают локально. Envoy обрабатывает трафик API, входящий и исходящий от целевой службы, и взаимодействует с удаленной службой. Удаленная служба также взаимодействует с Apigee Edge Cloud для получения информации о продукте API и прокси-сервере.
Обеспечение Apigee Edge
На этом этапе вы будете использовать CLI удаленной службы для подготовки адаптера Apigee для ресурсов Envoy к Apigee Edge. Команда подготовки развертывает прокси-сервер API в Apigee Edge, а также устанавливает сертификат в Apigee и генерирует учетные данные, которые удаленная служба будет использовать для безопасного подключения вашей системы к Apigee.
- Перейдите в каталог
$CLI_HOME
:cd $CLI_HOME
- Создайте следующие переменные среды. Эти переменные будут использоваться в качестве параметров сценария подготовки:
export ORG=organization_name
export ENV=environment_name
export USER=your_apigee_username
export PASSWORD=your_apigee_password
Где:
Переменная Описание organization_name Название вашей организации Apigee. environment_name Имя среды в вашей организации. your_apigee_username Имя пользователя вашей учетной записи Apigee. Обычно имя пользователя представляет собой адрес электронной почты. your_apigee_password Ваш пароль Apigee. - Выполните следующую команду, чтобы предоставить прокси-сервер удаленной службы в Apigee Edge:
./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \ --organization $ORG --environment $ENV > config.yaml
- Проверьте содержимое файла
config.yaml
. Это должно выглядеть примерно так:# Configuration for apigee-remote-service-envoy (platform: SaaS) # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41 apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://my-username-test.apigee.net/remote-service org_name: my-org env_name: my-env key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664 secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75
Значения ключа и секрета используются для проверки запросов от прокси-сервера удаленной службы к Apigee Edge.
Запустите удаленную службу Apigee для службы Envoy.
Вы можете запустить Remote Service либо как собственный двоичный файл, либо в Docker.
Запустите службу изначально
Запустите двоичный файл службы с файлом конфигурации, полученным командой обеспечения:
$CLI_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml
Запустите службу в Docker
Образы Docker публикуются с тегами выпуска. Для этой установки используйте последнюю версию. На выбор есть три варианта изображения:
Вариация | Изображение |
---|---|
Google без дистрибутива | gcr.io/distroless/base |
Убунту | google/apigee-envoy-adapter:v1.1.0-ubuntu |
Ubuntu со скучной криптовалютой | google/apigee-envoy-adapter:v1.1.0-boring |
Например, чтобы запустить рабочий образ с локальным config.yaml
доступным как /config.yaml
, через монтирование тома, используйте следующую команду:
docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.1.0
Создайте образцы файлов конфигурации
Используйте команду apigee-remote-service-cli samples create
для создания примеров файлов конфигурации.
Для этого примера вам нужны эти сгенерированные файлы:
-
envoy-config.yaml
— конфигурация развертывания службы HTTP.
Чтобы сгенерировать образцы:
- Перейдите в каталог
$CLI_HOME
. Выполните эту команду для создания файлов:
./apigee-remote-service-cli samples create --template native -c ./config.yaml
Следующие файлы выводятся в каталог
./samples
:ls samples envoy-config.yaml
Дополнительную информацию см. в разделе Команда «Образцы» .
Установите и запустите прокси-сервер Envoy.
Выполните следующие действия, чтобы установить и запустить прокси-сервер Envoy:
- Загрузите двоичный файл Envoy, соберите его или используйте Docker .
- Запустите Envoy, используя образец файла конфигурации, который вы создали ранее для службы
httpbin.org
:envoy -c $CLI_HOME/samples/envoy-config.yaml
Проверьте установку
- Вызовите службу
httpbin
:curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"
Служба теперь управляется Apigee, и поскольку вы не предоставили ключ API, вызов возвращает следующую ошибку.
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org" HTTP/1.1 403 Forbidden date: Tue, 12 May 2020 17:51:36 GMT server: envoy content-length: 0 x-envoy-upstream-service-time: 11
- Настройте продукт API и получите ключ API, как описано в разделе «Как получить ключ API» .
- Сделайте вызов API, используя ключ:
export APIKEY=YOUR_API_KEY
curl -i http://localhost:8080/httpbin/headers \ -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"
Вызов должен завершиться успешно со статусом 200 и возвратом списка заголовков в ответе. Например:
curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS" HTTP/1.1 200 OK server: envoy date: Tue, 12 May 2020 17:55:34 GMT content-type: application/json content-length: 828 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 301 { "headers": { "Accept": "*/*", "Content-Length": "0", "Host": "httpbin.default.svc.cluster.local", "User-Agent": "curl/7.70.0-DEV", "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS", "X-Apigee-Accesstoken": "", "X-Apigee-Api": "httpbin.default.svc.cluster.local", "X-Apigee-Apiproducts": "httpbin", "X-Apigee-Application": "httpbin", "X-Apigee-Authorized": "true", "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS", "X-Apigee-Developeremail": "user@example.com", "X-Apigee-Environment": "test", "X-Apigee-Organization": "my-org", "X-Apigee-Scope": "", "X-B3-Parentspanid": "1476f9a2329bbdfa", "X-B3-Sampled": "0", "X-B3-Spanid": "1ad5c19bfb4bc96f", "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa" } }
Следующие шаги
Трафик API к службе httpbin
теперь управляется Apigee. Вот некоторые функции, которые вы можете изучить и попробовать:
- Если вы настроили свой продукт API, как описано в разделе «Как получить ключ API» , предел квоты был установлен на уровне 5 запросов в минуту. Попробуйте вызвать службу
httpbin
еще несколько раз, чтобы активировать квоту. Когда квота исчерпана, возвращается ошибка HTTP-статуса 403. - Доступ к Apigee Analytics в пользовательском интерфейсе Edge. Перейдите в раздел «Анализ» > «Метрики API» > «Производительность прокси-сервера API» .
- Создавайте и используйте токены JWT для аутентификации вызовов API.
- Используйте интерфейс командной строки для управления, создания токенов и контроля привязок. Подробности CLI см. в справочнике .