Установка¶
Tenax — это один Helm-чарт и один образ. Образ содержит бинарник tenax и клиентские инструменты Postgres 15/16/17 и
MySQL 8.4, которые запускают перемещающие данные Job; этот же бинарник является CLI.
Образ и чарт¶
Релизы собираются только из тегов: тег v1.2.3 публикует образ <registry>/tenax/tenax:v1.2.3, чарт
tenax:1.2.3 (OCI) и бинарники CLI для Linux и macOS в релизе на GitHub. Из main ничего не публикуется.
helm install tenax oci://registry.example.com/helm/tenax --version 1.2.3 -n tenax-system --create-namespace \
-f values.yaml
Из рабочей копии репозитория helm install tenax charts/tenax … работает точно так же.
Минимальные значения¶
image:
repository: registry.example.com/tenax/tenax
tag: v1.2.3
pullSecrets: [registry-pull] # also copied into sandbox namespaces
targetNamespaces: [team-a, team-b] # where BackupTargets and their tenax-* secrets live
examplePolicies: # prod, dev and critical presets in tenax-system
enabled: true
store: main
metrics:
serviceMonitor: { enabled: true }
prometheusRule: { enabled: true }
grafanaDashboard: { enabled: true }
В Tenax нет значений по умолчанию, привязанных к конкретной организации: все endpoint, имена хостов и учётные данные задаёте вы (ADR 0002). Все значения: Значения Helm.
Аутентификация и внешний доступ¶
Оба механизма подключаемые и по умолчанию выключены.
| Параметр | Значения | Что делает |
|---|---|---|
auth.provider |
none · cloudflare-access |
none: каждый запрос к консоли получает auth.devRole (консоль доступна только через tenax console, то есть kubectl port-forward). cloudflare-access: проверяет JWT Cloudflare Access в каждом запросе и сопоставляет пользователей и группы с ролями; port-forward получают auth.portForwardRole. |
auth.roles |
viewer · operator · restorer · restorer-admin |
Кто может смотреть; делать резервные копии и восстанавливать в песочницу; восстанавливать в новую базу данных или скачивание; восстанавливать на месте или закреплять копии. |
expose.provider |
none · service · cloudflare |
Как к песочницам подключаются извне кластера: none — tenax sandbox connect делает port-forward через kubeconfig; service — отдельный Service Kubernetes на каждую песочницу (балансировщик нагрузки, MetalLB, Tailscale, external-dns), к которому любой клиент баз данных подключается по TLS; cloudflare — туннель за входом через Access. См. Песочницы. |
expose.cloudflared.enabled |
true / false |
С cloudflare: запускает коннектор cloudflared для маршрутов песочниц (и консоли, если задан consoleHostname). |
Подробности — в разделе Консоль, CLI и доступ.
Что устанавливается¶
| Объект | Назначение |
|---|---|
| 6 CRD | BackupStore, BackupPolicy, BackupTarget, Backup, Restore, Sandbox (справочник) |
Deployment tenax-controller (2 реплики, выбор лидера) |
планирует резервное копирование, запускает streamers, восстановления, песочницы, проверку и сборку мусора |
Deployment tenax-api (2 реплики) и Service |
консоль, JSON API и server-sent events |
| RBAC | чтение ресурсов Tenax во всём кластере; в каждом namespace целей — чтение только секретов tenax-* |
| PrometheusRule, ServiceMonitor, дашборд Grafana | по желанию, см. Мониторинг |
Поды работают не от root, с корневой файловой системой только для чтения, без повышения привилегий и со сброшенными capabilities. Данные перемещаются только в Job (movers, restorers) и в Deployment streamer для каждой цели; контроллер и API никогда не передают данные резервных копий.
Обновления¶
helm upgrade заменяет CRD (installCRDs: true) и перезапускает контроллер и API. Выполняющиеся резервные копии
завершаются или повторяются: каждый путь данных устроен по принципу crash-only, а резервная копия существует только
после записи её манифеста.