Как использовать адаптер Apigee для Envoy с Apigee Edge

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

В этом примере показано, как использовать адаптер Apigee для Envoy с Apigee Edge.

Требования

Подготовка

Обзор

В этом примере показано, как использовать адаптер Apigee для Envoy с Apigee Edge для общедоступного облака. Вызовы API прокси-сервера проходят через Envoy, работающий как нативное приложение, а Edge предоставляет сервисы управления API через удаленный сервис Apigee для Envoy.

На рисунке ниже показана базовая архитектура интеграции Apigee Edge.

Общее представление адаптера Envoy, который работает в собственном режиме для взаимодействия с облаком Apigee Edge, включая уровень управления, уровень выполнения и сервисы GCP

Прокси-сервер Envoy и удаленный сервис работают локально. Envoy обрабатывает трафик API, поступающий в целевой сервис и исходящий из него, и взаимодействует с удаленным сервисом. Удаленный сервис также взаимодействует с облаком Apigee Edge, чтобы получить информацию о продукте API и прокси.

Как инициализировать Apigee Edge

На этом шаге вы будете использовать CLI удаленного сервиса, чтобы инициализировать ресурсы адаптера Apigee для Envoy в Apigee Edge. Команда инициализации развертывает прокси-сервер API в Apigee Edge, а также настраивает сертификат в Apigee и создает учетные данные, которые удаленный сервис будет использовать для безопасного подключения из вашей системы к Apigee.

  1. Перейдите в каталог $CLI_HOME:
    cd $CLI_HOME
  2. Создайте следующие переменные среды: Эти переменные будут использоваться в качестве параметров для скрипта инициализации:
    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.
  3. Выполните следующую команду, чтобы подготовить прокси-сервер для удаленного сервиса в Apigee Edge:
    ./apigee-remote-service-cli provision --legacy --username $USER --password $PASSWORD \
        --organization $ORG --environment $ENV > config.yaml
  4. Проверьте содержимое файла config.yaml. Он выглядит примерно так:
    # Configuration for apigee-remote-service-envoy
    # generated by apigee-remote-service-cli provision on 2020-06-06 11:55:52
    tenant:
      internal_api: https://istioservices.apigee.net/edgemicro
      remote_service_api: https://my-org-test.apigee.net/remote-service
      org_name: my-org
      env_name: test
      key: ecaa56d4101701cb877670909f3614219091b00ce559842e1b584a34b7c6a3e4
      secret: 0c66638bb865c1e13019990ea42da66b097d02a6ba333f050fb27cef20259d98

    Значения ключа и секрета используются для проверки запросов от прокси-сервиса к Apigee Edge.

Запустите удаленный сервис Apigee для Envoy

Удаленный сервис можно запустить как нативный исполняемый файл или в Docker.

Запустить сервис в нативном режиме

Выполните двоичный файл сервиса с файлом конфигурации, который был создан командой инициализации:

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Запуск сервиса в Docker

Образы Docker публикуются с тегами выпуска. Для этой установки используйте последнюю версию. Вы можете выбрать один из трех вариантов изображений:

Разнообразие Изображение
scratch google/apigee-envoy-adapter:v1.0.0
Ubuntu google/apigee-envoy-adapter:v1.0.0-ubuntu
Ubuntu с BoringCrypto google/apigee-envoy-adapter:v1.0.0-boring

Например, чтобы запустить образ scratch с локальным файлом config.yaml, доступным как /config.yaml через подключение тома, используйте следующую команду:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.0.0

Как установить и запустить прокси-сервер Envoy

Чтобы установить и запустить прокси-сервер Envoy, выполните следующие действия:

  1. Скачайте исполняемый файл Envoy, создайте его или используйте Docker.
  2. Запустите Envoy, используя образец файла конфигурации, настроенный для сервиса httpbin.org:
    envoy -c $REMOTE_SERVICE_HOME/samples/native/envoy-httpbin.yaml

Как проверить установку

  1. Позвонить в службу httpbin:
    curl -i http://localhost:8080/httpbin/headers
    

    Теперь сервис управляется Apigee, и поскольку вы не указали ключ API, вызов возвращает следующую ошибку.

    curl -i http://localhost:8080/httpbin/headers
    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
  2. Настройте продукт API и получите ключ API, как описано в статье Как получить ключ API.
  3. Выполните вызов API, используя ключ:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers -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/1.1 429 Too Many Requests
  • Откройте Apigee Analytics в интерфейсе Edge. Выберите Анализ > Показатели API > Производительность прокси API.
  • Создавайте и используйте токены JWT для аутентификации вызовов API.
  • Используйте CLI для управления, создания токенов и контроля привязок. Подробную информацию о CLI можно найти в справочной документации.