Перейти к содержанию

Установка

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 … работает точно так же.

Минимальные значения

values.yaml
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, а резервная копия существует только после записи её манифеста.