- 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 Self-Managed Deployment Guide를 참조하세요.
- W&B license: W&B Support에서 제공하는 Weave 사용 가능 라이선스
필수 도구
- 클러스터에 접근할 수 있도록 구성된
kubectl. helm버전 3.0 이상.- AWS 자격 증명(S3를 사용하는 경우) 또는 S3 호환 저장소에 대한 접근 권한.
네트워크 요구 사항
clickhouse네임스페이스의 파드는wandb네임스페이스의 파드와 통신할 수 있어야 합니다.- ClickHouse 노드는 포트
8123,9000,9009,2181을 통해 서로 통신할 수 있어야 합니다.
자체 관리형 Weave 인스턴스 배포
Altinity ClickHouse Operator 배포
Altinity Helm 저장소 추가하기
오퍼레이터 설정 생성
ch-operator.yaml이라는 이름의 파일을 생성합니다. 이 파일은 오퍼레이터 배포를 위한 보안 컨텍스트와 메타데이터를 정의합니다:
containerSecurityContext 값은 대부분의 Kubernetes 배포판에서 잘 동작합니다. OpenShift의 경우 프로젝트에 할당된 UID 범위에 맞게 runAsUser와 fsGroup을 조정해야 할 수 있습니다.
Operator 설치하기
오퍼레이터 설치 확인하기
S3 저장소 준비
S3 버킷 생성
[BUCKET-NAME]은 버킷 이름으로, [REGION]은 AWS 리전으로 바꾸세요:
S3 자격 증명 설정
옵션 A: AWS IAM 역할 사용(IRSA, AWS 환경에서 권장)
옵션 B: 액세스 키 사용
[ACCESS-KEY]는 AWS 액세스 키로, [SECRET-KEY]는 AWS 시크릿 키로 바꾸세요:
ClickHouse Keeper 배포
Keeper 설정 만들기
ch-keeper.yaml 파일을 만드세요. 이 매니페스트는 안티 어피니티, 영구 저장소, 그리고 Altinity operator가 Keeper 파드를 프로비저닝할 때 사용하는 설정이 포함된 레플리카 3개의 Keeper 클러스터를 정의합니다:
- StorageClass: 클러스터에서 사용 가능한 StorageClass에 맞게
storageClassName: gp3를 업데이트하세요. - 보안 컨텍스트: 조직의 보안 정책을 준수하도록
runAsUser및fsGroup값을 조정하세요. - 안티 어피니티: 클러스터 토폴로지와 HA 요구 사항에 따라
affinity섹션을 사용자 지정하거나 제거하세요. - Resources: CPU 및 메모리 값은 예시입니다. 적절한 사이징을 위해 W&B Solutions Architects와 상의하세요.
- Naming:
metadata.name또는configuration.clusters[0].name을 변경하는 경우, 이에 맞게ch-server.yaml의 Keeper 호스트명(Step 4)을 업데이트해야 합니다.
ClickHouse Keeper 리소스 배포
Keeper 배포 확인
ClickHouse 클러스터 배포
ClickHouse 서버 설정 생성
ch-server.yaml이라는 이름의 파일을 만드세요. 이 매니페스트는 ClickHouse 클러스터, Keeper 연결, Weave 사용자 계정, 그리고 트레이스 데이터에 사용되는 S3 저장소 정책을 선언합니다:
- StorageClass:
storageClassName: gp3를 클러스터의 StorageClass에 맞게 업데이트하세요. - S3 endpoint:
[BUCKET-NAME]및[REGION]을 실제 값으로 바꾸세요. - Cache size:
<max_size>40Gi</max_size>는 영구 볼륨 크기(50Gi)보다 작아야 합니다. - Security context:
runAsUser,fsGroup및 기타 보안 설정을 조직의 정책에 맞게 조정하세요. - Resource allocation: CPU 및 메모리 값은 예시입니다. 예상 트레이스 볼륨에 맞는 적절한 사이징은 W&B Solutions Architect와 상의하세요.
- 안티 어피니티 rules: 클러스터 토폴로지와 고가용성 요구 사항에 따라 사용자 지정하거나 제거하세요.
- Keeper hostnames: Keeper 노드 호스트 이름은 3단계의 Keeper 배포 명명과 일치해야 합니다(“Keeper naming” 참조).
- Cluster naming: 클러스터 이름
weavecluster는 변경할 수 있지만, 5단계의WF_CLICKHOUSE_REPLICATED_CLUSTER값과 일치해야 합니다. - Credentials:
- IRSA의 경우:
<use_environment_credentials>true</use_environment_credentials>를 유지하거나 환경 변수에 매핑된 시크릿 키를 사용해 액세스하세요.
- IRSA의 경우:
S3 설정 업데이트
ch-server.yaml에서 storage_configuration.xml 섹션을 수정합니다.
AWS S3 예시:
자격 증명 구성(옵션 B만 해당)
ch-server.yaml의 env 섹션이 시크릿을 참조하는지 확인하세요:
env 섹션 전체를 제거하세요.
Keeper 이름 지정
zookeeper.nodes 섹션의 Keeper 노드 호스트 이름은 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]는 replica 번호입니다. replica가 3개인 경우0,1,2입니다.[NAMESPACE]는 Kubernetes 네임스페이스입니다(예:clickhouse).
metadata.name: myweave):
clusters[0].name: coordination):
ch-server.yaml의 Keeper 호스트 이름은 Keeper deployment에서 생성된 실제 서비스 이름과 정확히 일치해야 합니다. 그렇지 않으면 ClickHouse 서버가 coordination service에 연결할 수 없습니다.ClickHouse 클러스터 리소스 배포
ClickHouse 배포 확인
W&B Platform에서 Weave 활성화
weave-trace 서비스를 활성화합니다.
ClickHouse 연결 정보 확인
- 호스트:
clickhouse-wandb.clickhouse.svc.cluster.local - 포트:
8123 - 사용자:
weave(ch-server.yaml에 설정된 값) - 비밀번호:
ch-server.yaml에서 설정한 비밀번호 - 데이터베이스:
weave(자동으로 생성됨) - 클러스터 이름:
weavecluster(ch-server.yaml에 설정된 값)
clickhouse-[INSTALLATION-NAME].[NAMESPACE].svc.cluster.local
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 팀과 상의하세요.
업데이트된 설정 적용하기
Weave Trace 배포 확인
Weave 데이터베이스 초기화
데이터베이스 마이그레이션 모니터링
데이터베이스 생성 여부 확인
Weave가 활성화되어 있는지 확인
W&B Console에 접속
Weave 라이선스 상태 확인
- Top Right Menu > Organization Dashboard로 이동합니다.
- Weave access가 활성화되었는지 확인합니다.
Weave 기능 테스트
문제 해결
ClickHouse Keeper 문제
Pending 상태에서 멈춰 있음
해결 방법: 가능한 여러 원인을 확인하세요:
- PVC 및 StorageClass 문제:
- 안티 어피니티 및 노드 가용성:
- 안티 어피니티를 사용하려면 서로 다른 3개의 노드가 필요하지만, 클러스터의 노드 수가 그보다 적습니다
- 노드에 파드의 요청을 충족할 만큼 충분한 CPU/메모리가 없습니다
- 노드 테인트 때문에 파드 스케줄링이 되지 않습니다
- 노드가 3개 미만이면 안티 어피니티 규칙을 제거하거나 조정합니다
- 안티 어피니티를 더 완화하려면
requiredDuringSchedulingIgnoredDuringExecution대신preferredDuringSchedulingIgnoredDuringExecution를 사용합니다 - 노드 리소스가 부족하면 리소스 요청을 줄입니다
- 클러스터에 노드를 더 추가합니다
문제: Keeper 파드가
CrashLoopBackOff 상태입니다
해결 방법: 로그를 확인하고 설정을 확인합니다:
- 잘못된 보안 컨텍스트(
runAsUser및fsGroup확인). - 볼륨 권한 문제.
- 포트 충돌.
ch-keeper.yaml의 설정 오류.
ClickHouse 서버 문제
문제: ClickHouse가 Keeper에 연결할 수 없음 해결 방법: Keeper 엔드포인트와 이름 설정을 확인하세요:
ch-server.yaml의 Keeper 호스트 이름이 실제 Keeper 배포 환경과 일치하지 않을 가능성이 높습니다. 명명 패턴은 4단계의 “Keeper naming”을 참조하세요.
Weave Trace 문제
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 버전 사용하기
ch-keeper.yaml과 ch-server.yaml의 이미지 태그를 모두 업데이트하세요:
ClickHouse 모니터링
백업 및 복구
보안 고려 사항
- 자격 증명: ClickHouse 비밀번호는 일반 텍스트가 아니라 Kubernetes 시크릿에 저장하세요.
- 네트워크 정책: ClickHouse에 대한 액세스를 제한하려면 NetworkPolicies 구현을 고려하세요.
- RBAC: 서비스 계정에 필요한 최소한의 권한만 부여되어 있는지 확인하세요.
- S3 버킷: 저장 데이터 암호화를 활성화하고, 버킷 액세스는 필요한 IAM 역할로만 제한하세요.
- TLS: 선택 사항입니다. 프로덕션 환경에서는 ClickHouse 클라이언트 연결에 TLS를 활성화하세요.
업그레이드
Weave와 Models OLAP 특성 모두에 ClickHouse를 사용하는 Self-Managed 배포 환경은 두 제품의 버전 요구 사항을 모두 충족해야 합니다. Models OLAP 특성과 Weave는 ClickHouse 버전 요구 사항이 서로 다를 수 있습니다.ClickHouse 또는 W&B Server를 업그레이드하기 전에 업그레이드를 위한 ClickHouse 호환성 및 지원되는 W&B Server 릴리스를 참조하세요. ClickHouse Server와 ClickHouse Keeper는 함께 업그레이드하세요.
ClickHouse Operator 업그레이드
ClickHouse Server 업그레이드
ch-keeper.yaml 및 ch-server.yaml에서 이미지 버전을 업데이트한 다음 서버 매니페스트를 적용하세요:
Weave Trace 업그레이드
wandb-cr.yaml의 이미지 태그를 업데이트한 후 적용하세요:
추가 자료
지원팀
- W&B 지원팀:
support@wandb.com - Solutions Architects: 초대규모 배포, 맞춤형 사이징, 배포 계획이 필요한 경우.
- 지원 요청 시 포함할 내용:
weave-trace, ClickHouse 파드, 그리고 operator의 로그.- W&B 버전, ClickHouse 버전, Kubernetes 버전.
- 클러스터 정보 및 트레이스 볼륨.
FAQ
ch-server.yaml에서 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-trace 서비스가 초기 시작 시 weave 데이터베이스를 자동으로 생성합니다.
Q: 클러스터 이름이 weavecluster가 아니면 어떻게 하나요?
A: 클러스터 이름에 맞게 WF_CLICKHOUSE_REPLICATED_CLUSTER 환경 변수를 설정해야 합니다. 그렇지 않으면 데이터베이스 마이그레이션이 실패합니다.
Q: 예시에 나온 security context를 그대로 사용해야 하나요?
A: 아니요. 이 가이드에 나온 runAsUser, fsGroup 등의 security context는 레퍼런스 예시입니다. 특히 특정 UID 및 GID 범위 요구 사항이 있는 OpenShift cluster의 경우, 조직의 보안 정책을 준수하도록 반드시 조정해야 합니다.
Q: ClickHouse cluster를 올바르게 사이징했는지 어떻게 알 수 있나요?
A: 예상 트레이스 볼륨과 사용 패턴을 W&B Solutions Architect 팀에 공유해 문의하세요. 해당 팀에서 사이징 권장 사항을 제공합니다. deployment의 리소스 사용량을 모니터링하고 필요에 따라 조정하세요.
Q: 예시에서 사용된 Naming 규칙을 사용자 지정할 수 있나요?
A: 예. 하지만 모든 컴포넌트에서 일관성을 유지해야 합니다.
- ClickHouse Keeper 이름:
ch-server.yaml의zookeeper.nodes섹션에 있는 Keeper 노드 호스트 이름과 일치해야 합니다. - ClickHouse cluster name (
weavecluster):wandb-cr.yaml의WF_CLICKHOUSE_REPLICATED_CLUSTER와 일치해야 합니다. - ClickHouse 설치 이름:
weave-trace에서 사용하는 서비스 호스트 이름에 영향을 줍니다.