콘텐츠로 이동

설치

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 …도 같은 방식으로 동작합니다.

최소 값

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을 받습니다(콘솔에는 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를 순차 재시작합니다. 실행 중인 백업은 끝까지 완료되거나 재시도됩니다. 모든 데이터 경로는 크래시 전용이며, 백업은 매니페스트가 기록된 뒤에야 존재합니다.