Перейти к основному содержимому
Версия: 2.0.x

Установка базовой платформы Selena

В этом документе устанавливаются только компоненты Selena, которые нужны до Engine: Selena operator и Selena Cluster Manager. External dependencies, включая monitoring/Grafana, устанавливаются или подтверждаются раньше по Установка внешних зависимостей. IDE, AI backend/frontend и MCP устанавливаются позже, после Engine READY и POST /engine/cluster:bootstrap-auth-rbac.

Рабочая директория для команд:

cd {selena_docs_repo}/deploy/k8s

1. Проверка входных данных​

Перед Helm install должны быть готовы:

  • namespaces {selena_namespace}, {engine_namespace} и {operator_namespace};
  • image pull Secret в {selena_namespace} и {engine_namespace};
  • CM database уже создана и доступна из cluster;
  • external dependencies установлены или подтверждены по Установка внешних зависимостей;
  • Keycloak realm, clients и admin user из Keycloak, LDAP и OAuth;
  • Kubernetes Secret selena-cm-secrets, созданный после того, как стали известны CM DB credentials и Keycloak client secrets;
  • customer-specific values, созданные из минимальных шаблонов в Values, Secrets и Images.

В командах ниже:

PlaceholderЧто это
{selena_operator_values}Ваш values file для operator, скопированный из docs-external/values-minimal/selena-operator-values.yaml и заполненный под стенд.
{selena_cm_values}Ваш values file для CM, скопированный из docs-external/values-minimal/selena-cm-values.yaml и заполненный под стенд.

Проверка:

kubectl get namespace {selena_namespace} {engine_namespace} {operator_namespace}
kubectl -n {selena_namespace} get secret selena-registry selena-cm-secrets
kubectl -n {engine_namespace} get secret selena-registry

helm lint charts/internal/selena-operator/chart \
-f {selena_operator_values}

helm lint charts/internal/selena-cm/chart \
-f {selena_cm_values}

Если в values включены ServiceMonitor/PodMonitor, до установки operator/CM должны существовать Prometheus Operator CRD:

kubectl get crd servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com

Если CRD нет, выключите ServiceMonitor/PodMonitor в values или сначала установите monitoring.

Что проверить в values перед установкой без bundled monitoring:

ChartValues, которые должны оставаться выключенными, если CRD нет
selena-cmmetrics.serviceMonitor.enabled: false, metrics.podMonitor.enabled: false
selena-operatormetrics.serviceMonitor.enabled: false

В docs-external/values-minimal/ эти параметры не переопределены, поэтому используются безопасные defaults chart-ов: ServiceMonitor/PodMonitor не создаются. Metrics endpoint при этом не выключается; platform monitoring может scrape'ить его своим способом, если это требуется.

2. Selena operator​

Operator нужен CM для создания и управления Selena Engine CR. Установите CRD до Helm release:

kubectl apply -f charts/internal/selena-operator/chart/crds/

Установка:

helm upgrade --install selena-operator \
charts/internal/selena-operator/chart \
-n {operator_namespace} \
--create-namespace \
-f {selena_operator_values} \
--wait --timeout 10m

Проверка:

kubectl -n {operator_namespace} rollout status deploy/selena-operator
kubectl -n {operator_namespace} get pods -o wide
helm status selena-operator -n {operator_namespace}

Критерий готовности: operator pod Running, rollout complete, CRD применены.

3. Selena Cluster Manager​

CM должен стартовать до Engine, потому что Engine устанавливается только через CM API.

Установка:

helm upgrade --install selena-cm \
charts/internal/selena-cm/chart \
-n {selena_namespace} \
--create-namespace \
-f {selena_cm_values} \
--wait --timeout 10m

Проверка Kubernetes:

kubectl -n {selena_namespace} rollout status deploy/selena-cm
kubectl -n {selena_namespace} get pods -l app.kubernetes.io/instance=selena-cm -o wide
kubectl -n {selena_namespace} get svc selena-cm -o wide
helm status selena-cm -n {selena_namespace}

Проверка HTTP:

curl -fsS {cm_url}/actuator/health | jq

Ожидаемый ответ содержит:

{
"status": "UP"
}

4. Первый login в CM​

Выполните login под Keycloak user, который состоит в группе, mapped на cm_admin, например /cm/admins.

curl -fsS -X POST {cm_url}/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"{cm_admin_username}","password":"{cm_admin_web_password}"}' \
| jq

Скопируйте поле .accessToken из ответа. Дальше в документации оно называется {cm_admin_access_token}.

Проверьте, что CM видит роль admin:

curl -fsS {cm_url}/auth/me \
-H 'Authorization: Bearer {cm_admin_access_token}' \
| jq

Ожидаемо:

  • username равен {cm_admin_username};
  • cmRoles содержит cm_admin.

Если login не работает, проверьте:

Что проверитьГде искать
Keycloak issuerCM_KEYCLOAK_ISSUER_URI в CM values должен совпадать с token claim iss.
Login client secretKubernetes Secret selena-cm-secrets, key CM_KEYCLOAK_LOGIN_CLIENT_SECRET.
Username claimВ token должен быть preferred_username.
Groups claimВ token должен быть groups с full group paths.
AudienceВ token должен быть selena-engine, а CM должен ждать тот же audience.

5. License​

License gate защищает рабочие CM endpoints. Health, login, OpenAPI и license endpoints остаются доступны.

Проверить текущий статус:

curl -fsS {cm_url}/license \
-H 'Authorization: Bearer {cm_admin_access_token}' \
| jq

Загрузить license:

curl -fsS -X POST {cm_url}/license \
-H 'Authorization: Bearer {cm_admin_access_token}' \
-F 'file=@{license_file_path}' \
| jq

Проверить после загрузки:

curl -fsS {cm_url}/license \
-H 'Authorization: Bearer {cm_admin_access_token}' \
| jq

Критерий готовности: status равен ACTIVE, а cpuOveruse равен false. Любые NO_LICENSE, CORRUPTED, NOT_ACTIVE или EXPIRED блокируют рабочие CM endpoints.

6. Что не устанавливается на этом шаге​

На этом этапе не устанавливайте:

  • selena-ide;
  • selena-ai;
  • selena-ai-mcp.

Причина: Engine еще не создан, а runtime credentials для IDE/AI появятся только после POST /engine/cluster:bootstrap-auth-rbac. Ранний deploy обычно дает ожидаемые Pending/Unready состояния и усложняет проверку.

Следующий документ: Engine cluster, bootstrap и storage.