Saltar a contenido

Instalación

Tenax es un chart de Helm y una imagen. La imagen contiene el binario tenax y las herramientas cliente de Postgres 15/16/17 y MySQL 8.4 que ejecutan los movedores de datos; el mismo binario es la CLI.

Obtener la imagen y el chart

Las versiones se construyen solo a partir de etiquetas: una etiqueta v1.2.3 publica la imagen <registry>/tenax/tenax:v1.2.3, el chart tenax:1.2.3 (OCI) y los binarios de la CLI para Linux y macOS en la release de GitHub. Desde main no se publica nada.

helm install tenax oci://registry.example.com/helm/tenax --version 1.2.3 -n tenax-system --create-namespace \
  -f values.yaml

Desde una copia del repositorio, helm install tenax charts/tenax … funciona igual.

Valores mínimos

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 no trae valores por defecto propios de ninguna organización: cada endpoint, nombre de host y credencial los defines tú (ADR 0002). Todos los valores: Valores de Helm.

Autenticación y exposición

Ambas son intercambiables y están desactivadas por defecto.

Ajuste Valores Qué hace
auth.provider none · cloudflare-access none: cada petición a la consola recibe auth.devRole (a la consola solo se llega mediante tenax console, un kubectl port-forward). cloudflare-access: verifica el JWT de Cloudflare Access en cada petición y asigna roles a usuarios y grupos; los port-forwards reciben auth.portForwardRole.
auth.roles viewer · operator · restorer · restorer-admin Quién puede mirar; respaldar y restaurar en un sandbox; restaurar en una base de datos nueva o una descarga; y restaurar en el mismo lugar o fijar respaldos.
expose.provider none · service · cloudflare Cómo se llega a los sandboxes desde fuera del clúster: none, tenax sandbox connect hace port-forward a través del kubeconfig; service, un Service de Kubernetes por sandbox (balanceador de carga, MetalLB, Tailscale, external-dns) al que se conecta cualquier cliente de base de datos por TLS; cloudflare, un túnel detrás de un inicio de sesión de Access. Consulta Sandboxes.
expose.cloudflared.enabled true / false Con cloudflare: ejecuta el conector cloudflared para las rutas de los sandboxes (y la consola, si consoleHostname está definido).

Consulta Consola, CLI y acceso para los detalles.

Qué se instala

Objeto Propósito
6 CRDs BackupStore, BackupPolicy, BackupTarget, Backup, Restore, Sandbox (referencia)
Deployment tenax-controller (2 réplicas, elección de líder) programa respaldos y ejecuta streamers, restauraciones, sandboxes, verificación y recolección de basura
Deployment tenax-api (2 réplicas) y Service la consola, la API JSON y los server-sent events
RBAC lectura de los recursos de Tenax en todo el clúster; por cada namespace de objetivos, solo lectura de los secretos tenax-*
PrometheusRule, ServiceMonitor, dashboard de Grafana opcionales, consulta Monitorización

Los pods se ejecutan sin root, con el sistema de archivos raíz de solo lectura, sin escalada de privilegios y con todas las capabilities eliminadas. Los datos solo se mueven en Jobs (movedores, restauradores) y en Deployments de streamer por objetivo; el controlador y la API nunca transportan datos de respaldo.

Actualizaciones

helm upgrade reemplaza los CRDs (installCRDs: true) y renueva el controlador y la API. Los respaldos en curso terminan o se reintentan: cada ruta de datos es crash-only, y un respaldo solo existe una vez escrito su manifiesto.