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

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

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

Требования

Подготовка

Обзор

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

Как инициализировать 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:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

    Если вы выполняете обновление, используйте эту команду с флагом --force-proxy-install, чтобы инициализировать Apigee:

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml
  4. Проверьте содержимое файла 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

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

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

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

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

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

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

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

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

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

Как создать примеры файлов конфигурации

Создайте файл конфигурации Envoy с помощью интерфейса командной строки:

  1. Убедитесь, что вы находитесь в каталоге $ENVOY_HOME.
  2. Чтобы посмотреть список доступных шаблонов конфигурации, выполните следующие действия:
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. Выполните команду samples. Вместо TEMPLATE укажите один из поддерживаемых шаблонов Envoy:

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    Команда создаст файл ./samples/envoy-config.yaml.

Подробнее о команде Samples…

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

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

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

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

  1. Настройте продукт API и получите ключ API, как описано в статье Как получить ключ API.
  2. Вызовите сервис httpbin без ключа API:
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

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

    curl -i http://localhost:8080/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
  3. Выполните вызов API, используя ключ:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/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 для управления, создания токенов и контроля привязок. Подробную информацию о CLI можно найти в справочной документации.