Подготовка окружения в составе API Mesh#

Также см. Общие шаги подготовки окружения.

Предусловия для установки:

  1. Подготовка кластеров с API Gateway

  2. Генерация ключей подписи API Key

  3. Генерация токена клиентского портала

Подготовка кластеров с API Gateway#

В кластерах, где планируется создавать API Gateway:

  1. Установлен компонент APIO

  2. Кроме кластера установки MPSM (либо включая его, если создавать ServiceAccount / ClusterRole / ClusterRoleBinding из Helm-чарта нежелательно): подготовлен сервис-аккаунт для mpsm

    1. Создайте ClusterRole mpsm-apimgmt с необходимыми для работы с API Gateway разрешениями.

    2. Создайте в целевом namespace сервис-аккаунт mspm для mpsm, если он еще не создан.

    3. При необходимости укажите сервис-аккаунту imagePullSecrets, необходимые для загрузки образов.

    4. Создайте одно из:

      • ClusterRoleBinding mpsm-apimgmt-crb, связывающий ClusterRole с сервис-аккаунтом mpsm. Укажите в нем целевой namespace.

      • Аналогичные RoleBinding, предоставляющие сервис-аккаунту mpsm доступ к ограниченному набору namespaces, в которых будут возможны необходимые для API Management операции.

Генерация ключей подписи API Key#

Для подписи порталом API Key (JWT с алгоритмом ES256) сгенерируйте ключевую пару:

  1. Перейдите в пустую директорию.

  2. Сгенерируйте параметры кривой командой: openssl ecparam -name prime256v1 -genkey -outform pem -out ecparam.pem

  3. Преобразуйте публичную часть в формат SPKI командой: openssl ec -pubout -inform pem -in ecparam.pem -outform pem -out ecpublic.pem

  4. Преобразуйте приватную часть ключа в формат PKCS#8 без пароля командой: openssl pkcs8 -topk8 -nocrypt -inform pem -in ecparam.pem -outform pem -out ecprivate.pem

Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):

  1. С публичным и приватным ключами: например, mpsm с полями apimgmt-pubkey-first.pem и apimgmt-privkey-first.pem соответственно.

Генерация токена клиентского портала#

Для аутентификации клиентского портала перед основным сгенерируйте для него токен:

  1. Создайте Python3 venv-окружение: python3 -m venv mpsm-venv

  2. Активируйте созданное окружение: . mpsm-venv/bin/activate (или аналог на не-Unix-подобных ОС)

  3. Установите библиотеки для работы с JWT: pip install pyjwt cryptography

  4. Отредактируйте в скрипте apimgmt-keygen.py параметр DAYS_VALID — срок действия токена в днях

  5. Сгенерируйте скриптом токен, заменив «$host» на планируемый адрес портала (вида «example.com» или «localhost:8843»): python apimgmt-keygen.py --iss apimgmt-internal-portal@$host --alg ES256 --privKey ecprivate.pem

Создайте или обновите секреты (объекты Secret в целевом namespace клиентского портала или Key-Value секреты в Vault):

  1. С токеном: например, mpsm-client с полем int-portal-token.

При изменении адреса основного портала необходимо перевыпустить токен клиентского портала.