Aller au contenu

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

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