Установка и проверка Kubernetes
Безопасная установка выпусков данных и приложения, повторный запуск, прикладная проверка и организация внешнего доступа.
Краткий словарь
- Установка Helm (Helm release) — установленный и независимо управляемый набор ресурсов одного чарта.
- Объект Secret — ресурс Kubernetes для ссылок на конфиденциальные значения; поставочные чарты не владеют самими значениями.
- Запрос постоянного тома (PersistentVolumeClaim, PVC) — запрос хранилища для встроенного компонента данных.
- Сетевая политика (NetworkPolicy) — правила допустимых сетевых соединений модулей приложения.
- Интерфейс хранения контейнеров (Container Storage Interface, CSI) и сетевой интерфейс контейнеров (Container Network Interface, CNI) предоставляются кластером заказчика.
Установка Helm releases
Выполняйте команды из корня материалов после проверки values, активации и Secret. MA_CONTEXT, MA_NAMESPACE и API_SERVER задаются на странице требований. Команды меняют только выбранный кластер и namespace.
- Проверьте Kubernetes, права и namespace. Создайте namespace только если он отсутствует; не используйте системные namespace. При существующих releases massaccess/massaccess-data команды upgrade --install обновят их.
- Проверьте SHA256SUMS, подготовьте local values и Secret хранилищ, выполните план активации. Для bundled выполните storage preflight: --run создаёт и удаляет пробные PVC/Pod; при Retain проверьте оставшиеся PV. После PASS внесите digest и verified: true в storagePreflight; enforcementVerified выставляйте только после реальной проверки CNI.
- Получите свежую палитру и выполните lint/template. Примените активацию с --apply, затем установите massaccess-data только при наличии bundled и дождитесь готовности.
- Установите massaccess, выполните helm test, проверьте Pod, Jobs и PVC. При ошибке остановитесь и изучите события; не удаляйте диски и не пересоздавайте идентичность.
- Создайте первого администратора командой ниже: ожидается PASS admin.bootstrap action=created; повтор с теми же данными сохраняет аккаунт (action=preserved). Сохраните пароль в защищённом хранилище.
python3 charts/massaccess/files/bootstrap-secrets.py --bundle activation \
--context "$MA_CONTEXT" --expected-server "$API_SERVER" \
--namespace "$MA_NAMESPACE" --acknowledge-namespace "$MA_NAMESPACE" --apply
# Only when at least one store is bundled:
helm --kube-context "$MA_CONTEXT" upgrade --install massaccess-data charts/massaccess-data -n "$MA_NAMESPACE" \
-f work/data-values.yaml -f values/massaccess-data-images.json --rollback-on-failure --wait --timeout 15m
# Application, after data services are ready:
helm --kube-context "$MA_CONTEXT" upgrade --install massaccess charts/massaccess -n "$MA_NAMESPACE" \
-f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml --rollback-on-failure --wait --timeout 15m
helm --kube-context "$MA_CONTEXT" status massaccess -n "$MA_NAMESPACE"
helm --kube-context "$MA_CONTEXT" test massaccess -n "$MA_NAMESPACE" --logs
kubectl --context "$MA_CONTEXT" -n "$MA_NAMESPACE" get deployment,statefulset,pod,service,job,pvcАктивация, Secret и первый администратор
MA_ADMIN_EMAIL='<адрес-администратора>'
MA_COMPANY_NAME='<название-компании>'
export MA_ADMIN_EMAIL MA_COMPANY_NAME
python3 - <<'PYCODE'
import getpass, json, os, subprocess
password = getpass.getpass('Пароль первого администратора: ')
if not password:
raise SystemExit('Пароль не может быть пустым')
payload = json.dumps({
'email': os.environ['MA_ADMIN_EMAIL'],
'password': password,
'company_name': os.environ['MA_COMPANY_NAME'],
})
subprocess.run([
'kubectl', '--context', os.environ['MA_CONTEXT'],
'-n', os.environ['MA_NAMESPACE'],
'exec', '-i', 'deploy/core', '-c', 'core', '--',
'python', '-m', 'core.bootstrap_onprem_admin',
], input=payload, text=True, check=True)
PYCODEПроверка после установки
STATUS: deployed и успешный Helm test обязательны. Затем проверьте готовность Pod, Jobs миграций, созданные Secret по именам, вход первого администратора, heartbeat лицензии и контрольные операции приложения. Готовность Pod сама по себе не доказывает доставку сообщений.
- Проверьте Pod Ready, завершение Jobs и Bound у PVC, число перезапусков и отсутствие OOMKilled.
- Проверьте вход в панель, API/WebSocket, чтение и запись данных; отправку сообщений проверяйте до конечного статуса, а не только HTTP 202.
- Сохраните версию, image digests, local values и результаты проверок в защищённом месте.
Публикация на хосте установки и внешний доступ
Публичные HTTP/WebSocket URL, DNS, Ingress/Gateway и TLS подготавливает ваша команда в local values и инфраструктуре. Для локальной проверки можно открыть frontend через port-forward; это не проверяет внешний маршрут.
- Для port-forward используйте отдельный терминал с теми же MA_CONTEXT и MA_NAMESPACE; откройте http://127.0.0.1:3001/web/login.
- Отдельно проверьте UI, API и WebSocket через фактический внешний адрес, сертификаты и сетевые политики.
kubectl --context "$MA_CONTEXT" -n "$MA_NAMESPACE" port-forward --address 127.0.0.1 svc/frontend 3001:3000