Skip to main content
이 페이지에서는 등록 토큰을 사용해 관리형 모드에서 검증된 커넥터를 구성하는 방법을 안내합니다. 관리형 모드에서는 실행기가 ClickHouse Cloud가 주도하는 서비스 수명 주기를 적용합니다. 커넥터는 Kubernetes 클러스터(Helm) 또는 Linux VM(systemd)에 설치할 수 있습니다. 토큰 등록이 표준 절차입니다. 환경에서 엔드포인트에 직접 연결할 수 없는 경우 에어갭 및 미러 설치를 참조하십시오. 실행기 없이 직접 운영하는 ClickHouse를 관찰하려면 --no-managed를 전달하십시오.

사전 요구 사항

환경 등록

등록하기 전에 계정 담당 팀(account team)이 사용자의 환경을 등록하고 조직에 관리형 모드를 활성화합니다. 다음 정보를 전달하십시오.
  • AWS 계정 ID, 리전, EKS 클러스터 이름
  • 커넥터가 Linux VM에서 실행되는지, 아니면 클러스터 내에서 실행되는지 여부
  • 플랫폼 구성 요소용 노드 그룹
  • 서비스의 네임스페이스 접두사(기본값 ns-)
  • 클러스터가 ClickHouse image를 가져오는 방식: ClickHouse Cloud가 사용자 계정을 위해 설정한 레지스트리 액세스를 통하는지, 아니면 자체 미러를 사용하는지
그러면 ClickHouse Cloud가 엔드포인트, 일회용 등록 토큰, 그리고 ClickHouse 클러스터 차트의 ECR 리포지토리 ARN(Terraform 루트의 chart_repository_arn 입력값)을 발급합니다. Terraform으로 설치하는 경우에는 이 단계에서 플랫폼 bundle도 함께 받습니다. Helm에서는 clicklink clctl init --managed --from-terraform --platform-bundle로 이를 적용하고, VM에서는 등록 후 clicklink clctl platform approve --bundle로 적용합니다. 그 밖의 관리형 설치는 첫 bundle을 나중에 받습니다. 이 bundle은 실행기가 준비해 두며, 플랫폼 업데이트에 설명된 대로 clicklink clctl platform approve로 적용합니다. --no-managed로 설치한 경우에는 bundle이 필요하지 않습니다. 이 토큰이 사용자의 환경을 식별하므로 등록 시 추가 ID가 필요하지 않습니다.

모든 설치에 공통

  • 커넥터 v0.17.0 이상. 이전 릴리스에는 관리형 모드, platform 명령어, instances create가 없습니다. 설치 프로그램은 --version을 전달하지 않는 한 최신 릴리스를 제공합니다.
  • 등록 과정에서 제공된 엔드포인트와 등록 토큰.
  • 443 포트 egress: https://<subdomain>.<connector-domain> 및 https://<subdomain>.enroll.<connector-domain>, 그리고 설치 시점에는 releases.clicklink.clickhouse.com과 Amazon ECR Public으로의 연결이 필요합니다. 관리형 모드에서는 플랫폼 동기화 또는 생성 작업이 ECR에서 차트를 가져올 때 실행기가 Amazon ECR 및 STS에도 접근합니다. 이 중 하나라도 연결할 수 없다면 에어갭 및 미러 설치를 참조하십시오.
  • 관리형 모드에는 Amazon EKS 클러스터가 필요합니다. init은 그 외의 클러스터에서는 관리형 모드를 거부하며, 실행기 없이 설치하려면 --no-managed를 사용하도록 안내합니다. AWS에서 Terraform 사용에서는 새 클러스터용과 이미 운영 중인 클러스터용 루트 모듈을 제공하며, 그 위에 플랫폼 계층을 설치하는 init 명령어도 함께 안내합니다.
  • 실행기 권한 부여를 위한 클러스터 관리자 권한. 이 권한 부여는 실행기를 사용자 접두사 하위의 네임스페이스로 제한하는 클러스터 역할, ClusterRoleBinding, ValidatingAdmissionPolicy를 생성합니다. Kubernetes에서는 init을 실행하는 데 사용하는 kubeconfig에 이 권한이 있어야 합니다. VM에서는 호스트의 kubeconfig에 이 권한이 있어야 하며, 호스트에 관리자 권한이 없으면 init이 권한을 가진 호스트에서 실행할 명령을 출력합니다.
  • 아직 ClickHouse가 없어야 합니다. 관리형 설치는 서비스 없이 시작하며, 실행기가 생성한 서비스들이 스스로 등록됩니다. 관리형 모드에서 init은 사용자가 직접 운영하는 ClickHouse를 등록하지 않습니다(Kubernetes에서는 --instance와 --instance-namespace를 거부합니다). 이러한 클러스터를 관찰하려면 --no-managed로 별도의 커넥터 배포를 설치하십시오. --ch-user-suffix를 사용하면 두 배포가 커넥터의 USER 충돌 없이 하나의 instance를 공유할 수 있습니다. 해당 배포에는 연결할 수 있는 네이티브 listener가 필요합니다. 보안 포트 9440 또는 plaintext 포트 9000이며, Kubernetes에서는 자동으로 감지됩니다. 또한 provisioning을 위한 ClickHouse admin 액세스가 필요합니다. 비밀번호가 없는 default USER, --ch-admin-password-stdin 또는 프롬프트로 전달하는 password, 혹은 연산자 관리형 instance의 CR injection 중 하나를 사용합니다.
  • 릴리스 아티팩트를 내려받는 모든 환경에는 cosign이 필요합니다. 설치 프로그램은 항상 SHA-256 체크섬을 검증합니다. cosign이 설치되어 있으면 릴리스 서명도 함께 검증하며, CLICKLINK_REQUIRE_COSIGN=1이 설정된 경우 cosign 없이는 진행을 거부합니다.

Kubernetes(Helm) 설치 시

  • kubeconfig: 현재 컨텍스트가 EKS 클러스터를 가리켜야 합니다. 커넥터 네임스페이스를 생성하고 읽을 수 있어야 하며, Secret 적용, ServiceAccount·Role·RoleBinding 생성, 차트 설치, 실행기에 대한 클러스터 전역 액세스 부여가 가능해야 합니다.
  • AWS 자격 증명: 워크스테이션(환경 변수 또는 프로필)에 eks:DescribeCluster 및 ec2:DescribeVpcs 권한이 있어야 합니다. init은 이 권한으로 NetworkPolicy에 필요한 클러스터 VPC의 CIDR 블록을 읽습니다. 조회에 실패하면 경고를 출력하고, 해당 목록은 직접 입력하도록 비워 둡니다.
  • 엔드포인트 뒤의 CIDR: 설치 시점에 차트의 기본 거부(default-deny) NetworkPolicy를 활성화하는 데 필요합니다. 이 값이 없으면 init은 정책을 비활성화된 상태로 준비하고, 나중에 활성화하는 방법을 출력합니다.
  • 기본 StorageClass 또는 --storage-class로 전달할 클래스: Troubleshooter와 실행기는 PersistentVolumeClaim에 상태를 유지합니다.
  • image 풀 액세스: 클러스터 노드가 퍼블릭 ECR image 또는 직접 호스팅하는 미러에서 image를 가져올 수 있어야 합니다.

Linux VM(systemd) 설치

  • systemd를 사용하는 모든 Linux 호스트, amd64 또는 arm64. Linux 빌드는 FIPS 모드로 실행됩니다.
  • 설치 관리자와 init 실행에 필요한 루트 액세스.
  • 사용 가능한 포트: health 및 메트릭용 8082, 8084, 8086, 실행기의 로컬 API용 루프백 인터페이스의 9999, 지원 세션 게이트웨이를 활성화한 경우 8443.
  • provisioning과 실행기의 grant에 필요한 Kubernetes API 서버 관리자 액세스: 호스트의 kubeconfig, --server 및 --ca-data, 또는 프롬프트 입력 중 하나를 사용합니다. 액세스 번들은 양쪽 대상 모두에서 Kubernetes ServiceAccount에 연결됩니다. 관리형 모드에서는 kubeconfig의 현재 context가 관리 중인 EKS 클러스터를 가리켜야 하며, 다른 context를 통한 grant는 init이 거부합니다.
VM에서 Kubernetes API 서버 요구 사항을 우회하는 유일한 방법은 --skip-provision이며, 이는 stage 전용입니다. 이 옵션은 ClickHouse 사용자 provisioning, 실행기의 grant, 유닛 활성화, 검증을 모두 건너뛰므로 이것만으로는 실행 중인 커넥터가 생성되지 않습니다. Kubernetes에서는 ClickHouse 사용자 provisioning만 건너뜁니다. 차트의 실행기는 grant된 ServiceAccount 없이는 스케줄링될 수 없으므로 실행기의 grant는 그대로 적용됩니다.

설치 및 등록

1

커넥터 엔드포인트 및 등록 토큰 확인

두 값 모두 환경이 등록되면 담당 계정 팀에서 제공합니다. 엔드포인트 형식은 다음과 같습니다:
토큰은 일회용이며 빠르게 만료되므로, 토큰을 받은 직후에 등록을 진행하십시오. 토큰은 시크릿으로 취급해야 합니다. CLI는 화면에 표시되지 않는 프롬프트나 stdin의 첫 번째 줄에서만 토큰을 읽으며, 명령줄 인수나 디스크, 로그에서는 읽지 않습니다. 등록 전에 토큰이 만료된 경우 계정 담당 팀에 새 토큰을 요청하십시오.
2

CLI 설치 및 확인

명령 한 번으로 검증된 clicklink 바이너리를 설치합니다. 플랫폼(macOS 또는 Linux, amd64 또는 arm64)을 자동으로 감지해 현재 릴리스를 내려받고 SHA-256 체크섬을 검증합니다. cosign이 설치되어 있으면 릴리스 서명까지 검증합니다. /usr/local/bin에 쓰기가 가능하면 해당 위치에, 그렇지 않으면 ~/.local/bin에 설치됩니다(필요하면 해당 경로를 PATH에 추가하십시오. --bin-dir로 재정의할 수 있습니다). Kubernetes에 설치하는 경우 클러스터에 대한 kubeconfig 액세스 권한이 있는 워크스테이션이라면 어디서든 다음을 실행하십시오:
VM에 설치할 때는 호스트에서 --host 옵션을 붙여 동일한 스크립트를 실행하십시오. 검증된 다운로드가 끝나면 clicklink 시스템 사용자, /etc/clicklink, /var/lib/clicklink, /var/log/clicklink 디렉터리, 그리고 세 구성 요소 모두에 대한 systemd 유닛을 생성합니다. 또한 /etc/clicklink/redaction-patterns.yaml에 기본 패턴 세트를 채워 넣으므로(기존 파일이 있으면 그대로 유지됩니다), 다음 단계는 등록입니다:
두 방식 모두 특정 릴리스를 고정하는 --version vX.Y.Z 옵션을 지원합니다. 둘 중 어느 쪽이든 다시 실행해도 안전합니다. 호스트 설치 시 이전 바이너리를 백업하고 현재 사용 중인 구성을 그대로 유지하기 때문입니다. 실행 전에 스크립트를 검토하거나 릴리스 tarball을 직접 내려받아 검증하려면 수동 다운로드 및 검증을 참조하십시오.
3

커넥터 등록 및 설치

init --enroll는 토큰을 사용 처리하고, 서명된 클라이언트 인증서와 실행기의 cluster-wide grant를 획득한 다음, 커넥터를 설치하고 검증합니다.터미널에서 init은 Enable managed mode (ClickHouse manages the lifecycle of ClickHouse services in this cluster)?를 yes가 미리 선택된 상태로 묻습니다. --managed를 전달하면 이 프롬프트를 건너뛰고, --no-managed를 전달하면 실행기 없이 관찰 전용으로 설치됩니다. 두 플래그 없이 무인으로 새로 설치하면 관리형 모드는 꺼진 상태가 됩니다(--force로 재실행하면 대체되는 구성의 상태가 유지됩니다). 따라서 스크립트에서는 항상 --managed를 전달하십시오.
kube 컨텍스트가 EKS cluster를 가리키는 상태에서, 워크스테이션에서 다음을 실행하십시오:
숨김 프롬프트에 등록 토큰을 붙여넣으십시오. init은 현재 컨텍스트의 EKS ARN에서 cluster의 이름, 리전, AWS account를 읽어오므로 cluster에 대해 입력할 내용은 없습니다. 이어서 다음을 묻습니다:
  • 커넥터 네임스페이스(기본값 clicklink)
  • StorageClass. cluster에 기본값이 지정되어 있지 않을 때만 묻습니다
  • NetworkPolicy egress allowlist에 사용할, 커넥터 엔드포인트 뒤의 CIDR(비워 두면 policy가 비활성화된 상태로 준비됩니다)
  • 지원 세션 정책, 그리고 활성화한 경우 운영자 이메일 allowlist
init은 토큰을 사용 처리하고 작업 디렉터리에 등록 번들을 handoff.yaml로 저장합니다. 그리고 executor 블록과 cluster VPC의 범위를 NetworkPolicy의 API 서버 CIDR로 포함한 Helm values 오버레이 clicklink-values.yaml을 준비합니다. 네임스페이스를 생성하고, clicklink-hmac 시크릿을 적용하며, clicklink-mtls 시크릿 내부에 private key를 생성하고 CSR을 작성합니다. 실행기의 cluster-wide 액세스를 커넥터 네임스페이스에 부여하고, ClickHouse Cloud가 클라이언트 인증서에 서명하도록 합니다. 내장 Helm 클라이언트로 clicklink-connector Helm 릴리스를 설치하고(helm 바이너리 불필요) 상태를 검증합니다.무인 실행에서는 프롬프트 대신 플래그로 값을 지정하십시오. 저장된 번들을 진입점으로 사용하거나, 등록 토큰을 stdin의 첫 줄로 --enroll에 파이프하십시오:
지원 세션을 비활성화하려면 --operators 대신 --no-gateway를 전달하십시오. 두 플래그는 함께 사용할 수 없습니다.
설치가 검증되면 init은 Managed mode is on과 함께 첫 service를 준비하는 명령을 출력합니다. create a service로 계속 진행하십시오.
4

성공 여부 확인

init은 성공을 보고하기 전에 설치 상태를 검증합니다. Kubernetes에서는 실행기를 포함해 활성화된 각 구성 요소의 /livez 엔드포인트를 최대 5분 동안 폴링합니다. 지원 세션 게이트웨이가 활성화된 경우에는 게이트웨이가 인증되지 않은 프로브에 401로 응답하는지도 함께 확인합니다. VM에서는 각 데몬의 /livez를 기다린 후 전체 프리플라이트 검사 모음을 실행합니다. 이 검사 모음은 구성, 파일, 포트 충돌, 네트워크 연결 가능 여부, ClickHouse 연결, 세 가지 systemd 유닛 전체의 상태, 구성 요소별 액세스, 디스크, 민감 정보 마스킹 패턴을 점검합니다.Kubernetes에서 직접 확인하려면 다음을 실행하십시오:
모든 커넥터 파드, 즉 scraper, Troubleshooter, 실행기는 Running 상태이면서 준비(ready) 상태여야 합니다.VM에서 직접 확인하려면 다음을 실행하십시오:
모든 검사를 통과하면 0, 하나라도 실패하면 2를 반환하며, 실패한 검사를 출력합니다.
5

정리

등록 번들(enrollment bundle)인 handoff.yaml(권한 0600, 작업 디렉터리에 위치)을 통해 설치 도중 재실행이나 복구를 토큰을 다시 발급받지 않고도 진행할 수 있습니다. 이 파일에는 커넥터의 API 시크릿이 평문으로 저장되어 있으므로, 설치가 정상적으로 확인되면 삭제하십시오:
실행 중인 커넥터는 자격 증명 사본을 자체적으로 보유하므로, 업그레이드나 구성 변경 시에도 이 파일은 필요하지 않습니다. 이후 init을 다시 실행해야 하는 경우, 계정 담당팀에 새 등록 토큰을 요청한 뒤 init --enroll --force를 실행하십시오.

에어갭 및 미러 설치

환경에서 연결 가능한 범위에 따라 두 가지 요소를 대역 외(out of band)로 처리할 수 있습니다. 실행기에는 추가로 필요한 것이 없습니다. 실행기는 다른 구성 요소와 동일한 클라이언트 인증서 및 API 자격 증명으로 인증합니다. 실행기의 클러스터 전역 grant는 네트워크가 아니라 kubeconfig를 통해 적용합니다. 번들 전달. 토큰을 온라인으로 사용하지 않으려면, 온보딩 과정에서 담당 계정 담당 팀이 등록 번들을 직접 전달할 수 있습니다. 이 경우 --enroll 대신 clicklink clctl init --handoff <bundle-file>을 실행하십시오. --handoff는 토큰 사용 단계만 대체합니다. 인증서 서명은 여전히 등록 엔드포인트를 통해 이루어지므로, init을 실행하는 위치에서 해당 엔드포인트에 연결할 수 있을 때만 --handoff를 단독으로 사용하십시오. 대역 외 인증서 서명. init을 실행하는 위치에서 등록 엔드포인트에 연결할 수 없다면 --no-auto-sign을 추가하십시오. 그러면 init이 모든 항목을 준비한 뒤 clicklink.csr을 생성합니다. CSR을 계정 담당 팀에 전달하고, 반환받은 인증서와 체인으로 설치를 완료하십시오. VM에서는 sudo clicklink clctl init --signed-cert client.crt --chain ca-chain.crt를 실행합니다. Kubernetes에서는 clicklink clctl init --signed-cert client.crt --chain ca-chain.crt --target helm --target-namespace <connector-namespace> --values clicklink-values.yaml을 실행하며, 준비 단계 실행 시 이와 동등한 kubectl patch 및 helm upgrade --install 명령 시퀀스가 출력됩니다. 외부로 전달되는 것은 CSR뿐이며, private key는 사용자 환경을 벗어나지 않습니다. Kubernetes에서 --chart에는 --chart-repo를 통해 해석되는 차트 이름, oci:// 참조, 직접 URL, 로컬 아카이브 또는 디렉터리를 지정할 수 있습니다. --chart-version의 기본값은 CLI 자체 버전이므로 바이너리와 차트가 함께 이동합니다. 자체 registry에서 이미지를 제공하려면 컨테이너 이미지를 미러링하고 values overlay에서 image.repository를 설정하십시오. egress 경로가 커넥터에 사설 CA를 제시하는 경우 --api-private-ca를 전달하십시오. 그러면 커넥터는 시스템 루트 인증서와 등록 번들에 포함된 CA 체인을 기준으로 엔드포인트를 검증합니다. 설치 프로그램은 미러에서도 동작합니다. 릴리스 아티팩트와 install.sh를 자체 미러에 호스팅한 뒤 CLICKLINK_MIRROR_URL로 해당 위치를 지정하십시오.

수동 다운로드 및 검증

설치 프로그램을 파이프로 실행하지 않으려면 릴리스를 직접 다운로드하여 검증하십시오. 아래 블록은 플랫폼과 아키텍처를 감지하므로 macOS 또는 Linux, amd64 또는 arm64 환경에서 그대로 실행할 수 있습니다:
압축을 풀기 전에 cosign으로 서명을 확인하십시오:
워크스테이션(Kubernetes 설치)에서 tarball의 압축을 풀고 바이너리를 설치합니다:
VM에서는 tarball의 압축을 풀고 추출한 디렉터리에서 sudo ./install.sh를 실행하십시오. 이 스크립트는 릴리스 아티팩트 옆에 설치되며, --host와 동일하게 호스트에 설치합니다.

문제가 발생한 경우

동일한 명령을 다시 실행하십시오. init은 멱등적입니다. 다시 실행해도 동일한 상태로 수렴하며, 기존 구성과 스테이징된 파일을 그대로 유지하고 이미 완료된 작업은 건너뜁니다. 어떤 단계가 도중에 실패하면 CLI가 복구 명령어를 정확히 출력하며, 이 명령어는 반복 실행해도 안전합니다. 등록이 거부되었다면 해당 토큰이 이미 사용되었거나, 유효하지 않거나 만료된 것입니다. 이미 사용된 토큰이라면 --handoff handoff.yaml을 지정해 다시 실행하십시오. 이 파일은 정리 단계 전까지 존재합니다. 그 외에는 계정 담당 팀에 새 토큰을 요청하십시오. 등록이 전송 오류로 실패하면 동일한 명령을 다시 실행하십시오. 재실행이 거부된다면 첫 번째 시도에서 토큰이 이미 소진된 것이므로 새 토큰을 요청하십시오. 클러스터가 EKS가 아니어서 관리형 모드가 거부되면 --no-managed를 지정해 다시 실행하여 실행기 없이 설치하십시오. VM에서는 현재 컨텍스트가 다른 곳을 가리키는 kubeconfig도 거부됩니다. 이때는 kubectl config use-context로 컨텍스트를 전환한 뒤 다시 실행하십시오. 실행기의 grant를 적용할 수 없는 경우:
  • VM에서는 init이 실패하지 않습니다. 번들을 스테이징한 뒤, 클러스터 관리자 권한이 있는 kubeconfig에서 실행해야 할 명령어를 정확히 담은 경고를 출력합니다. 검증 프리플라이트는 실행기의 상태를 있는 그대로 보고합니다. 출력된 명령어를 실행한 다음, 동일한 init 명령을 다시 실행하여 검증하십시오:
  • Kubernetes에서는 권한 부여가 거부되면 차트가 배포되기 전에 init이 중단됩니다. 실행기가 부여된 ServiceAccount에 바인딩되므로 해당 권한 없이는 시작할 수 없기 때문입니다. 스테이징된 오버레이, 시크릿, CSR은 그대로 유지되며, init은 클러스터 관리자 권한이 있는 호스트에서 실행해야 할 두 개의 명령어를 출력합니다. 해당 명령어를 실행한 뒤 동일한 init 명령어를 다시 실행하여 계속 진행하십시오:
--force는 명시적인 초기화입니다. 일상적인 재시도에는 필요하지 않습니다. 보존된 구성이나 values overlay를 덮어쓰고, client key를 재생성하며, 아직 만료되지 않은 클라이언트 인증서를 대체합니다(서명 엔드포인트에서 409가 반환되면 인증서가 이미 존재한다는 의미입니다). 커넥터의 클러스터 UUID와 관리형 모드 설정은 그대로 유지합니다. 무인 재실행 시에도 기존 설정이 유지되고, 터미널에서는 프롬프트의 기본값으로 해당 설정이 제시됩니다. 단, --managed 또는 --no-managed를 전달한 경우는 예외입니다. 자격 증명을 교체하거나 인증서를 대체할 때 --force를 사용하십시오. 전체 재실행 및 복구 모델은 operations를 참조하십시오.