- Altinity ClickHouse Operator: Kubernetes용 엔터프라이즈급 ClickHouse 관리
- ClickHouse Keeper: 분산 코디네이션 서비스(ZooKeeper 대체)
- ClickHouse Cluster: 트레이스 저장을 위한 고가용성 데이터베이스 클러스터
- S3-Compatible Storage: ClickHouse 데이터 영속성을 위한 객체 저장소
중요한 설정 참고 사항
- 보안 및 규정 준수: 조직의 보안 정책과 Kubernetes/OpenShift 요구 사항에 맞게 보안 컨텍스트,
runAsUser/fsGroup값 및 기타 보안 설정을 조정합니다. - 리소스 크기 산정: 여기에 표시된 리소스 할당은 시작점일 뿐입니다. 예상 트레이스 볼륨과 성능 요구 사항에 맞는 적절한 크기 산정을 위해 W&B Solutions Architect 팀에 문의하세요.
- 인프라별 세부 사항: 저장소 클래스, 노드 셀렉터 및 기타 인프라별 설정을 환경에 맞게 업데이트합니다.
아키텍처
사전 요구 사항
- Kubernetes Cluster: 버전 1.29+
- Kubernetes Nodes: 멀티노드 클러스터(고가용성을 위해 최소 3개 노드 권장)
- Storage Class: 영구 볼륨용으로 정상 작동하는 StorageClass(예:
gp3,standard,nfs-csi) - S3 Bucket: 적절한 액세스 권한이 설정된, 미리 구성된 S3 또는 S3 호환 버킷
- W&B Platform: 이미 설치되어 실행 중이어야 함(W&B 자체 관리형 Deployment Guide 참조)
- W&B License: W&B 지원팀에서 제공하는 Weave 활성화 라이선스
필수 도구
- 클러스터에 접근할 수 있도록 구성된
kubectl helmv3.0+- AWS 자격 증명(S3를 사용하는 경우) 또는 S3 호환 저장소에 대한 접근 권한
네트워크 요구 사항
clickhouse네임스페이스의 파드는wandb네임스페이스의 파드와 통신할 수 있어야 합니다- ClickHouse 노드는 포트 8123, 9000, 9009, 2181을 통해 서로 통신할 수 있어야 합니다
자체 관리형 Weave 인스턴스 배포하기
Step 1: Altinity ClickHouse Operator 배포
1.1 Altinity Helm 저장소 추가하기
1.2 Operator 설정 생성
ch-operator.yaml이라는 이름의 파일을 생성합니다:
containerSecurityContext 값은 대부분의 Kubernetes 배포판에서 잘 동작합니다. OpenShift의 경우 프로젝트에 할당된 UID 범위에 맞게 runAsUser와 fsGroup을 조정해야 할 수 있습니다.
1.3 Operator 설치하기
1.4 Operator 설치 확인
Step 2: S3 저장소 준비
2.1 S3 버킷 생성
2.2 S3 자격 증명 설정
옵션 A: AWS IAM 역할 사용(IRSA - AWS 환경에서 권장)
옵션 B: 액세스 키 사용
ch-server.yaml 설정 참조).
Step 3: ClickHouse Keeper 배포
3.1 Keeper 설정 만들기
ch-keeper.yaml 파일을 만듭니다:
- StorageClass: 클러스터에서 사용 가능한 StorageClass에 맞게
storageClassName: gp3를 업데이트하세요 - Security Context: 조직의 보안 정책을 준수하도록
runAsUser,fsGroup값을 조정하세요 - Anti-Affinity: 클러스터 토폴로지와 HA 요구 사항에 따라
affinity섹션을 사용자 지정하거나 제거하세요 - Resources: CPU/메모리 값은 예시일 뿐입니다 - 적절한 크기 산정을 위해 W&B Solutions Architects와 상의하세요
- Naming:
metadata.name또는configuration.clusters[0].name을 변경하는 경우, 이에 맞게 ch-server.yaml의 Keeper 호스트명(Step 4)을 반드시 업데이트해야 합니다
3.2 ClickHouse Keeper 배포
3.3 Keeper 배포 확인
Step 4: ClickHouse 클러스터 배포
4.1 ClickHouse 서버 설정 생성
ch-server.yaml이라는 이름의 파일을 만듭니다:
- StorageClass:
storageClassName: gp3를 클러스터의 StorageClass에 맞게 업데이트하세요 - S3 Endpoint:
YOUR-BUCKET-NAME및YOUR-REGION을 실제 값으로 바꾸세요 - Cache Size:
<max_size>40Gi</max_size>는 영구 볼륨 크기(50Gi)보다 반드시 작아야 합니다 - 보안 컨텍스트:
runAsUser,fsGroup및 기타 보안 설정을 조직 정책에 맞게 조정하세요 - Resource Allocation: CPU/메모리 값은 예시일 뿐이므로, 예상 트레이스 볼륨에 맞는 적절한 크기 산정을 위해 W&B Solutions Architect와 상의하세요
- Anti-Affinity Rules: 클러스터 토폴로지와 고가용성 요구 사항에 따라 사용자 지정하거나 제거하세요
- Keeper Hostnames: Keeper 노드 호스트명은 Step 3의 Keeper deployment 이름과 반드시 일치해야 합니다(아래의 “Keeper Naming 이해하기” 참조)
- Cluster Naming: 클러스터 이름
weavecluster는 변경할 수 있지만, Step 5의WF_CLICKHOUSE_REPLICATED_CLUSTER값과 일치해야 합니다 - 자격 증명:
- IRSA의 경우:
<use_environment_credentials>true</use_environment_credentials>를 유지하거나 환경 변수에 매핑된 시크릿 키를 사용하세요.
- IRSA의 경우:
4.2 S3 설정 업데이트
ch-server.yaml에서 storage_configuration.xml 섹션을 수정합니다:
AWS S3 예시:
4.3 자격 증명 구성(옵션 B만 해당)
ch-server.yaml의 env 섹션이 시크릿을 참조하는지 확인하세요:
env 섹션 전체를 제거하세요.
4.4 Keeper 이름 규칙 이해하기
zookeeper.nodes 섹션의 Keeper 노드 호스트 이름은 Step 3에서 배포한 Keeper를 기준으로 특정 패턴을 따릅니다.
호스트 이름 패턴: chk-{installation-name}-{cluster-name}-{cluster-index}-{replica-index}.{namespace}.svc.cluster.local
각 항목의 의미는 다음과 같습니다:
chk= ClickHouseKeeperInstallation 접두사 (고정){installation-name}= ch-keeper.yaml의metadata.name(예:wandb){cluster-name}= ch-keeper.yaml의configuration.clusters[0].name(예:keeper){cluster-index}= 클러스터 인덱스, 단일 클러스터인 경우 일반적으로0{replica-index}= 복제본 번호: 복제본이 3개이면0,1,2{namespace}= Kubernetes 네임스페이스 (예:clickhouse)
metadata.name: myweave):
clusters[0].name: coordination):
ch-server.yaml의 Keeper 호스트 이름은 Keeper 배포에서 실제로 생성된 서비스 이름과 정확히 일치해야 하며, 그렇지 않으면 ClickHouse 서버가 조정 서비스에 연결하지 못합니다.4.5 ClickHouse 클러스터 배포
4.6 ClickHouse 배포 확인
Step 5: W&B Platform에서 Weave 활성화
5.1 ClickHouse 연결 정보 확인
- 호스트:
clickhouse-wandb.clickhouse.svc.cluster.local - 포트:
8123 - 사용자:
weave(ch-server.yaml에 설정된 값) - 비밀번호:
weave123(ch-server.yaml에 설정된 값) - 데이터베이스:
weave(자동으로 생성됨) - 클러스터 이름:
weavecluster(ch-server.yaml에 설정된 값)
clickhouse-{installation-name}.{namespace}.svc.cluster.local
5.2 W&B Custom Resource 업데이트
clickhouse.replicated: true- 레플리카 3개를 사용할 때 필수WF_CLICKHOUSE_REPLICATED: "true"- 복제 구성을 사용할 때 필수WF_CLICKHOUSE_REPLICATED_CLUSTER: "weavecluster"- ch-server.yaml의 클러스터 이름과 반드시 일치해야 함
위에 표시된 보안 컨텍스트, 리소스 할당 및 기타 Kubernetes 관련 설정은 참고용 예시입니다. 조직의 요구 사항에 맞게 사용자 지정하고, 적절한 리소스 규모 산정을 위해 W&B Solutions Architect 팀과 상의하세요.
5.3 업데이트된 설정 적용하기
5.4 Weave Trace 배포 확인
Step 6: Weave 데이터베이스 초기화
6.1 데이터베이스 마이그레이션 모니터링
6.2 데이터베이스가 생성되었는지 확인
Step 7: Weave 활성화 여부 확인
7.1 W&B Console에 접속
7.2 Weave 라이선스 상태 확인
- Top Right Menu → Organization Dashboard로 이동합니다.
- Weave access가 활성화되었는지 확인합니다.
7.3 Weave 기능 테스트
문제 해결
ClickHouse Keeper 문제
Pending 상태에서 멈춰 있음
해결 방법: 가능한 여러 원인을 확인하세요:
- PVC 및 StorageClass 문제:
- 안티 어피니티 및 노드 가용성:
- 안티 어피니티를 사용하려면 서로 다른 3개의 노드가 필요하지만, 클러스터의 노드 수가 그보다 적습니다
- 노드에 파드의 요청을 충족할 만큼 충분한 CPU/메모리가 없습니다
- 노드 테인트 때문에 파드 스케줄링이 되지 않습니다
- 노드가 3개 미만이면 안티 어피니티 규칙을 제거하거나 조정합니다
- 안티 어피니티를 더 완화하려면
requiredDuringSchedulingIgnoredDuringExecution대신preferredDuringSchedulingIgnoredDuringExecution를 사용합니다 - 노드 리소스가 부족하면 리소스 요청을 줄입니다
- 클러스터에 노드를 더 추가합니다
문제: Keeper 파드가
CrashLoopBackOff 상태입니다
해결 방법: 로그를 확인하고 설정을 확인합니다:
- 잘못된 보안 컨텍스트(
runAsUser,fsGroup확인) - 볼륨 권한 문제
- 포트 충돌
ch-keeper.yaml의 설정 오류
ClickHouse Server 문제
문제: ClickHouse가 Keeper에 연결할 수 없습니다 해결 방법: Keeper 엔드포인트와 이름 설정을 확인합니다:
Weave 트레이스 문제
weave-trace 파드가 시작되지 않음
해결 방법: ClickHouse 연결 상태를 확인하세요:
문제: Console에서 Weave가 활성화된 것으로 표시되지 않음 해결 방법: 설정을 확인합니다.
-
라이선스에 Weave가 포함되어 있는지 확인합니다.
-
wandb-cr.yaml에서
weave-trace.enabled: true및clickhouse.replicated: true가 설정되어 있는지 확인합니다. -
W&B Operator 로그를 확인합니다.
문제: 데이터베이스 마이그레이션 실패 해결 방법: 클러스터 이름이 일치하는지 확인합니다.
WF_CLICKHOUSE_REPLICATED_CLUSTER 환경 변수는 ch-server.yaml의 클러스터 이름과 반드시 일치해야 합니다:
리소스 요구 사항
최소 프로덕션 설정
적합한 환경: 개발, 테스트 또는 트래픽이 적은 프로덕션 환경
권장 프로덕션 설정
적합한 환경: 대규모 프로덕션 환경
초대규모 배포의 경우, 특정 트레이스 양과 성능 요구 사항을 기반으로 한 맞춤형 크기 권장 사항을 받으려면 W&B Solutions Architect 팀에 문의하세요.
고급 설정
ClickHouse 스케일링
-
수직 스케일링: 파드당 리소스를 늘립니다(더 간단한 방법)
권장 사항: 실제 리소스 사용량을 모니터링하고 그에 맞춰 스케일링하세요. 매우 높은 볼륨의 배포에서는 W&B Solutions Architect 팀에 문의하세요.
-
수평 스케일링: 레플리카를 추가합니다(신중한 계획이 필요함)
- 레플리카를 늘리려면 데이터를 재분산해야 합니다
- 샤드 관리에 대해서는 ClickHouse 문서를 참조하세요
- 프로덕션에서 수평 스케일링을 구현하기 전에 W&B Solutions Architect에 문의하세요
다른 ClickHouse 버전 사용하기
ClickHouse 모니터링
백업 및 복구
보안 고려사항
- 자격 증명: ClickHouse 비밀번호는 일반 텍스트가 아닌 Kubernetes 시크릿에 저장하세요
- 네트워크 정책: ClickHouse에 대한 접근을 제한할 수 있도록 NetworkPolicies 구현을 고려하세요
- RBAC: 서비스 계정에는 필요한 최소 권한만 부여되었는지 확인하세요
- S3 버킷: 저장 데이터 암호화를 활성화하고 버킷 접근은 필요한 IAM 역할로만 제한하세요
- TLS (선택): 프로덕션 환경에서는 ClickHouse 클라이언트 연결에 TLS를 활성화하세요
업그레이드하기
ClickHouse Operator 업그레이드
ClickHouse Server 업그레이드
ch-server.yaml에서 이미지 버전을 업데이트한 다음 적용하세요:
Weave Trace 업그레이드
wandb-cr.yaml의 이미지 태그를 업데이트한 후 적용하세요:
추가 자료
지원팀
- W&B 지원팀:
support@wandb.com - Solutions Architects: 초대규모 배포, 맞춤형 sizing, 배포 계획이 필요한 경우
- 지원 요청 시 포함할 내용:
- weave-trace, ClickHouse 파드, Operator의 로그
- W&B 버전, ClickHouse 버전, Kubernetes 버전
- 클러스터 정보 및 트레이스 볼륨
FAQ
replicasCount: 1로 업데이트하고, wandb-cr.yaml에서 clickhouse.replicated: false로 설정하세요.
Q: ClickHouse 대신 다른 데이터베이스를 사용할 수 있나요?
A: 아니요. Weave Trace는 고성능 컬럼형 저장 기능을 위해 ClickHouse가 필요합니다.
Q: S3 저장소는 얼마나 필요하나요?
A: 필요한 S3 저장소 용량은 트레이스 볼륨, 보존 기간, 데이터 압축에 따라 달라집니다. deployment 후 실제 사용량을 모니터링하고 그에 맞게 조정하세요. ClickHouse의 컬럼형 포맷은 트레이스 데이터에 매우 뛰어난 압축 효율을 제공합니다.
Q: ClickHouse에서 database 이름을 설정해야 하나요?
A: 아니요. weave 데이터베이스는 초기 시작 시 weave-trace 서비스가 자동으로 생성합니다.
Q: 클러스터 이름이 weavecluster가 아니면 어떻게 하나요?
A: WF_CLICKHOUSE_REPLICATED_CLUSTER 환경 변수를 클러스터 이름과 일치하도록 설정해야 합니다. 그렇지 않으면 데이터베이스 마이그레이션이 실패합니다.
Q: 예시에 나온 보안 컨텍스트를 그대로 사용해야 하나요?
A: 아니요. 이 가이드에 나온 보안 컨텍스트(runAsUser, fsGroup 등)는 레퍼런스 예시입니다. 조직의 보안 정책을 준수하도록 반드시 조정해야 하며, 특히 OpenShift 클러스터는 특정 UID/GID 범위 requirements가 있으므로 주의해야 합니다.
Q: ClickHouse 클러스터 크기를 올바르게 산정했는지 어떻게 알 수 있나요?
A: 예상 트레이스 볼륨과 사용 패턴을 W&B Solutions Architect 팀에 문의하세요. 그러면 구체적인 사이징 권장 사항을 제공합니다. deployment의 리소스 사용량을 모니터링하고 필요에 따라 조정하세요.
Q: 예제에서 사용된 naming convention을 사용자 지정할 수 있나요?
A: 예. 하지만 모든 컴포넌트에서 일관성을 유지해야 합니다.
- ClickHouse Keeper 이름 → ch-server.yaml의
zookeeper.nodessection에 있는 Keeper 노드 호스트 이름과 일치해야 합니다. - ClickHouse 클러스터 이름 (
weavecluster) → wandb-cr.yaml의WF_CLICKHOUSE_REPLICATED_CLUSTER와 일치해야 합니다. - ClickHouse 설치 이름 → weave-trace에서 사용하는 서비스 호스트 이름에 영향을 줍니다.