구성 방식
커넥터는 설치 대상마다 하나의 구성 방식을 제공합니다.- Kubernetes
- Linux VM
clicklink clctl init는 작업 디렉터리에 clicklink-values.yaml이라는 values 오버레이를 준비하고 이를 사용해 clicklink-connector 차트를 배포합니다. 이 오버레이는 배포 구성을 영구적으로 기록합니다. --force를 전달하지 않는 한 init를 다시 실행해도 유지되므로, 편집 내용은 재실행이나 복구 후에도 보존됩니다.이 페이지와 운영의 Day-2 명령어는
helm CLI를 사용합니다. 기본 제공 Helm 클라이언트는 init에만 포함되어 있습니다.--repo를 미러로 바꾸십시오.직접 차트 참조(oci://, URL 또는 로컬 아카이브나 디렉터리, 프라이빗 미러 참조)로 설치한 경우에는 확인할 리포지토리가 없습니다. 설치에 사용한 참조로 업그레이드를 다시 실행하십시오.관리형 모드
관리형 모드는 실행기를 구동하며, 이 실행기는 ClickHouse Cloud가 주도하는 서비스 수명 주기를 클러스터에 적용합니다.init은 등록 시점에 관리형 모드를 활성화하고 클러스터 아이덴티티를 채웁니다(관리형 모드 활성화 참조). 아래 키는 이후에 다시 살펴보게 될 수 있는 항목입니다. 설정 상태를 변경하려면 --force와 함께 --managed 또는 --no-managed를 지정하여 init을 다시 실행하십시오. 모든 init 실행과 마찬가지로 진입점이 필요합니다. bundle을 보관해 두었다면 --handoff를, 그렇지 않다면 새 토큰과 함께 --enroll을 사용하십시오(재실행 및 복구 참조).
VM에서 --no-managed는 구성에서 실행기를 비활성화할 뿐, 실행 중인 systemd unit을 중지하거나 비활성화하지는 않습니다. 구성을 변경하기 전에 먼저 중지하십시오.
executor.enabled: false를 설정하고 helm upgrade로 적용하여 실행기 배포를 제거하십시오. 두 대상 모두 클러스터 권한 부여는 직접 제거하기 전까지 그대로 유지됩니다. 관리형 모드 중지를 참조하십시오.
- Kubernetes
- Linux VM
init은 현재 kube Context가 가리키는 EKS cluster의 정보를 바탕으로 clicklink-values.yaml의 executor 블록을 구성합니다:- **
cluster.namespacePrefix**는 모든 구성 요소가 공유하는 값이며, 실행기의 권한 부여가 적용 범위를 제한할 때 사용하는 접두사입니다. 설치 후 이 값을 변경하면 권한 부여를 다시 실행해야 합니다. - **
executor.cluster**에는 정확히 하나의 클러스터만 지정합니다:name,region,accountId,inCluster: true를 지정하면 실행기가 파드의 ServiceAccount로 인증합니다. 그 외의 키는s3_storage처럼 snake_case 형태 그대로 실행기에 전달됩니다. - **
executor.serviceAccount**는create: false로 유지합니다.init이 커넥터 네임스페이스의pcm-executorServiceAccount에 클러스터 전역 액세스 권한을 부여하고, 차트는 바인딩되지 않은 ServiceAccount를 새로 만드는 대신 이 ServiceAccount에 바인딩합니다. - **
executor.persistence**는/var/lib/clicklink를 뒷받침하며, 실행기는 이 경로에 명령 데이터베이스와 서비스 registry를 보관합니다. 저장소를 참조하십시오. - **
executor.platformBundleSecret**은 승인된 플랫폼 업데이트를 담고 있는 시크릿의 이름을 지정합니다. 이 마운트는 선택 사항이므로 첫 승인 이전에도 파드가 시작됩니다. 플랫폼 업데이트 승인을 참조하십시오. - **
executor.ports.health**는/livez와/metrics를 제공합니다. 어떤 구성 요소에도 별도의 메트릭 포트는 없습니다.
helm upgrade 명령으로 변경 사항을 적용하십시오.ClickHouse 인스턴스 추가 또는 변경
실행기가 생성하는 서비스는 스스로 등록되므로, 관리형 모드에서는 여기에 직접 추가할 필요가 없습니다. 이 섹션은 실행기 없이 실행되며 사용자가 직접 운영하는 ClickHouse를 관찰하는 별도의 커넥터 배포에 적용됩니다. 두 배포가 동일한 인스턴스를 공유하는 경우 해당 배포의init 시점에 --ch-user-suffix를 전달하십시오. instances 아래의 각 항목은 커넥터가 읽어 들이는 ClickHouse 네이티브 프로토콜 엔드포인트를 지정하며, host, port, database, secure, cluster, 그리고 Kubernetes에서는 namespace를 포함합니다. max_open_conns와 max_idle_conns는 연결 풀의 상한을 정합니다. 자격 증명은 구성에 저장되지 않으며, 각 컴포넌트는 프로비저닝이 생성한 액세스 번들에서 읽기 전용 ClickHouse 사용자를 가져옵니다.
- Kubernetes
- Linux VM
clicklink-values.yaml의 최상위 instances 맵에 인스턴스를 추가하십시오(VM 레지스트리와 동일한 필드). networkPolicy.clickhouseNamespaces에 해당 네임스페이스를 추가하십시오(네임스페이스의 kubernetes.io/metadata.name 레이블과 일치). 차트는 이 맵을 두 데몬이 읽는 clicklink-instance-registry ConfigMap으로 렌더링합니다. 이 방식은 executor.enabled가 false인 경우에만 동작합니다. 실행기가 켜져 있으면 실행기가 해당 ConfigMap을 소유하므로 렌더링이 실패합니다.--apply-ch-grants는 kubectl exec를 통해 파드 내에서 생성된 ClickHouse 권한을 적용합니다. 이 옵션이 없으면 명령어는 Kubernetes 측 리소스만 생성하고, 사용자가 적용할 수 있도록 ch-grants.sql을 디스크에 남겨 둡니다. 관리자 사용자에게 비밀번호가 있으면 --ch-admin-password-stdin을 추가하고 파이프로 전달하십시오.--apply-ch-grants 대신 --ch-user-via cr를 사용하십시오(파드 선택 플래그는 그대로 유지). 자세한 내용은 CLI 참고를 참조하십시오. 그런 다음 각 명령어가 생성하는 Secret 및 ServiceAccount 쌍을 해당 accessBundles 맵에 연결하고, 위에 표시된 helm upgrade를 실행하십시오.연산자 허용 목록
연산자 이메일 주소 허용 목록이 Gateway 관리 세션의 접근을 제한합니다. 세션 Gateway로 전송되는 모든 요청에는 목록에 포함된 이메일 주소가 확인된 단기 유효 OIDC ID 토큰이 있어야 합니다. 허용 목록이 비어 있으면 Gateway가 차단됩니다. VM에서는 호스트의 root 사용자가 로컬 세션 파일을 통해 세션을 직접 관리할 수도 있으며, 허용 목록은 Gateway를 통한 경로에만 적용됩니다. 전체 신뢰 모델은 지원 세션을 참조하십시오.- Kubernetes
- Linux VM
허용 목록은 오버레이에 정의되며 차트가 이를 ConfigMap으로 렌더링합니다. 변경하려면 목록을 수정하고
helm upgrade를 실행하십시오.네트워크 정책과 egress
Kubernetes에서 이 차트는 egress 허용 목록가 적용된 기본 거부(default-deny) NetworkPolicy를 함께 제공합니다. NetworkPolicy 객체는 사용 중인 CNI가 이를 적용(enforce)할 때만 효력이 있습니다. 정책을 적용하는 CNI 환경에서는 두 CIDR 목록이 모두 채워지기 전까지 클러스터 DNS와 ClickHouse 서비스 네임스페이스에만 연결할 수 있습니다. 그 전까지 커넥터는 연결하려는 엔드포인트나 Kubernetes API server로 나가는 egress 경로가 없습니다.init은 커넥터 엔드포인트 뒤에 있는 CIDR를 파악한 경우에만 해당 정책을 enabled 상태로 구성합니다.
- **
allowEgressCIDRs**는 사용자가 직접 제공해야 합니다. 커넥터 엔드포인트 뒤에 있는 범위로, 설치 시--egress-cidrs로 지정하거나 프롬프트에서 입력합니다. 모든 구성 요소가 커넥터 엔드포인트에 도달하려면 이 값이 필요합니다. 관리형 모드에서 플랫폼 차트가 Amazon ECR에 있는 경우, 해당 리전의 ECR 및 STS 범위(또는 미러의 범위)를 추가하십시오. 이를 추가하지 않으면 정책에 막혀 실행기의 차트 pull이 실패합니다. - **
apiserverCIDRs**는 관리형 모드에서init이 EKS 클러스터의 VPC로부터 도출합니다(eks:DescribeCluster및ec2:DescribeVpcs). 모든 구성 요소가 Kubernetes 토큰 요청을 보내고 실행기는 API를 통해 서비스를 구동하므로, 정책을 강제하는 CNI 환경에서는 이 값이 설정되기 전까지 모두 차단됩니다. 조회에 실패하면init은 경고를 표시한 뒤 목록을 비워 두므로, 사용자가 VPC의 CIDR 블록으로 직접 채워야 합니다.
clicklink.clickhouse.com/managed-by: executor 레이블이 부여되고 정책이 이 레이블을 기준으로 허용하므로, 관리형 설치에서는 clickhouseNamespaces를 비워 둘 수 있습니다. 직접 운영하는 ClickHouse를 위해 실행기 외부에서 생성한 네임스페이스만 이름으로 나열하면 됩니다.
정책을 나중에 활성화하기. 설치 시 엔드포인트 CIDR을 건너뛴 경우, init은 allowEgressCIDRs: []와 함께 enabled: false를 구성해 두고 이를 마무리하는 단계를 출력합니다. CIDR을 파악한 후에는 clicklink-values.yaml에서 enabled: true와 allowEgressCIDRs를 설정하고, apiserverCIDRs에 VPC의 범위가 포함되어 있는지 확인한 다음 구성 영역에 나온 helm upgrade를 실행하십시오.
session gateway가 활성화된 경우에는 egress 규칙이 하나 더 중요해집니다: clctl.gateway.jwksEgressCIDRs. Troubleshooter는 operator 토큰를 검사하기 위해 IdP(Identity Provider)의 JWKS를 가져오므로, 기본 거부 정책에서 목록이 비어 있으면 모든 토큰 검사가 차단됩니다:
private.googleapis.com 범위는 Private Google Access를 통해 접근하는 Google IdP(Identity Provider)를 포함합니다. 다른 IdP를 사용한다면 해당 범위 또는 그 앞단에 위치한 egress 프록시의 CIDR을 지정하십시오.
남은 인그레스 키는 두 개입니다. metricsScrapeSelector는 레이블을 기준으로 메트릭 스크레이프 인그레스를 특정 Prometheus 네임스페이스 하나로 제한하며, kubeletProbeCIDRs는 엄격한 기본 거부(default-deny) 정책에서 큐블릿 health probe를 명시적으로 허용합니다. 전체 키 목록은 구성 참고를 확인하십시오.
민감 정보 마스킹 패턴
Troubleshooter는 출력이 사용자 환경을 벗어나기 전에 민감 정보를 마스킹합니다. 기본 제공 패턴은ipv4, ipv6, bearer-token, aws-access-key, email, jwt, ssh-private-key, connection-string-credentials를 처리합니다. YAML 파일에서 사용자 지정 패턴을 추가하십시오. 사용자 지정 패턴은 파일에 정의된 순서대로 먼저 실행되고, 이후 기본 제공 패턴이 실행됩니다. 기본 제공 패턴의 name을 재사용하는 항목은 해당 기본 제공 패턴을 대체합니다.
각 패턴에는 name(필수, 고유), regex(필수, Go RE2 구문), replace(기본값 [REDACTED], $1 캡처 참조 지원), case_insensitive(기본값 false)를 지정합니다:
/etc/clicklink/redaction-patterns.yaml입니다. 설치 프로그램은 활성 패턴의 기본 세트(타사 API Key, AWS 시크릿 키 등)를 함께 설치합니다. 이 세트를 줄이거나 확장할 수 있으며, 설치 프로그램은 업그레이드해도 기존 버전을 유지합니다. Kubernetes에서는 YAML을 redaction-patterns.yaml 키를 사용해 ConfigMap에 저장하고 troubleshooter.redaction.patternsConfigMap에 해당 ConfigMap 이름을 설정하십시오. 차트가 이를 동일한 경로에 마운트합니다.
프라이빗 미러 및 경계 내 엔드포인트
배포된 차트는image.repository를 공개 멀티 아키텍처 cosign 서명 커넥터 이미지로 미리 설정하므로 일반 설치에는 이미지 values가 필요하지 않습니다. 배포된 기본값을 확인하려면 다음을 실행하십시오.
init의 --chart에 --chart-repo에서 해석되는 차트 이름, 직접 지정한 oci:// 참조, URL 또는 로컬 아카이브나 디렉터리를 지정할 수 있습니다. --chart-version은 기본적으로 CLI 자체 버전을 사용하므로 바이너리와 차트의 버전이 함께 유지됩니다.
init에 --api-private-ca를 전달하십시오. 그러면 api.tls.caFile: /etc/clicklink/secrets/mtls/ca.crt가 구성되고, 커넥터는 시스템 루트와 등록 번들의 CA 체인을 함께 사용해 엔드포인트를 검증합니다. VM에서는 /etc/clicklink/config.yaml의 api.tls.ca_file이 이에 해당합니다. init은 번들 체인을 /etc/clicklink/tls/ca.crt에 설치하고, 커넥터는 동일한 방식으로 이를 시스템 루트에 추가합니다. 완전히 air-gapped된 환경에서 등록 및 certificate 서명을 수행하는 방법은 onboarding을 참조하십시오.
저장소
- Kubernetes
- Linux VM
두 구성 요소가 PersistentVolumeClaim에 상태를 유지합니다. Troubleshooter의 클레임에는 세션 상태와 감사 추적이 저장됩니다:실행기의 클레임에는 명령 데이터베이스와 실행기가 관리하는 서비스의 레지스트리가 저장됩니다:
init은 두 storageClass 값을 모두 선택한 클래스로 설정합니다. storageClass가 비어 있으면 클러스터의 기본 StorageClass가 사용되며, 클러스터에 기본값이 지정되어 있지 않으면 init이 프롬프트 또는 --storage-class로 값을 지정하도록 요구합니다. 실행기의 클레임에는 helm.sh/resource-policy: keep 주석이 지정되어 있으므로 helm uninstall을 실행해도 그대로 남습니다. 제거를 참조하십시오.