Руководство по эксплуатации

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

Как получить ключ API

В приведенном ниже примере показано, как получить ключ API, который можно использовать для проверки вызовов API к целевому сервису, проксируемому через адаптер Apigee для Envoy.

1. Как войти в Apigee

  1. Откройте интерфейс Apigee в браузере.
  2. В интерфейсе выберите ту же организацию, которую использовали для настройки адаптера Apigee для Envoy.

2. Создание разработчика

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

  1. В меню навигации слева выберите Публикация > Разработчики.
  2. Нажмите + Разработчик.
  3. Заполните диалоговое окно, чтобы создать нового разработчика. Вы можете указать любое имя разработчика и адрес электронной почты.

3. Создание продукта API

Следуйте примеру создания товара ниже. Дополнительная информация приведена в статье О конфигурации продукта API.

  1. В меню навигации слева выберите Publish > API Products (Публикация > Продукты API).
  2. Нажмите + Продукт API.
  3. Заполните страницу "Сведения о товаре" следующим образом:
  4. Поле Значение
    Название httpbin-product
    Отображаемое название httpbin product
    Среда your_environment

    Укажите среду, которую вы использовали при инициализации адаптера Apigee для Envoy.

    Доступ Private
    Quota 5 запросов в минуту

    См. также Quota.

  5. В разделе Цели удаленного сервиса Apigee нажмите Добавить цель удаленного сервиса Apigee.
  6. В диалоговом окне Apigee remote service target (Цель удаленного сервиса Apigee) добавьте следующие значения:
    Атрибут Значение Описание
    Название цели Введите название целевого сервиса. Пример: httpbin.org. Целевая конечная точка, перед которой находится прокси-сервер Envoy.
    Путь Введите путь к ресурсу в сервисе, который нужно сопоставить. Пример: /headers. Путь запроса, который должен совпадать с целевой конечной точкой. Вызовы прокси-сервера API к этому пути будут сопоставляться с этим продуктом API.
  7. Нажмите Сохранить.

4. Создание приложения разработчика

  1. В меню навигации слева выберите Публикация > Приложения.
  2. Нажмите + Приложение.
  3. Заполните страницу приложения разработчика следующим образом: Не нажимайте "Сохранить", пока не получите инструкции.
  4. Название httpbin-app
    Отображаемое название httpbin app
    Разработчик Выберите ранее созданного разработчика или любого другого из списка.
  5. Затем добавьте продукт API в приложение:
    1. В разделе "Учетные данные" нажмите + Добавить продукт и выберите продукт, который вы только что настроили: httpbin-product.
    2. Нажмите Создать.
    3. В разделе "Учетные данные" нажмите Показать рядом с пунктом Ключ.
    4. Скопируйте значение ключа потребителя. Это ключ 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 и scope JWT с продуктами 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. Пример:

    1. Откройте файл config.yaml в редакторе.
    2. Измените значение 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
    3. Сохраните файл.
    4. Примените файл:
      kubectl apply -f $CLI_HOME/config.yaml

    При настройке режима нескольких сред необходимо также настроить Envoy на отправку адаптеру подходящего значения среды, добавив следующие метаданные в раздел virtual_hosts:routes файла envoy-config.yaml. Пример:

    1. Создайте файл envoy-config.yaml с помощью интерфейса командной строки. Пример:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Откройте созданный файл (он называется envoy-config.yaml).
    3. Добавьте следующие метаданные в раздел 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
    4. Повторите последний шаг, чтобы добавить другие среды.
    5. Сохраните файл и примените его.

    Как настроить 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