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

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

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

Предварительные требования

Прежде чем начать:

Обзор

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

Provision Apigee Edge

На этом шаге вы будете использовать интерфейс командной строки удаленной службы для подготовки адаптера 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 Remote Service для службы Envoy.

Вы можете запустить удаленную службу либо как нативный исполняемый файл, либо в Docker.

Запустите сервис непосредственно в среде выполнения.

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

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

Запустите сервис в Docker.

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

Вариация Изображение
Google дистрибутив без дистрибутива google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Ubuntu с Boring Crypto google/apigee-envoy-adapter:v2.0.0-boring

Например, чтобы запустить образ для временного использования с локальным 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 см. в справочнике .