跳转至

安装

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