Installation¶
Tenax, c'est un chart Helm et une image. L'image contient le binaire tenax ainsi que les outils clients
Postgres 15/16/17 et MySQL 8.4 qu'exécutent les transferts de données ; ce même binaire est la CLI.
Obtenir l'image et le chart¶
Les versions ne sont construites qu'à partir de tags : un tag v1.2.3 publie l'image <registry>/tenax/tenax:v1.2.3,
le chart tenax:1.2.3 (OCI) et les binaires de la CLI pour Linux et macOS sur la release GitHub. Rien n'est publié
depuis main.
helm install tenax oci://registry.example.com/helm/tenax --version 1.2.3 -n tenax-system --create-namespace \
-f values.yaml
Depuis un checkout, helm install tenax charts/tenax … fonctionne de la même façon.
Valeurs minimales¶
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 n'embarque aucune valeur par défaut propre à une organisation : chaque endpoint, nom d'hôte et identifiant est à vous de le définir (ADR 0002). Toutes les valeurs : Valeurs Helm.
Authentification et exposition¶
Les deux sont modulaires et désactivées par défaut.
| Paramètre | Valeurs | Effet |
|---|---|---|
auth.provider |
none · cloudflare-access |
none : chaque requête vers la console reçoit auth.devRole (la console n'est accessible que via tenax console, un port-forward kubectl). cloudflare-access : vérifie le JWT Cloudflare Access à chaque requête et associe utilisateurs et groupes à des rôles ; les port-forwards reçoivent auth.portForwardRole. |
auth.roles |
viewer · operator · restorer · restorer-admin |
Qui peut consulter ; sauvegarder et restaurer vers un bac à sable ; restaurer vers une nouvelle base ou un téléchargement ; restaurer sur place ou épingler. |
expose.provider |
none · service · cloudflare |
Comment atteindre les bacs à sable depuis l'extérieur du cluster : none, tenax sandbox connect fait un port-forward via le kubeconfig ; service, un Service Kubernetes par bac à sable (load balancer, MetalLB, Tailscale, external-dns) auquel n'importe quel client de base de données se connecte en TLS ; cloudflare, un tunnel derrière une connexion Access. Voir Bacs à sable. |
expose.cloudflared.enabled |
true / false |
Avec cloudflare : exécute le connecteur cloudflared pour les routes des bacs à sable (et la console, si consoleHostname est défini). |
Voir Console, CLI et accès pour les détails.
Ce qui est installé¶
| Objet | Rôle |
|---|---|
| 6 CRD | BackupStore, BackupPolicy, BackupTarget, Backup, Restore, Sandbox (référence) |
Deployment tenax-controller (2 réplicas, élection de leader) |
planifie les sauvegardes, exécute les streamers, les restaurations, les bacs à sable, la vérification et le ramasse-miettes |
Deployment tenax-api (2 réplicas) et Service |
la console, l'API JSON et les server-sent events |
| RBAC | lecture des ressources Tenax à l'échelle du cluster ; dans chaque namespace cible, lecture des seuls secrets tenax-* |
| PrometheusRule, ServiceMonitor, tableau de bord Grafana | facultatifs, voir Supervision |
Les pods tournent sans root, avec un système de fichiers racine en lecture seule, sans élévation de privilèges et sans aucune capability. Les données ne transitent que dans des Jobs (transferts, restaurations) et dans les Deployments de streamer propres à chaque cible ; le contrôleur et l'API ne transportent jamais de données de sauvegarde.
Mises à niveau¶
helm upgrade remplace les CRD (installCRDs: true) et redéploie le contrôleur et l'API. Les sauvegardes en cours
se terminent ou sont relancées : chaque chemin de données est crash-only, et une sauvegarde n'existe qu'une fois son
manifeste écrit.