Подготовка окружения в составе API Mesh#
Также см. Общие шаги подготовки окружения.
Предусловия для установки:
Подготовка кластеров с API Gateway#
В кластерах, где планируется создавать API Gateway:
Установлен компонент APIO
Кроме кластера установки MPSM (либо включая его, если создавать ServiceAccount / ClusterRole / ClusterRoleBinding из Helm-чарта нежелательно): подготовлен сервис-аккаунт для mpsm
Создайте ClusterRole mpsm-apimgmt с необходимыми для работы с API Gateway разрешениями.
Создайте в целевом namespace сервис-аккаунт
mspmдля mpsm, если он еще не создан.При необходимости укажите сервис-аккаунту
imagePullSecrets, необходимые для загрузки образов.Создайте одно из:
ClusterRoleBinding mpsm-apimgmt-crb, связывающий ClusterRole с сервис-аккаунтом
mpsm. Укажите в нем целевой namespace.Аналогичные RoleBinding, предоставляющие сервис-аккаунту
mpsmдоступ к ограниченному набору namespaces, в которых будут возможны необходимые для API Management операции.
Генерация ключей подписи API Key#
Для подписи порталом API Key (JWT с алгоритмом ES256) сгенерируйте ключевую пару:
Перейдите в пустую директорию.
Сгенерируйте параметры кривой командой:
openssl ecparam -name prime256v1 -genkey -outform pem -out ecparam.pemПреобразуйте публичную часть в формат SPKI командой:
openssl ec -pubout -inform pem -in ecparam.pem -outform pem -out ecpublic.pemПреобразуйте приватную часть ключа в формат PKCS#8 без пароля командой:
openssl pkcs8 -topk8 -nocrypt -inform pem -in ecparam.pem -outform pem -out ecprivate.pem
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
С публичным и приватным ключами: например,
mpsmс полямиapimgmt-pubkey-first.pemиapimgmt-privkey-first.pemсоответственно.
Генерация токена клиентского портала#
Для аутентификации клиентского портала перед основным сгенерируйте для него токен:
Создайте Python3 venv-окружение:
python3 -m venv mpsm-venvАктивируйте созданное окружение:
. mpsm-venv/bin/activate(или аналог на не-Unix-подобных ОС)Установите библиотеки для работы с JWT:
pip install pyjwt cryptographyОтредактируйте в скрипте apimgmt-keygen.py параметр
DAYS_VALID— срок действия токена в дняхСгенерируйте скриптом токен, заменив «$host» на планируемый адрес портала (вида «example.com» или «localhost:8843»):
python apimgmt-keygen.py --iss apimgmt-internal-portal@$host --alg ES256 --privKey ecprivate.pem
Создайте или обновите секреты (объекты Secret в целевом namespace клиентского портала или Key-Value секреты в Vault):
С токеном: например,
mpsm-clientс полемint-portal-token.
При изменении адреса основного портала необходимо перевыпустить токен клиентского портала.