安裝¶
Tenax 由一個 Helm Chart 和一個映像組成。映像包含 tenax 二進位檔,以及資料搬運程式所用的 Postgres 15/16/17 和
MySQL 8.4 用戶端工具;同一個二進位檔也就是 CLI。
取得映像和 Chart¶
發行版本只從標籤建置:標籤 v1.2.3 會發布映像 <registry>/tenax/tenax:v1.2.3、Chart tenax:1.2.3(OCI),
以及 GitHub release 上的 Linux 和 macOS 版 CLI 二進位檔。main 分支不會發布任何內容。
helm install tenax oci://registry.example.com/helm/tenax --version 1.2.3 -n tenax-system --create-namespace \
-f values.yaml
在程式碼檢出目錄中,helm install tenax charts/tenax … 的用法完全相同。
最小設定值¶
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 不附帶任何特定於組織的預設值:每個端點、主機名和憑證都由你自己設定 (ADR 0002)。全部取值見 Helm 值。
認證與公開¶
兩者都是可插拔的,預設關閉。
| 設定 | 取值 | 作用 |
|---|---|---|
auth.provider |
none · cloudflare-access |
none:每個控制台請求都獲得 auth.devRole(控制台只能透過 tenax console,即 kubectl port-forward 存取)。cloudflare-access:在每個請求上驗證 Cloudflare Access JWT,並把使用者和群組對應到角色;port-forward 獲得 auth.portForwardRole。 |
auth.roles |
viewer · operator · restorer · restorer-admin |
分別對應:誰可以檢視;誰可以備份並還原到沙盒;誰可以還原到新資料庫或下載;誰可以原地還原或固定備份。 |
expose.provider |
none · service · cloudflare |
如何從叢集外存取沙盒:none,tenax sandbox connect 透過 kubeconfig 進行 port-forward;service,每個沙盒一個 Kubernetes Service(負載平衡器、MetalLB、Tailscale、external-dns),任何資料庫用戶端都可透過 TLS 連線;cloudflare,位於 Access 登入之後的通道。參見沙盒。 |
expose.cloudflared.enabled |
true / false |
配合 cloudflare 使用:為沙盒路由(以及設定了 consoleHostname 時的控制台)執行 cloudflared 連接器。 |
詳細資訊參見控制台、CLI 與存取。
安裝了哪些物件¶
| 物件 | 用途 |
|---|---|
| 6 個 CRD | BackupStore、BackupPolicy、BackupTarget、Backup、Restore、Sandbox(參考) |
tenax-controller Deployment(2 個副本,領導者選舉) |
排程備份,執行串流傳輸程式、還原、沙盒、驗證和垃圾回收 |
tenax-api Deployment(2 個副本)和 Service |
控制台、JSON API 和伺服器推送事件(SSE) |
| RBAC | 叢集範圍內讀取 Tenax 資源;在每個目標名稱空間中,只能讀取 tenax-* Secret |
| PrometheusRule、ServiceMonitor、Grafana 儀表板 | 選用,參見監控 |
Pod 以非 root 身分執行,根檔案系統唯讀,禁止提權,並丟棄所有 capabilities。資料只在 Job(搬運程式、還原程式) 和每個目標各自的串流傳輸 Deployment 中移動;控制器和 API 從不經手備份資料。
升級¶
helm upgrade 會替換 CRD(installCRDs: true),並滾動更新控制器和 API。正在執行的備份會完成或重試:
每條資料路徑都是崩潰即復原(crash-only)的,備份只有在其 manifest 寫入之後才算存在。