Installazione¶
Tenax è un chart Helm e un'immagine. L'immagine contiene il binario tenax più i client tool di Postgres 15/16/17 e
MySQL 8.4 che i data mover eseguono; lo stesso binario è anche la CLI.
Ottenere l'immagine e il chart¶
Le release vengono create solo dai tag: un tag v1.2.3 pubblica l'immagine <registry>/tenax/tenax:v1.2.3, il
chart tenax:1.2.3 (OCI) e i binari della CLI per Linux e macOS nella release GitHub. Da main non viene pubblicato
nulla.
helm install tenax oci://registry.example.com/helm/tenax --version 1.2.3 -n tenax-system --create-namespace \
-f values.yaml
Da un checkout, helm install tenax charts/tenax … funziona allo stesso modo.
Valori minimi¶
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 non include valori predefiniti specifici di un'organizzazione: ogni endpoint, hostname e credenziale li imposti tu (ADR 0002). Tutti i valori: Valori Helm.
Autenticazione ed esposizione¶
Entrambe sono modulari e disattivate per impostazione predefinita.
| Impostazione | Valori | Cosa fa |
|---|---|---|
auth.provider |
none · cloudflare-access |
none: ogni richiesta alla console riceve auth.devRole (la console si raggiunge solo tramite tenax console, un kubectl port-forward). cloudflare-access: verifica il JWT di Cloudflare Access a ogni richiesta e associa utenti e gruppi ai ruoli; i port-forward ricevono auth.portForwardRole. |
auth.roles |
viewer · operator · restorer · restorer-admin |
Chi può guardare, eseguire backup e ripristinare in una sandbox, ripristinare in un nuovo database o in un download, e ripristinare sul posto o bloccare backup. |
expose.provider |
none · service · cloudflare |
Come si raggiungono le sandbox dall'esterno del cluster: none, tenax sandbox connect fa un port-forward tramite il kubeconfig; service, un Service Kubernetes per sandbox (load balancer, MetalLB, Tailscale, external-dns) a cui qualsiasi client di database si connette via TLS; cloudflare, un tunnel dietro un login di Access. Vedi Sandbox. |
expose.cloudflared.enabled |
true / false |
Con cloudflare: esegue il connettore cloudflared per le route delle sandbox (e per la console, se consoleHostname è impostato). |
Vedi Console, CLI e accesso per i dettagli.
Cosa viene installato¶
| Oggetto | Scopo |
|---|---|
| 6 CRD | BackupStore, BackupPolicy, BackupTarget, Backup, Restore, Sandbox (riferimento) |
Deployment tenax-controller (2 repliche, leader election) |
pianifica i backup, esegue streamer, ripristini, sandbox, verifiche e garbage collection |
Deployment tenax-api (2 repliche) e Service |
la console, l'API JSON e i server-sent events |
| RBAC | lettura a livello di cluster delle risorse Tenax; per ogni namespace dei target, lettura dei soli secret tenax-* |
| PrometheusRule, ServiceMonitor, dashboard Grafana | facoltativi, vedi Monitoraggio |
I pod girano come non-root con un root filesystem in sola lettura, senza privilege escalation e con tutte le capability rimosse. I dati si spostano solo nei Job (mover, restorer) e nei Deployment streamer per target; il controller e l'API non trasportano mai dati di backup.
Aggiornamenti¶
helm upgrade sostituisce i CRD (installCRDs: true) e aggiorna il controller e l'API. I backup in corso terminano
o vengono ritentati: ogni percorso dei dati è crash-only, e un backup esiste solo quando il suo manifest è stato
scritto.