Пакет поставки и конфигурация

Состав архива, локальные Helm values, активация, ссылки на Secret и проверка манифестов перед установкой.

Краткий словарь
  • Установка Helm (Helm release) — установленный и независимо управляемый набор ресурсов одного чарта.
  • Объект Secret — ресурс Kubernetes для ссылок на конфиденциальные значения; поставочные чарты не владеют самими значениями.
  • Запрос постоянного тома (PersistentVolumeClaim, PVC) — запрос хранилища для встроенного компонента данных.
  • Сетевая политика (NetworkPolicy) — правила допустимых сетевых соединений модулей приложения.
  • Интерфейс хранения контейнеров (Container Storage Interface, CSI) и сетевой интерфейс контейнеров (Container Network Interface, CNI) предоставляются кластером заказчика.

Получение материалов и локальные values

Администратор компании открывает «On-premise» в панели, создаёт лицензию, выбирает Kubernetes и нажимает «Скачать материалы развёртывания Kubernetes». Распакуйте massaccess-kubernetes-manual-<version>.tar.gz в защищённый каталог и перейдите в massaccess-kubernetes-manual/. Следуйте INSTALL.ru.md из этой версии. Настройка Kubernetes в панели не требуется; values создаёт и сопровождает ваша DevOps-команда.

  • Начните с files/examples/all-external-values.yaml, all-bundled-values.yaml или postgresql-clickhouse-external-values.yaml внутри charts/massaccess/. Скопируйте подходящий пример в work/app-values.yaml; исправьте все адреса и режимы по values.schema.json.
  • Для другого сочетания измените четыре dataStores.<имя>.mode. При любом bundled дополнительно создайте work/data-values.yaml из charts/massaccess-data/values.yaml; режимы и bundled.existingSecret должны совпадать в обоих chart.
  • Задайте deployment.version из values/massaccess-images.json, images.pullSecrets: [massaccess-registry], runtimeSecret.name: massaccess-runtime и meteringSecret.name: massaccess-metering.
  • Задайте реальные application.publicHttpUrl, application.publicWebSocketUrl, namespace, ресурсы, публикацию и networkPolicy. Одноимённые YAML-секции объединяйте; не оставляйте example.test или documentation-installation-id.
  • В application.hardwareId внесите SHA-256 строки API_SERVER|MA_NAMESPACE без перевода строки; application.licenseServerUrl возьмите из проверенного activation manifest. При tls: false у внешнего хранилища удалите tlsMode; для PostgreSQL укажите sslmode=disable в DSN внутри Secret.
bash
cp charts/massaccess/files/examples/all-external-values.yaml work/app-values.yaml
# bundled: all-bundled-values.yaml
# mixed: postgresql-clickhouse-external-values.yaml
# Edit work/app-values.yaml for the target cluster.
# If any store is bundled, also prepare work/data-values.yaml:
cp charts/massaccess-data/values.yaml work/data-values.yaml

Состав скачиваемого архива

Материалы содержат раскрытые chart, immutable image overlays и активацию компании. Значения Helm, резервные копии и параметры кластера оператор готовит отдельно. Каталог work создаётся локально и в архив не входит.

ПутьНазначение
INSTALL.ru.mdПошаговая инструкция этой версии на русском языке
SHA256SUMSКонтрольные суммы поставляемых chart, образов, активации и helpers
charts/massaccess/Chart приложения, schema, примеры values, bootstrap-secrets.py и четыре справки внешних хранилищ
charts/massaccess-data/Chart встроенных хранилищ, schema и базовые values
values/massaccess-images.json, values/massaccess-data-images.jsonЗакреплённые по digest образы и версия поставки; не изменять
activation/manifest.json, contract.json и три metering-файла; содержит секреты компании
bin/bundled-storage-preflight.py, palette-delivery.py и его модуль palette/

Вспомогательные проверки материалов

Оператор выполняет установку командами Helm и kubectl. Вспомогательные Python-команды имеют отдельные назначения и не выполняют общий сценарий развёртывания.

КомандаНазначениеИзменяет кластер
python3 charts/massaccess/files/bootstrap-secrets.pyПроверить подписанную активацию и цель; с --apply создать служебные SecretТолько с --apply
python3 bin/bundled-storage-preflight.pyПроверить StorageClass/PVC для bundled; записать evidence и digestС --run создаёт и удаляет пробные PVC/Pod
python3 bin/palette-delivery.pyПолучить и проверить текущую облачную палитру, записать локальный Helm overlayНет; пишет локальный файл
ИнформацияАрхив выдаётся без конфигурации панели и общего установщика. Сохраните свои values отдельно; перед применением проверьте context, namespace и параметры каждой команды.

Проверка комплекта поставки

В корне распакованного архива выполните sha256sum -c SHA256SUMS. Все строки должны завершаться OK. При ошибке получите материалы заново. Проверка контрольных сумм не заменяет проверку источника скачивания; не заявляйте подпись всего архива. INSTALL.ru.md не включён в SHA256SUMS, который проверяет выбранные материалы.

bash
sha256sum -c SHA256SUMS
umask 077
mkdir -m 700 work

Активация, Secret и первый администратор

В существующем несистемном namespace сначала проверьте activation командой bootstrap-secrets.py без --apply. При успехе внесите hardwareId и licenseServerUrl в app values; при установке повторите команду с --apply. Она создаёт massaccess-runtime, massaccess-metering и massaccess-registry. Secret хранилищ и webhook transport готовит оператор отдельно: application.webhookTransport ссылается на bot config/TLS Secrets для mTLS listener 8443; Receiver/Agent, PKI и общий Redis должны быть настроены до запуска сообщений.

  • Не выводите activation/manifest.json или значения Secret. Версия manifest должна совпадать с deployment.version.
  • Внешний PostgreSQL: семь DATABASE_URL_* для CORE/GATEWAY/WEBHOOK/WORKER/TELEGRAM/MAX/ARCHIVER; Kafka: producer.username/password, consumer.username/password, admin.username/password; ClickHouse: archiver.username/password, auditor.username/password, migration.username/password; Redis: username, password. При TLS также нужен ca.crt.
  • Для каждого bundled нужны отдельные serverSecret и existingSecret. Полный набор ключей, TLS-файлов, ACL и конфигурации берите из INSTALL.ru.md и соответствующего charts/massaccess/files/<store>/README.md. Не используйте пустые или примерные пароли.
  • Первый администратор создаётся после готовности Core штатной командой core.bootstrap_onprem_admin с паролем через скрытый ввод. Облачная регистрация компании в on-premise отключена.
bash
MA_HARDWARE_ID="$(printf '%s' "${API_SERVER}|${MA_NAMESPACE}" | sha256sum | cut -d ' ' -f 1)"
printf 'hardwareId: %s\n' "$MA_HARDWARE_ID"
python3 charts/massaccess/files/bootstrap-secrets.py --bundle activation \
  --context "$MA_CONTEXT" --expected-server "$API_SERVER" \
  --namespace "$MA_NAMESPACE" --acknowledge-namespace "$MA_NAMESPACE"
python3 -c 'import json; from pathlib import Path; m=json.loads(Path("activation/manifest.json").read_text()); print("version:",m["version"]); print("licenseServerUrl:",m["license_server_url"])'
ВажноНикогда не помещайте учётные данные, значения Secret, сведения kubeconfig, адреса заказчика или закрытые материалы в Git, файлы значений, аргументы --set, историю оболочки, журналы, снимки экрана, текст задач или артефакты конвейера.

Проверка схемы и создаваемых манифестов

Получите текущую палитру из origin подписанного activation manifest; при ошибке остановитесь. Выполните helm lint --strict и helm template для приложения, а при bundled — также для data chart. Immutable image overlay обязателен; overlay палитры передаётся последним только приложению. Просмотрите результат локально: Secret references, image, адреса, ресурсы и NetworkPolicy.

bash
python3 bin/palette-delivery.py --manifest activation/manifest.json --helm work/platform-palette-values.yaml
helm lint charts/massaccess --strict -f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml
helm template massaccess charts/massaccess -n "$MA_NAMESPACE" -f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml > work/app-rendered.yaml
# Only when at least one store is bundled:
helm lint charts/massaccess-data --strict -f work/data-values.yaml -f values/massaccess-data-images.json
helm template massaccess-data charts/massaccess-data -n "$MA_NAMESPACE" -f work/data-values.yaml -f values/massaccess-data-images.json > work/data-rendered.yaml