Delivery package and configuration

Archive contents, local Helm values, activation, Secret references and manifest validation before installation.

Short glossary
  • Helm release: an installed and independently managed resource set from one chart.
  • Secret object: a Kubernetes resource referenced for sensitive values; the delivery charts do not own the values themselves.
  • PersistentVolumeClaim (PVC): a storage request used by a bundled data component.
  • NetworkPolicy: rules governing permitted network connections for application Pods.
  • Container Storage Interface (CSI) and Container Network Interface (CNI) capabilities are provided by the customer cluster.

Download materials and prepare local values

A company administrator opens On-premise in the dashboard, creates a license, selects Kubernetes and clicks Download Kubernetes deployment materials. Extract massaccess-kubernetes-manual-<version>.tar.gz into a protected directory and enter massaccess-kubernetes-manual/. Follow INSTALL.ru.md from that release. Kubernetes requires no portal configuration; your DevOps team creates and maintains the values.

  • Start with files/examples/all-external-values.yaml, all-bundled-values.yaml or postgresql-clickhouse-external-values.yaml under charts/massaccess/. Copy an appropriate example to work/app-values.yaml and replace addresses and modes according to values.schema.json.
  • For another combination, change the four dataStores.<name>.mode fields. If any store is bundled, also create work/data-values.yaml from charts/massaccess-data/values.yaml; modes and bundled.existingSecret must match in both charts.
  • Set deployment.version from values/massaccess-images.json, images.pullSecrets: [massaccess-registry], runtimeSecret.name: massaccess-runtime and meteringSecret.name: massaccess-metering.
  • Set actual application.publicHttpUrl, application.publicWebSocketUrl, namespace, resources, exposure and networkPolicy. Merge YAML sections with the same name; do not leave example.test or documentation-installation-id.
  • Set application.hardwareId to the SHA-256 of API_SERVER|MA_NAMESPACE without a newline; obtain application.licenseServerUrl from the verified activation manifest. With external tls: false remove tlsMode; PostgreSQL DSNs inside the Secret must specify sslmode=disable.
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

Downloaded archive contents

Materials include unpacked charts, immutable image overlays and company activation. The operator separately prepares Helm values, backups and cluster settings. The work directory is created locally and is not part of the archive.

PathPurpose
INSTALL.ru.mdStep-by-step Russian instructions for this release
SHA256SUMSChecksums for delivered charts, image overlays, activation and helpers
charts/massaccess/Application chart, schema, example values, bootstrap-secrets.py and four external store references
charts/massaccess-data/Bundled store chart, schema and base values
values/massaccess-images.json, values/massaccess-data-images.jsonDigest-pinned images and release version; do not edit
activation/manifest.json, contract.json and three metering files; contains company secrets
bin/bundled-storage-preflight.py, palette-delivery.py and its palette/ module

Material validation helpers

The operator installs with Helm and kubectl. Each Python helper has a specific purpose and does not run an overall deployment workflow.

CommandPurposeChanges the cluster
python3 charts/massaccess/files/bootstrap-secrets.pyVerify signed activation and target; --apply creates service SecretsOnly with --apply
python3 bin/bundled-storage-preflight.pyCheck bundled StorageClass/PVC; record evidence and digest--run creates and removes probe PVCs/Pods
python3 bin/palette-delivery.pyFetch and verify the current cloud palette and write a local Helm overlayNo; writes a local file
InformationThe archive has no portal configuration or general installer. Keep your values separately; verify the context, namespace and parameters before each command.

Verify the release candidate

Run sha256sum -c SHA256SUMS in the extracted archive root. Every line must report OK. Download the materials again on failure. Checksums do not replace checking the download source; do not assume the entire archive is signed. INSTALL.ru.md is not included in SHA256SUMS, which covers the selected materials.

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

Activation, Secrets and the first administrator

In an existing non-system namespace, first verify activation with bootstrap-secrets.py without --apply. On success, set hardwareId and licenseServerUrl in app values; repeat with --apply during installation. It creates massaccess-runtime, massaccess-metering and massaccess-registry. The operator separately prepares store and webhook transport Secrets: application.webhookTransport references bot config/TLS Secrets for mTLS listener 8443; Receiver/Agent, PKI and shared Redis must be configured before messaging starts.

  • Do not print activation/manifest.json or Secret values. The manifest version must match deployment.version.
  • External PostgreSQL needs seven DATABASE_URL_* entries for CORE/GATEWAY/WEBHOOK/WORKER/TELEGRAM/MAX/ARCHIVER; Kafka needs producer.username/password, consumer.username/password and admin.username/password; ClickHouse needs archiver.username/password, auditor.username/password and migration.username/password; Redis needs username and password. TLS also requires ca.crt.
  • Each bundled store needs separate serverSecret and existingSecret. Get the complete key, TLS, ACL and configuration inventory from INSTALL.ru.md and charts/massaccess/files/<store>/README.md. Do not use empty or example passwords.
  • After Core is ready, create the first administrator with core.bootstrap_onprem_admin using hidden password input. Cloud company registration is disabled in 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"])'
WarningNever place credentials, Secret values, kubeconfig data, customer endpoints, or private material in Git, values files, --set arguments, shell history, logs, screenshots, issue text, or CI artifacts.

Validate schema and rendered inventory

Fetch the current palette from the signed activation manifest origin; stop on failure. Run helm lint --strict and helm template for the application and, with bundled stores, for the data chart. The immutable image overlay is required; pass the palette overlay last for the application only. Review Secret references, images, endpoints, resources and NetworkPolicy locally.

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