Skip to main content
이 가이드에서는 ClickHouse 연산자를 사용해 ClickHouse 및 Keeper 클러스터를 구성하는 방법을 안내합니다.

ClickHouseCluster 구성

기본 구성

레플리카와 세그먼트

  • 레플리카: 세그먼트당 ClickHouse 인스턴스 수(고가용성을 위해)
  • 세그먼트: 수평 파티션 수(스케일링을 위해)
replicas: 3shards: 2로 구성된 클러스터는 총 6개의 ClickHouse 파드를 생성합니다.

Keeper 통합

모든 ClickHouse 클러스터는 클러스터 조정을 위해 KeeperCluster를 참조해야 합니다:
keeperClusterRef.namespace가 설정되면 연산자는 두 네임스페이스를 모두 감시해야 합니다. WATCH_NAMESPACE가 구성되어 있다면 해당 목록에 ClickHouse와 Keeper 네임스페이스를 모두 포함하십시오.

KeeperCluster 구성

저장소 구성

영구 저장소를 구성합니다:
Operator는 사용 중인 스토리지 클래스가 볼륨 확장을 지원하는 경우에만 기존 PVC를 수정할 수 있습니다.

파드 구성

토폴로지 분산 및 어피니티 자동 설정

가용 영역에 걸쳐 파드를 분산합니다:
분산 제약 조건을 충족할 수 있도록 Kubernetes 클러스터에 서로 다른 zone에 걸쳐 충분한 수의 노드가 있는지 확인하세요.

수동 구성

사용자 정의 파드 어피니티/안티어피니티 규칙과 토폴로지 분산 제약 조건을 지정할 수 있습니다.

지원되는 모든 파드 템플릿 옵션은 API 참조를 참조하십시오.

파드 중단 예산

연산자는 자발적 중단(노드 드레인, 롤링 업그레이드, 오토스케일러 축출)으로 인해 정족수(quorum)를 잃거나 가용성을 해칠 만큼 많은 파드가 중단되지 않도록 각 클러스터에 대해 PodDisruptionBudget (PDB)를 생성합니다. 세그먼트가 2개 이상인 ClickHouse 클러스터에서는 세그먼트마다 PDB가 하나씩 생성되므로 한 세그먼트에서 발생한 중단이 다른 세그먼트에 영향을 미치지 않습니다.

기본값

연산자는 클러스터 크기에 따라 안전한 기본값을 선택하므로, 새로 apply해도 우발적인 정족수 손실을 방지할 수 있습니다. replicas: 3인 3개 세그먼트 ClickHouseCluster의 경우, 연산자는 세그먼트마다 하나씩 총 3개의 PDB를 생성하며, 각각 minAvailable: 1로 설정합니다.

기본값 덮어쓰기

minAvailable 또는 maxUnavailable 중 정확히 하나를 재정의하려면 spec.podDisruptionBudget를 사용합니다:
또는 백분율을 지정하는 maxUnavailable 형식:
minAvailablemaxUnavailable를 동시에 설정하면 유효성 검사 웹훅에서 거부됩니다. 둘 다 함께 허용되지 않으므로 하나만 선택하세요.
unhealthyPodEvictionPolicy 필드를 생성된 PDB에 전달할 수도 있습니다. 이는 아직 NotReady 상태인 파드의 축출(eviction)을 허용해야 할 때 유용합니다:

정책

spec.podDisruptionBudget.policy를 사용하면 연산자가 PDB를 어느 정도 적극적으로 관리할지 선택할 수 있습니다. 예시 — 개발 클러스터에서 PDB 관리를 완전히 비활성화합니다:
예시 — 직접 만든 PDB를 클러스터 옆에 두고 연산자가 이를 건드리지 못하게 하십시오:

클러스터 전체 비활성화

PDB 관리는 오퍼레이터의 ENABLE_PDB 환경 변수를 통해 클러스터 전체에서 비활성화할 수도 있습니다. ENABLE_PDB=false로 설정하면 오퍼레이터는 각 ClickHouseCluster 및 KeeperCluster의 spec.podDisruptionBudget.policy와 관계없이 모든 ClickHouseCluster와 KeeperCluster에 대해 PDB reconcile 단계를 건너뛰고, PodDisruptionBudget 리소스는 전혀 감시하지 않습니다. 따라서 오퍼레이터의 ServiceAccount에는 poddisruptionbudgets.policy/v1에 대한 RBAC 권한이 필요하지 않으며, 이는 해당 권한을 의도적으로 제외한 제한된 ServiceAccount로 오퍼레이터를 실행할 때 유용합니다.
이는 자체 중단 정책(예: Gatekeeper / Kyverno 사용)을 적용하고 연산자를 이 과정에서 완전히 배제하려는 환경을 위한 것입니다.

컨테이너 구성

사용자 지정 이미지

특정 ClickHouse 이미지를 사용하세요:

컨테이너 리소스

ClickHouse 컨테이너의 CPU와 메모리를 설정합니다:

환경 변수

사용자 환경 변수를 추가합니다:

볼륨 마운트

추가 볼륨 마운트를 설정합니다:
동일한 mountPath에 여러 볼륨 마운트를 지정할 수 있습니다. Operator는 지정된 모든 마운트를 포함하는 프로젝티드 볼륨을 생성합니다.

지원되는 모든 컨테이너 템플릿 옵션은 API 참조에서 확인하십시오.

TLS/SSL 구성

보안 endpoint 구성

TLS 인증서가 포함된 Kubernetes 시크릿을 참조하도록 설정하여 보안 endpoint를 활성화합니다

SSL 인증서 시크릿 포맷

시크릿에는 다음 키가 포함되어 있어야 합니다:
  • tls.crt - PEM으로 인코딩된 서버 인증서
  • tls.key - PEM으로 인코딩된 개인 키
  • ca.crt - PEM으로 인코딩된 CA 인증서 체인
이 포맷은 cert-manager에서 생성한 인증서와 호환됩니다.

TLS를 통한 ClickHouse-Keeper 통신

KeeperCluster에서 TLS가 활성화되어 있으면 ClickHouseCluster는 자동으로 Keeper 노드에 대한 보안 연결(connection)을 사용합니다. ClickHouseCluster는 Keeper 노드의 인증서를 검증할 수 있어야 합니다. ClickHouseCluster에서 TLS가 활성화되어 있으면 검증에 ca.crt 번들을 사용합니다. 그렇지 않으면 기본 CA 번들이 사용됩니다. 사용자가 사용자 지정 CA 번들 참조를 제공할 수 있습니다:

ClickHouse 설정

기본 사용자 비밀번호

기본 사용자의 비밀번호를 설정합니다:
ConfigMap에 일반 텍스트 비밀번호를 저장하는 것은 권장되지 않습니다.
시크릿을 생성하세요:

사용자 비밀번호에 ConfigMap 사용하기

민감하지 않은 기본 비밀번호의 경우 ConfigMap을 사용할 수도 있습니다:

구성의 사용자 지정 사용자

설정 파일에서 추가 사용자를 구성합니다. 사용자용 ConfigMap과 시크릿을 생성합니다:
ClickHouseCluster에 사용자 지정 구성을 추가합니다:

데이터베이스 동기화

새 레플리카의 데이터베이스 자동 동기화를 활성화합니다:
활성화하면 operator가 Replicated 및 통합 테이블을 새 레플리카에 동기화합니다.

사용자 지정 구성

내장 추가 구성

사용자 지정 설정 파일을 마운트하는 대신, ClickHouse의 추가 구성 옵션을 직접 지정할 수 있습니다. extraConfig를 사용하여 사용자 지정 ClickHouse 구성을 추가하십시오:

내장된 추가 사용자 구성

extraUsersConfig를 사용해 추가 ClickHouse 사용자 구성을 지정할 수도 있습니다. 이는 클러스터 사양에서 사용자, 프로필, 쿼터, 권한 부여를 직접 정의할 때 유용합니다.
extraUsersConfig는 k8s ConfigMap 객체에 저장됩니다. 여기에 평문 시크릿을 저장하지 마십시오.

지원되는 모든 ClickHouse 사용자 구성 옵션은 문서를 참조하십시오.

구성 예시

전체 구성 예시는 다음과 같습니다:
마지막 수정일 2026년 6월 12일