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¶
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.