Установка Helm-чартов PrimoArt
Описание
Установка и настройка микросервисов PrimoArt в Kubernetes-кластере с использованием Helm.
Требования
Перед началом убедитесь, что в вашей инфраструктуре выполнены следующие условия:
-
Установлен Kubernetes версии 1.24 или выше
-
Установлен и настроен kubectl
-
Установлен Helm версии 3.7 или выше
-
В кластере настроен Ingress Controller (например, NGINX)
-
DNS-сервер вашей среды разрешает домены вида
*.primoart.localна Ingress Controller (в локальной среде можно использовать файл/etc/hosts) -
Все образы приложений загружены в доступный Docker-репозиторий
-
TLS-сертификаты доступны через ClusterIssuer (например, self-signed или Let’s Encrypt)
Также необходимо наличие и доступность следующих внешних сервисов (с указанием параметров подключения в values-local.yaml / secrets-local.yaml):
| Service | Purpose | Connection example |
|---|---|---|
| PostgreSQL | Primary database for microservices | DB_HOST, DB_PORT, DB_USER |
| S3 storage | Stores logs, screenshots, and traces | S3_ENDPOINT, S3_ACCESS_KEY |
| OpenSearch / Elasticsearch | Search and storage for logs and traces | ES_URL, ES_USER, ES_PASSWORD |
Эти хранилища должны быть установлены, настроены и доступны из пространства
имён primoart-local в Kubernetes.
Шаг 1. Настройка values-local.yaml и secrets-local.yaml
Перед установкой чарта pa-microservices необходимо отредактировать следующие файлы:
./pa-microservices/values-local.yaml
./pa-microservices/secrets-local.yamlДля values-local.yaml измените следующие параметры:
-
Раздел
image(для всех микросервисов): repository, tagЭти параметры нужно задать для каждого микросервиса:paAuth,paMath,paSTM, и т.д. -
Раздел
configmaps:DB_HOST,DB_PORT,S3_ENDPOINT,S3_LOG_BUCKET,S3_IMAGE_BUCKET,S3_TRACE_BUCKET,ES_URL
Для secrets-local.yaml измените следующие параметры в объекте Secret: DB_USER, DB_PASSWORD, S3_ACCESS_KEY, S3_SECRET_KEY, ES_USER, ES_PASSWORD
Описание параметров микросервисов доступно по ссылке.
Шаг 2. Установка компонентов
a. Создание ClusterIssuer (если нет внешнего CertManager)
Если вы не используете внешний ACME-сервер (например Let’s Encrypt), создайте self-signed ClusterIssuer и RootCA:
Создать RootCA:
kubectl apply -f Certficate/primoart-root-ca.yamlСоздать ClusterIssuer:
kubectl apply -f helm_charts/ClusterIssuer/cluster-issuer-selfsigned.yaml
kubectl apply -f ClusterIssuer/primoart-ca-issuer.yamlЕсли вы планируете использовать Let’s Encrypt staging, можно применить:
kubectl apply -f helm_charts/ClusterIssuer/cluster-issuer-staging-acme.yamlУбедитесь, что CertManager установлен в кластере, иначе примените официальную инструкцию .
b. Установка IngressClass (если требуется)
kubectl apply -f helm_charts/Ingress/ingressclass.yamlc. Создание namespace
kubectl create namespace primoart-localЕсли namespace уже существует, эту команду можно пропустить.
Для namespace можно использовать любое другое имя.
d. Деплой микросервисов
Для pa-microservices
helm upgrade --install primoart-api-local \
./pa-microservices \
--namespace primoart-local \
--create-namespace \
-f ./pa-microservices/values-local.yaml \
-f ./pa-microservices/secrets-local.yamlДля pa-portal
helm upgrade --install primoart-portal-local \
./pa-portal \
--namespace primoart-local \
--create-namespace \
--values ./pa-portal/values-local.yamlШаг 3. Проверка установки
Убедитесь, что все pods находятся в статусе Running:
kubectl get pods -n primoart-localПроверьте доступность по следующим URL:
Если вы работаете в локальной среде, настройте /etc/hosts:
127.0.0.1 auth.primoart.local rum.primoart.local core.primoart.local stm.primoart.local math.primoart.local vl.primoart.localШаг 4. Тестирование
Проверьте доступность микросервисов через Swagger-интерфейс по соответствующим ссылкам (/docs) или выполнить простой curl:
curl -k https://auth.primoart.local/docsДополнительно
Проверка шаблонов Helm:
helm template pa-microservices ./pa-microservices \
-f ./pa-microservices/values-local.yaml \
-f ./pa-microservices/secrets-local.yamlУдаление релиза:
helm uninstall primoart-api-local -n primoart-local