安装¶
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 写入之后才算存在。