ClickHouseCluster 구성
기본 구성
레플리카와 세그먼트
- 레플리카: 세그먼트당 ClickHouse 인스턴스 수(고가용성을 위해)
- 세그먼트: 수평 파티션 수(스케일링을 위해)
replicas: 3 및 shards: 2로 구성된 클러스터는 총 6개의 ClickHouse 파드를 생성합니다.
Keeper 통합
keeperClusterRef.namespace가 설정되면 연산자는 두 네임스페이스를 모두 감시해야 합니다. WATCH_NAMESPACE가 구성되어 있다면 해당 목록에 ClickHouse와 Keeper 네임스페이스를 모두 포함하십시오.
KeeperCluster 구성
저장소 구성
Operator는 사용 중인 스토리지 클래스가 볼륨 확장을 지원하는 경우에만 기존 PVC를 수정할 수 있습니다.
파드 구성
토폴로지 분산 및 어피니티 자동 설정
분산 제약 조건을 충족할 수 있도록 Kubernetes 클러스터에 서로 다른 zone에 걸쳐 충분한 수의 노드가 있는지 확인하세요.
수동 구성
파드 중단 예산
기본값
apply해도 우발적인 정족수 손실을 방지할 수 있습니다.
replicas: 3인 3개 세그먼트 ClickHouseCluster의 경우, 연산자는 세그먼트마다 하나씩 총 3개의 PDB를 생성하며, 각각 minAvailable: 1로 설정합니다.
기본값 덮어쓰기
minAvailable 또는 maxUnavailable 중 정확히 하나를 재정의하려면 spec.podDisruptionBudget를 사용합니다:
maxUnavailable 형식:
unhealthyPodEvictionPolicy 필드를 생성된 PDB에 전달할 수도 있습니다. 이는 아직 NotReady 상태인 파드의 축출(eviction)을 허용해야 할 때 유용합니다:
정책
spec.podDisruptionBudget.policy를 사용하면 연산자가 PDB를 어느 정도 적극적으로 관리할지 선택할 수 있습니다.
예시 — 개발 클러스터에서 PDB 관리를 완전히 비활성화합니다:
클러스터 전체 비활성화
ENABLE_PDB 환경 변수를 통해 클러스터 전체에서 비활성화할 수도 있습니다. ENABLE_PDB=false로 설정하면 오퍼레이터는 각 ClickHouseCluster 및 KeeperCluster의 spec.podDisruptionBudget.policy와 관계없이 모든 ClickHouseCluster와 KeeperCluster에 대해 PDB reconcile 단계를 건너뛰고, PodDisruptionBudget 리소스는 전혀 감시하지 않습니다. 따라서 오퍼레이터의 ServiceAccount에는 poddisruptionbudgets.policy/v1에 대한 RBAC 권한이 필요하지 않으며, 이는 해당 권한을 의도적으로 제외한 제한된 ServiceAccount로 오퍼레이터를 실행할 때 유용합니다.
컨테이너 구성
사용자 지정 이미지
컨테이너 리소스
환경 변수
볼륨 마운트
동일한
mountPath에 여러 볼륨 마운트를 지정할 수 있습니다.
Operator는 지정된 모든 마운트를 포함하는 프로젝티드 볼륨을 생성합니다.TLS/SSL 구성
보안 endpoint 구성
SSL 인증서 시크릿 포맷
tls.crt- PEM으로 인코딩된 서버 인증서tls.key- PEM으로 인코딩된 개인 키ca.crt- PEM으로 인코딩된 CA 인증서 체인
이 포맷은 cert-manager에서 생성한 인증서와 호환됩니다.
TLS를 통한 ClickHouse-Keeper 통신
ca.crt 번들을 사용합니다. 그렇지 않으면 기본 CA 번들이 사용됩니다.
사용자가 사용자 지정 CA 번들 참조를 제공할 수 있습니다:
ClickHouse 설정
기본 사용자 비밀번호
ConfigMap에 일반 텍스트 비밀번호를 저장하는 것은 권장되지 않습니다.
사용자 비밀번호에 ConfigMap 사용하기
구성의 사용자 지정 사용자
데이터베이스 동기화
사용자 지정 구성
내장 추가 구성
extraConfig를 사용하여 사용자 지정 ClickHouse 구성을 추가하십시오:
유용한 링크:
내장된 추가 사용자 구성
extraUsersConfig를 사용해 추가 ClickHouse 사용자 구성을 지정할 수도 있습니다. 이는 클러스터 사양에서 사용자, 프로필, 쿼터, 권한 부여를 직접 정의할 때 유용합니다.
extraUsersConfig는 k8s ConfigMap 객체에 저장됩니다. 여기에 평문 시크릿을 저장하지 마십시오.