Установка Security Manager в Kubernetes
-
Убедитесь, что у вас есть полное доменное имя (FQDN) для узла экземпляра Security Manager.
-
Разверните экземпляр PostgreSQL версии 17 или выше.
Подробнее — в официальной документации PostgreSQL.
-
Создайте:
- базу данных PostgreSQL для работы с Security Manager;
- учетную запись PostgreSQL с доступом к базе данных.
-
Создайте пространство имен в кластере Kubernetes:
$ kubectl create ns <ПРОСТРАНСТВО_ИМЕН>Здесь
<ПРОСТРАНСТВО_ИМЕН>— название пространства имен Security Manager. Пример:vk-security-manager. -
Создайте TLS-секрет:
$ kubectl -n <ПРОСТРАНСТВО_ИМЕН> create secret tls <СЕКРЕТ> \--cert=tls.crt \--key=tls.keyЗдесь:
<ПРОСТРАНСТВО_ИМЕН>— название пространства имен Security Manager.<СЕКРЕТ>— название секрета с TLS-сертификатом и ключом. Пример:tls-secret.
-
Сгенерируйте ключ для шифрования конфиденциальной информации в базе данных:
$ openssl rand -base64 32В терминале появится строка из 32 случайных байтов в кодировке Base64. Сохраните это значение для дальнейшей настройки.
-
Сгенерируйте ключевую пару JWT:
$ openssl genrsa -out rsakey.pem 2048 && \openssl rsa -in rsakey.pem -pubout > rsakey.pubВ текущей директории появятся файлы:
rsakey.pem— приватный ключ JWT;rsakey.pub— публичный ключ JWT.
-
Подготовьте дистрибутив Security Manager, если это еще не сделано (подробнее — в разделе Подготовка дистрибутива Security Manager).
Задайте параметры в файле values-override.yaml Helm-чарта Security Manager:
global:image:registry: <ЛОКАЛЬНЫЙ_DOCKER_REGISTRY>ingress:enabled: truehostname: "<FQDN_VK_SECURITY_MANAGER>"annotations:nginx.ingress.kubernetes.io/proxy-body-size: <ЛИМИТ_НА_РАЗМЕР_АРТЕФАКТОВ>tls:- hosts:- "<FQDN_VK_SECURITY_MANAGER>"secretName: <СЕКРЕТ>sm-service:appConfig:baseUrl: "https://<FQDN_VK_SECURITY_MANAGER>"db:database: <ИМЯ_БД>host: <ХОСТ_БД>password: <ПАРОЛЬ_БД>port: "<ПОРТ_БД>"username: <ЛОГИН_БД>secrets:dbEncryptionKeySecret:dbEncryptionKey: "<КЛЮЧ_ШИФРОВАНИЯ_БД>"jwtKeySecret:jwtPrivateKey: |------BEGIN PRIVATE KEY-----MIIEvgI.................-----END PRIVATE KEY-----jwtPublicKey: |------BEGIN PUBLIC KEY-----MIIBIjAN..................-----END PUBLIC KEY-----
Здесь:
-
<ЛОКАЛЬНЫЙ_DOCKER_REGISTRY>— локальный Docker Registry. Пример:registry.domain.local. -
<FQDN_VK_SECURITY_MANAGER>— полное доменное имя для узла вашего экземпляра Security Manager. Пример:my-vk-security-manager.domain.local. -
<ЛИМИТ_НА_РАЗМЕР_АРТЕФАКТОВ>— максимальный размер загружаемых артефактов. Пример:1G. -
<СЕКРЕТ>— название секрета с TLS-сертификатом и ключом, который вы создали на этапе подготовки. Пример:tls-secret. -
<ИМЯ_БД>— имя базы данных PostgreSQL для работы с Security Manager. -
<ХОСТ_БД>— имя хоста базы данных. -
<ПОРТ_БД>— порт базы данных. Пример:5432. -
<ЛОГИН_БД>и<ПАРОЛЬ_БД>— учетные данные пользователя PostgreSQL с доступом к базе данных. -
<КЛЮЧ_ШИФРОВАНИЯ_БД>— строка из 32 случайных байта в кодировке Base64, которую вы сгенерировали на этапе подготовки. -
jwtPrivateKeyиjwtPublicKey— параметры для указания ключевой пары JWT, которую вы сгенерировали на этапе подготовки.Скопируйте содержимое файлов
rsakey.pemиrsakey.pubполностью и добавьте как есть: вместе с блокамиBEGINиEND, а также переносами строк.
$ helm -n <ПРОСТРАНСТВО_ИМЕН> install <РЕЛИЗ_VK_SECURITY_MANAGER> oci://<ЛОКАЛЬНЫЙ_DOCKER_REGISTRY>/helm/vk-security-manager --version v26.2.0 -f values-override.yaml
Здесь:
<ПРОСТРАНСТВО_ИМЕН>— название пространства имен Security Manager.<РЕЛИЗ_VK_SECURITY_MANAGER>— имя создаваемого релиза Security Manager.<ЛОКАЛЬНЫЙ_DOCKER_REGISTRY>— ваш локальный Docker Registry. Пример:registry.domain.local.