설치¶
Tenax는 Helm 차트 하나와 이미지 하나로 구성됩니다. 이미지에는 tenax 바이너리와, 데이터 mover가 실행하는
Postgres 15/16/17 및 MySQL 8.4 클라이언트 도구가 들어 있습니다. 같은 바이너리가 CLI이기도 합니다.
이미지와 차트 받기¶
릴리스는 태그에서만 빌드됩니다. v1.2.3 태그는 이미지 <registry>/tenax/tenax:v1.2.3, 차트 tenax:1.2.3(OCI),
그리고 GitHub 릴리스의 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 …도 같은 방식으로 동작합니다.
최소 값¶
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을 받습니다(콘솔에는 kubectl port-forward인 tenax console로만 접근). cloudflare-access: 모든 요청에서 Cloudflare Access JWT를 검증하고 사용자와 그룹을 역할에 매핑합니다. 포트 포워딩은 auth.portForwardRole을 받습니다. |
auth.roles |
viewer · operator · restorer · restorer-admin |
각각 조회, 백업 및 샌드박스로 복원, 새 데이터베이스나 다운로드로 복원, 제자리 복원 및 고정을 할 수 있는 사람. |
expose.provider |
none · service · cloudflare |
클러스터 외부에서 샌드박스에 접근하는 방법: none은 tenax sandbox connect가 kubeconfig를 통해 포트 포워딩, service는 샌드박스마다 Kubernetes Service(로드 밸런서, MetalLB, Tailscale, external-dns)를 두어 모든 데이터베이스 클라이언트가 TLS로 접속, cloudflare는 Access 로그인 뒤의 터널. 샌드박스를 참고하세요. |
expose.cloudflared.enabled |
true / false |
cloudflare 사용 시: 샌드박스 경로(그리고 consoleHostname이 설정된 경우 콘솔)를 위한 cloudflared 커넥터를 실행합니다. |
자세한 내용은 콘솔, CLI, 접근 권한을 참고하세요.
설치되는 항목¶
| 오브젝트 | 용도 |
|---|---|
| CRD 6개 | BackupStore, BackupPolicy, BackupTarget, Backup, Restore, Sandbox (레퍼런스) |
tenax-controller Deployment (레플리카 2개, 리더 선출) |
백업 예약, streamer 실행, 복원, 샌드박스, 검증, 가비지 컬렉션 |
tenax-api Deployment (레플리카 2개)와 Service |
콘솔, JSON API, server-sent events |
| RBAC | 클러스터 전체에서 Tenax 리소스 읽기, 대상 네임스페이스마다 tenax-* Secret만 읽기 |
| PrometheusRule, ServiceMonitor, Grafana 대시보드 | 선택 사항, 모니터링 참고 |
파드는 non-root로, 읽기 전용 루트 파일시스템을 사용하고 권한 상승 없이 모든 capability를 제거한 상태로 실행됩니다. 데이터는 Job(mover, restorer)과 대상별 streamer Deployment에서만 이동하며, 컨트롤러와 API는 백업 데이터를 절대 다루지 않습니다.
업그레이드¶
helm upgrade는 CRD를 교체하고(installCRDs: true) 컨트롤러와 API를 순차 재시작합니다. 실행 중인 백업은 끝까지
완료되거나 재시도됩니다. 모든 데이터 경로는 크래시 전용이며, 백업은 매니페스트가 기록된 뒤에야 존재합니다.