Linux x86_64 에서 ClickHouse 데이터 저장소 생성하기

ClickHouse 운영자를 설치하고 데이터 저장소를 설정하십시오.

참고:
ClickHouse 클러스터를 처음 생성한 후나 샤드 수가 증가한 후에는, 클러스터가 샤드를 연결하는 데 몇 분이 소요될 수 있습니다.

시작하기 전에

외부 저장소에서 이미지를 가져오기 위해 온라인 및 오프라인 호스트를 준비했는지 확인하십시오. 또한 Helm 저장소를 추가했는지 확인하십시오.

자세한 내용은 ‘데이터 스토어 운영자 설치 준비’를 참조하십시오.

ClickHouse 연산자 버전 및 이미지 태그

고정된 Helm 차트 또는 운영자 버전에는 다음 이미지가 필요합니다.

표 1. 배포용 운영체제 버전 및 이미지 태그
플랫폼 오퍼레이터 버전 Helm 차트 버전 태그가 있는 이미지
Linux® x86_64 v1.2.39 v1.2.0 artifact-public.instana.io/clickhouse-operator: v1.2.39

artifact-public.instana.io/clickhouse: 25.8.13.73-7-lts-ibm

ClickHouse 온라인 설치

ClickHouse 데이터 저장소를 설치하려면 다음 단계를 완료하십시오.

  1. instana-clickhouse 네임스페이스가 클러스터에 있는지 확인하십시오. 존재하지 않는 경우 지금 만들 수 있습니다.

    1. instana-clickhouse 네임스페이스가 있는지 확인하십시오.
      kubectl get namespace | grep clickhouse
    2. instana-clickhouse 네임스페이스가 없는 경우 지금 작성하십시오.
      kubectl create namespace instana-clickhouse
    3. `clickhouse` 서비스 계정을 생성합니다.
      kubectl create serviceaccount clickhouse  -n instana-clickhouse
  2. ClickHouse 이미지에 대한 이미지 풀 시크릿을 작성하십시오. 사용자 고유의 다운로드 키를 사용하여 <download_key> 값을 업데이트하십시오.

    kubectl create secret docker-registry instana-registry \
    --namespace=instana-clickhouse \
    --docker-username=_ \
    --docker-password=<download_key> \
    --docker-server=artifact-public.instana.io
     
  3. 선택 사항: Red Hat® OpenShift® 클러스터를 사용하는 경우, ClickHouse Operator를 배포하기 전에 보안 컨텍스트 제약 조건(SCC)을 생성하십시오. 예를 들어 clickhouse-scc.yaml, SCC( SecurityContextConstraints ) 정의를 포함하는 ` YAML ` 파일을 생성합니다.

    apiVersion: security.openshift.io/v1
    kind: SecurityContextConstraints
    metadata:
      name: clickhouse-scc
    runAsUser:
      type: MustRunAs
      uid: 1001
    seLinuxContext:
      type: RunAsAny
    fsGroup:
      type: RunAsAny
    allowHostDirVolumePlugin: false
    allowHostNetwork: true
    allowHostPorts: true
    allowPrivilegedContainer: false
    allowHostIPC: true
    allowHostPID: true
    readOnlyRootFilesystem: false
    users:
      - system:serviceaccount:instana-clickhouse:clickhouse-operator
      - system:serviceaccount:instana-clickhouse:clickhouse-operator-ibm-clickhouse-operator
      - system:serviceaccount:instana-clickhouse:clickhouse
     
  4. SCC 자원을 작성하십시오.

    kubectl apply -f clickhouse-scc.yaml
     
  5. ClickHouse 운영자를 설치하십시오.

    helm install clickhouse-operator instana/ibm-clickhouse-operator -n instana-clickhouse --version=v1.2.0 --set operator.image.repository=artifact-public.instana.io/clickhouse-operator --set operator.image.tag=v1.2.39 --set 'imagePullSecrets[0].name=instana-registry'
     
  6. ClickHouse 사용자의 비밀번호를 결정하십시오. 이후 단계에서는 spec.configuration.users 섹션에서 ClickHouse 사용자 비밀번호를 지정해야 하는 ClickHouseInstallation 사용자 정의 자원 (CR) 을 작성합니다. 일반 텍스트 비밀번호를 사용하거나 SHA256 또는 SHA1 해시 비밀번호를 사용할 수 있습니다.

    • SHA256 해시

      SHA256 해시 비밀번호를 사용하려면 다음 단계를 완료하십시오.

      1. 무작위 비밀번호 및 해당 SHA256 해시를 생성하십시오.

        PASSWORD=$(base64 < /dev/urandom | head -c16); echo "Password: $PASSWORD"; HEX=$(echo -n "$PASSWORD" | sha256sum | tr -d '-'); echo "SHA256: $HEX"
         
      2. ClickHouseInstallation CR에서 clickhouse-user/password: "clickhouse-pass"clickhouse-user/password_sha256_hex: "<SHA256_HEX>"로 바꾸십시오. 다음 샘플 코드를 참조하십시오.

        spec:
          configuration:
            users:
              clickhouse-user/password_sha256_hex: "<SHA256_HEX>"
         
    • SHA1 해시

      SHA1 해시 비밀번호를 사용하려면 다음 단계를 완료하십시오.

      1. 무작위 비밀번호 및 해당 SHA1 해시를 생성하십시오.

        PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
         
      2. ClickHouseInstallation CR에서 clickhouse-user/password: "clickhouse-pass"clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"로 바꾸십시오. 다음 샘플 코드를 참조하십시오.

        spec:
          configuration:
            users:
              clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"
         
  7. YAML 파일을 생성하고, 예를 clickhouse_installation.yaml들어 리소스 ClickHouseInstallation 정의를 포함시킵니다. 해당 zookeeper.nodes.host 필드에 ZooKeeper 또는 ClickhouseKeeper 클러스터의 호스트 이름을 입력하세요. 해시를 비밀번호로 사용하는 경우 이전 단계에 표시된 대로 비밀번호를 업데이트하십시오.

    apiVersion: "clickhouse.altinity.com/v1"
    kind: "ClickHouseInstallation"
    metadata:
      name: "instana"
    spec:
      defaults:
        templates:
          dataVolumeClaimTemplate: instana-clickhouse-data-volume
          logVolumeClaimTemplate: instana-clickhouse-log-volume
          serviceTemplate: service-template
      configuration:
        files:
          config.d/storage.xml: |
            <clickhouse>
              <storage_configuration>
                <disks>
                  <default/>
                  <cold_disk>
                    <path>/var/lib/clickhouse-cold/</path>
                  </cold_disk>
                </disks>
                <policies>
                  <logs_policy>
                    <volumes>
                      <data>
                        <disk>default</disk>
                      </data>
                      <cold>
                        <disk>cold_disk</disk>
                      </cold>
                    </volumes>
                  </logs_policy>
                  <logs_policy_v4>
                    <volumes>
                      <tier1>
                        <disk>default</disk>
                      </tier1>
                      <tier2>
                        <disk>cold_disk</disk>
                      </tier2>
                    </volumes>
                  </logs_policy_v4>
                </policies>
              </storage_configuration>
            </clickhouse>
        clusters:
          - name: local
            templates:
              podTemplate: clickhouse
            layout:
              shardsCount: 1
              replicasCount: 2 # The replication count of 2 is fixed for Instana backend installations
            schemaPolicy:
              replica: None
              shard: None
        zookeeper:
          nodes:
            - host: instana-zookeeper-headless.instana-clickhouse
          # - host: clickhouse-keeper-headless.instana-clickhouse  #if you use ClickhouseKeeper
        profiles:
          default/prefer_localhost_replica: 1
          default/max_memory_usage: 10000000000 # If memory limits are set, this value must be adjusted according to the limits.
          default/joined_subquery_requires_alias: 0
          default/max_execution_time: 100
          default/max_query_size: 1048576
          default/use_uncompressed_cache: 0
          default/enable_http_compression: 1
          default/load_balancing: random
          default/background_pool_size: 32
          default/background_schedule_pool_size: 32
          default/distributed_directory_monitor_split_batch_on_failure: 1
          default/distributed_directory_monitor_batch_inserts: 1
          default/insert_distributed_sync: 1
          default/log_queries: 1
          default/log_query_views: 1
          default/max_threads: 16
          default/allow_experimental_database_replicated: 1
          default/allow_experimental_analyzer: 0
        quotas:
          default/interval/duration: 3600
          default/interval/queries: 0
          default/interval/errors: 0
          default/interval/result_rows: 0
          default/interval/read_rows: 0
          default/interval/execution_time: 0
        settings:
          remote_servers/all-sharded/secret: clickhouse-default-pass
          remote_servers/all-replicated/secret: clickhouse-default-pass
          remote_servers/local/secret: clickhouse-default-pass
          max_concurrent_queries: 200
          max_table_size_to_drop: 0
          max_partition_size_to_drop: 0
        users:
          default/password: "clickhouse-default-pass"
          clickhouse-user/networks/ip: "::/0"
          clickhouse-user/password: "clickhouse-pass"
          # Or
          # Generate password and the corresponding SHA256 hash with:
          # $ PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
          # 6edvj2+d                                                          <- first line is the password
          # a927723f4a42cccc50053e81bab1fcf579d8d8fb54a3ce559d42eb75a9118d65  <- second line is the corresponding SHA256 hash
          # clickhouse-user/password_sha256_hex: "a927723f4a42cccc50053e81bab1fcf579d8d8fb54a3ce559d42eb75a9118d65"
          # Or
          # Generate password and the corresponding SHA1 hash with:
          # $ PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
          # LJfoOfxl                                  <- first line is the password, put this in the k8s secret
          # 3435258e803cefaab7db2201d04bf50d439f6c7f  <- the corresponding double SHA1 hash, put this below
          # clickhouse-user/password_double_sha1_hex: "3435258e803cefaab7db2201d04bf50d439f6c7f"
      templates:
        podTemplates:
          - name: clickhouse
            spec:
              # Add the following Affinity snippet to schedule each pod on a different node. 
              # affinity:
              #   podAntiAffinity:
              #     requiredDuringSchedulingIgnoredDuringExecution:
              #       - labelSelector:
              #           matchExpressions:
              #             - key: "clickhouse.altinity.com/app"
              #               operator: In
              #               values:
              #                 - "chop"
              #         topologyKey: "kubernetes.io/hostname"
              containers:
                - name: instana-clickhouse
                  image: artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm
                  command:
                    - clickhouse-server
                    - --config-file=/etc/clickhouse-server/config.xml
                  volumeMounts:
                    - mountPath: /var/lib/clickhouse-cold/
                      name: instana-clickhouse-data-cold-volume
                - name: clickhouse-log
                  image: artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm
                  args:
                    - while true; do sleep 30; done;
                  command:
                    - /bin/sh
                    - -c
                    - --
              serviceAccountName: clickhouse
              imagePullSecrets:
                - name: instana-registry
              securityContext:
                fsGroup: 0
                runAsGroup: 0
                runAsUser: 1001
            # Optional - uncomment the following lines if resources need to be specifically defined for the clickhouse pods. The following values are for example only.
            # resources:
            #   limits:
            #     cpu: "4"
            #     memory: 4Gi
            #   requests:
            #     cpu: "1"
            #     memory: 2Gi
        volumeClaimTemplates:
          - name: instana-clickhouse-data-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 100Gi
          - name: instana-clickhouse-log-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 1Gi
          - name: instana-clickhouse-data-cold-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 100Gi
        serviceTemplates:
          - name: service-template
            generateName: "clickhouse-{chi}"
            spec:
              ports:
                - name: http
                  port: 8123
                - name: tcp
                  port: 9000
              type: ClusterIP
     
  8. ‘ ClickHouse 배포 및 확인(온라인 및 오프라인) ’ 문서의 단계를 완료하십시오.

ClickHouse 오프라인 설치

오프라인 환경에서 ClickHouse 운영자를 설치하십시오.

설치 준비시 외부 레지스트리에서 ClickHouse 이미지를 아직 가져오지 않은 경우 지금 가져올 수 있습니다. bastion 호스트에서 다음 명령을 실행하십시오. 그런 다음, 해당 이미지를 에어갭 환경에 있는 Instana 호스트로 복사하십시오.

docker pull artifact-public.instana.io/clickhouse-operator:v1.2.39
docker pull artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm
         

Instana 호스트에서 다음 단계를 수행하십시오.

  1. 이미지를 내부 이미지 레지스트리에 다시 태그 지정하십시오.

    docker tag artifact-public.instana.io/clickhouse-operator:v1.2.39 <internal-image-registry>/clickhouse-operator:v1.2.39
    docker tag artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm
                   
  2. 이미지를 내부 이미지 레지스트리에 푸시하십시오.

    docker push <internal-image-registry>/clickhouse-operator:v1.2.39
    docker push <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm
                   
  3. 예를 들어 clickhouse-scc.yaml, SCC( SecurityContextConstraints ) 정의를 포함하는 ` YAML ` 파일을 생성합니다.

    apiVersion: security.openshift.io/v1
    kind: SecurityContextConstraints
    metadata:
      name: clickhouse-scc
    runAsUser:
      type: MustRunAs
      uid: 1001
    seLinuxContext:
      type: RunAsAny
    fsGroup:
      type: RunAsAny
    allowHostDirVolumePlugin: false
    allowHostNetwork: true
    allowHostPorts: true
    allowPrivilegedContainer: false
    allowHostIPC: true
    allowHostPID: true
    readOnlyRootFilesystem: false
    users:
      - system:serviceaccount:instana-clickhouse:clickhouse-operator
      - system:serviceaccount:instana-clickhouse:clickhouse-operator-ibm-clickhouse-operator
      - system:serviceaccount:instana-clickhouse:clickhouse
     
  4. SCC 자원을 작성하십시오.

    kubectl apply -f clickhouse-scc.yaml
     
  5. instana-clickhouse 네임스페이스가 클러스터에 있는지 확인하십시오. 존재하지 않는 경우 지금 만들 수 있습니다.

    1. instana-clickhouse 네임스페이스가 있는지 확인하십시오.
      kubectl get namespace | grep clickhouse
       
    2. instana-clickhouse 네임스페이스가 없는 경우 지금 작성하십시오.
      kubectl create namespace instana-clickhouse
       
    3. 서비스 clickhouse 계정을 생성합니다.
    kubectl create serviceaccount clickhouse  -n instana-clickhouse
     
  6. 선택 사항입니다: 내부 이미지 레지스트리에 인증이 필요한 경우 이미지 풀 시크릿을 생성합니다.

    kubectl create secret docker-registry <secret_name> --namespace instana-clickhouse \
    --docker-username=<registry_username> \
    --docker-password=<registry_password> \
    --docker-server=<internal-image-registry>:<internal-image-registry-port> \
    --docker-email=<registry_email>
     
  7. ClickHouse 운영자를 설치하십시오. 이전 단계에서 이미지 풀 시크릿을 생성했다면, 다음 명령어에 를 --set imagePullSecrets[0].name="<internal-image-registry-pull-secret>" 추가하세요.

    helm install clickhouse-operator ibm-clickhouse-operator-v1.2.0.tgz -n instana-clickhouse --version=v1.2.0 --set operator.image.repository=<internal-image-registry>/clickhouse-operator --set operator.image.tag=v1.2.39
                   
  8. ClickHouse 사용자의 비밀번호를 결정하십시오. 이후 단계에서는 spec.configuration.users 섹션에서 ClickHouse 사용자 비밀번호를 지정해야 하는 ClickHouseInstallation 사용자 정의 자원 (CR) 을 작성합니다. 일반 텍스트 비밀번호를 사용하거나 SHA256 또는 SHA1 해시 비밀번호를 사용할 수 있습니다.

    • SHA256 해시

      SHA256 해시 비밀번호를 사용하려면 다음 단계를 완료하십시오.

      1. 무작위 비밀번호 및 해당 SHA256 해시를 생성하십시오.

        PASSWORD=$(base64 < /dev/urandom | head -c16); echo "Password: $PASSWORD"; HEX=$(echo -n "$PASSWORD" | sha256sum | tr -d '-'); echo "SHA256: $HEX"
         
      2. ClickHouseInstallation CR에서 clickhouse-user/password: "clickhouse-pass"clickhouse-user/password_sha256_hex: "<SHA256_HEX>"로 바꾸십시오. 다음 샘플 코드를 참조하십시오.

        spec:
          configuration:
            users:
              clickhouse-user/password_sha256_hex: "<SHA256_HEX>"
         
    • SHA1 해시

      SHA1 해시 비밀번호를 사용하려면 다음 단계를 완료하십시오.

      1. 무작위 비밀번호 및 해당 SHA256 해시를 생성하십시오.

        PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
         
      2. ClickHouseInstallation CR에서 clickhouse-user/password: "clickhouse-pass"clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"로 바꾸십시오. 다음 샘플 코드를 참조하십시오.

        spec:
          configuration:
            users:
              clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"
         
  9. YAML 파일을 생성하고, 예를 clickhouse_installation.yaml들어 리소스 ClickHouseInstallation 정의를 포함시킵니다. 해당 zookeeper.nodes.host 필드에 ZooKeeper 또는 ClickHouseKeepr 클러스터의 호스트 이름을 입력하세요. 해시를 비밀번호로 사용하는 경우 이전 단계에 표시된 대로 비밀번호를 업데이트하십시오.

    apiVersion: "clickhouse.altinity.com/v1"
    kind: "ClickHouseInstallation"
    metadata:
      name: "instana"
    spec:
      defaults:
        templates:
          dataVolumeClaimTemplate: instana-clickhouse-data-volume
          logVolumeClaimTemplate: instana-clickhouse-log-volume
          serviceTemplate: service-template
      configuration:
        files:
          config.d/storage.xml: |
            <clickhouse>
              <storage_configuration>
                <disks>
                  <default/>
                  <cold_disk>
                    <path>/var/lib/clickhouse-cold/</path>
                  </cold_disk>
                </disks>
                <policies>
                  <logs_policy>
                    <volumes>
                      <data>
                        <disk>default</disk>
                      </data>
                      <cold>
                        <disk>cold_disk</disk>
                      </cold>
                    </volumes>
                  </logs_policy>
                  <logs_policy_v4>
                    <volumes>
                      <tier1>
                        <disk>default</disk>
                      </tier1>
                      <tier2>
                        <disk>cold_disk</disk>
                      </tier2>
                    </volumes>
                  </logs_policy_v4>
                </policies>
              </storage_configuration>
            </clickhouse>
        clusters:
          - name: local
            templates:
              podTemplate: clickhouse
            layout:
              shardsCount: 1
              replicasCount: 2 # The replication count of 2 is fixed for Instana backend installations
            schemaPolicy:
              replica: None
              shard: None
        zookeeper:
          nodes:
            - host: instana-zookeeper-headless.instana-clickhouse
          # - host: clickhouse-keeper-headless.instana-clickhouse  #if you use ClickhouseKeeper
        profiles:
          default/prefer_localhost_replica: 1
          default/max_memory_usage: 10000000000 # If memory limits are set, this value must be adjusted according to the limits.
          default/joined_subquery_requires_alias: 0
          default/max_execution_time: 100
          default/max_query_size: 1048576
          default/use_uncompressed_cache: 0
          default/enable_http_compression: 1
          default/load_balancing: random
          default/background_pool_size: 32
          default/background_schedule_pool_size: 32
          default/distributed_directory_monitor_split_batch_on_failure: 1
          default/distributed_directory_monitor_batch_inserts: 1
          default/insert_distributed_sync: 1
          default/log_queries: 1
          default/log_query_views: 1
          default/max_threads: 16
          default/allow_experimental_database_replicated: 1
          default/allow_experimental_analyzer: 0
        quotas:
          default/interval/duration: 3600
          default/interval/queries: 0
          default/interval/errors: 0
          default/interval/result_rows: 0
          default/interval/read_rows: 0
          default/interval/execution_time: 0
        settings:
          remote_servers/all-sharded/secret: clickhouse-default-pass
          remote_servers/all-replicated/secret: clickhouse-default-pass
          remote_servers/local/secret: clickhouse-default-pass
          max_concurrent_queries: 200
          max_table_size_to_drop: 0
          max_partition_size_to_drop: 0
        users:
          default/password: "clickhouse-default-pass"
          clickhouse-user/networks/ip: "::/0"
          clickhouse-user/password: "clickhouse-pass"
          # Or
          # Generate password and the corresponding SHA256 hash with:
          # $ PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
          # 6edvj2+d                                                          <- first line is the password
          # a927723f4a42cccc50053e81bab1fcf579d8d8fb54a3ce559d42eb75a9118d65  <- second line is the corresponding SHA256 hash
          # clickhouse-user/password_sha256_hex: "a927723f4a42cccc50053e81bab1fcf579d8d8fb54a3ce559d42eb75a9118d65"
          # Or
          # Generate password and the corresponding SHA1 hash with:
          # $ PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
          # LJfoOfxl                                  <- first line is the password, put this in the k8s secret
          # 3435258e803cefaab7db2201d04bf50d439f6c7f  <- the corresponding double SHA1 hash, put this below
          # clickhouse-user/password_double_sha1_hex: "3435258e803cefaab7db2201d04bf50d439f6c7f"
       templates:
         podTemplates:
           - name: clickhouse
             spec:
               # Add the following Affinity snippet to schedule each pod on a different node. 
               # affinity:
               #   podAntiAffinity:
               #     requiredDuringSchedulingIgnoredDuringExecution:
               #       - labelSelector:
               #           matchExpressions:
               #             - key: "clickhouse.altinity.com/app"
               #               operator: In
               #               values:
               #                 - "chop"
               #         topologyKey: "kubernetes.io/hostname"
               containers:
                 - name: instana-clickhouse
                   image: <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm
                   command:
                     - clickhouse-server
                     - --config-file=/etc/clickhouse-server/config.xml
                   volumeMounts:
                     - mountPath: /var/lib/clickhouse-cold/
                       name: instana-clickhouse-data-cold-volume
                 - name: clickhouse-log
                   image: <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm
                   args:
                     - while true; do sleep 30; done;
                   command:
                     - /bin/sh
                     - -c
                     - --
             # Optional: if you created an image pull secret for your internal registry, uncomment the following lines and update the image pull secret information.
             # imagePullSecrets:
             #   - name: <internal-image-registry-pull-secret>
               serviceAccountName: clickhouse
               securityContext:
                 fsGroup: 0
                 runAsGroup: 0
                 runAsUser: 1001
             # Optional - uncomment the lines below if resources need to be specifically defined for the clickhouse pods. The values below are for example only.
             # resources:
             #   limits:
             #     cpu: "4"
             #     memory: 4Gi
             #   requests:
             #     cpu: "1"
             #     memory: 2Gi
        volumeClaimTemplates:
          - name: instana-clickhouse-data-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 100Gi
          - name: instana-clickhouse-data-cold-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 100Gi
          - name: instana-clickhouse-log-volume
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 1Gi
        serviceTemplates:
          - name: service-template
            generateName: "clickhouse-{chi}"
            spec:
              ports:
                - name: http
                  port: 8123
                - name: tcp
                  port: 9000
              type: ClusterIP
     
  10. ‘ ClickHouse 배포 및 확인(온라인 및 오프라인) ’ 문서의 단계를 완료하십시오.

ClickHouse 배포 및 검증 (온라인 및 오프라인)

ClickHouse 인스턴스를 배치하고 데이터 저장소를 작성하려면 다음 단계를 완료하십시오.

  1. 배치하다, 파견하다ClickHouse, 다음 명령을 실행하십시오.

    kubectl apply -f clickhouse_installation.yaml -n instana-clickhouse
     
  2. config.yaml 파일에 ClickHouse 사용자 비밀번호를 저장하십시오.

    참고:
    ClickHouse 온라인 버전을 설치하거나 ClickHouse 오프라인 버전을 설치할 때는 앞서 생성한 것과 동일한 임의의 비밀번호를 사용해야 합니다. 여기에서는 해당 해시 SHA256 암호를 사용하지 마십시오.
    datastoreConfigs:
      ...
      clickhouseConfigs:
        - user: clickhouse-user
          password: <USER_GENERATED_PASSWORD>
          adminUser: clickhouse-user
          adminPassword: <USER_GENERATED_PASSWORD>
      ...
     
  3. 코어 구성에서 ClickHouse 클러스터를 구성하려면 전체 클러스터의 로드 밸런서 서비스를 입력하지 마십시오. 다음 스킴을 사용하여 개별 노드 서비스만 추가하십시오. 샤드까지 오름차순의 복제본 1및 2:

    spec:
    ...
      datastoreConfigs:
        clickhouseConfigs:
           - clusterName: local
             authEnabled: true
             hosts:
               - chi-instana-local-0-0.instana-clickhouse
               - chi-instana-local-0-1.instana-clickhouse
               - chi-instana-local-1-0.instana-clickhouse
               - chi-instana-local-1-1.instana-clickhouse
               - chi-instana-local-n-0.instana-clickhouse
               - chi-instana-local-n-1.instana-clickhouse
    ...
     
  4. ClickHouse 운영자 배치를 확인하십시오.

    kubectl get all -n instana-clickhouse
     

    Zookeeper를 사용하고 있으며 ClickHouse 오퍼레이터가 성공적으로 배포된 경우, 다음 예시와 같이 Running 명령어 실행 결과에 오퍼레이터 상태가 표시됩니다:

    NAME                                                                  READY   STATUS    RESTARTS   AGE
    pod/chi-instana-local-0-0-0                                           2/2     Running   0          8m46s
    pod/chi-instana-local-0-1-0                                           2/2     Running   0          8m5s
    pod/clickhouse-operator-altinity-clickhouse-operator-86b5f9b57689rr   2/2     Running   0          70m
    pod/instana-zookeeper-0                                               1/1     Running   0          4h3m
    pod/instana-zookeeper-1                                               1/1     Running   0          4h2m
    pod/instana-zookeeper-2                                               1/1     Running   0          4h2m
    
    NAME                                                               TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                        AGE
    service/chi-instana-local-0-0                                      ClusterIP      None            <none>          9000/TCP,8123/TCP,9009/TCP                     8m16s
    service/chi-instana-local-0-1                                      ClusterIP      None            <none>          9000/TCP,8123/TCP,9009/TCP                     7m35s
    service/clickhouse-instana                                         LoadBalancer   192.168.1.167   35.246.237.19   8123:32714/TCP,9000:31317/TCP                  8m11s
    service/clickhouse-operator-altinity-clickhouse-operator-metrics   ClusterIP      192.168.1.136   <none>          8888/TCP                                       70m
    service/instana-zookeeper-admin-server                             ClusterIP      192.168.1.126   <none>          8080/TCP                                       4h3m
    service/instana-zookeeper-client                                   ClusterIP      192.168.1.13    <none>          2181/TCP                                       4h3m
    service/instana-zookeeper-headless                                 ClusterIP      None            <none>          2181/TCP,2888/TCP,3888/TCP,7000/TCP,8080/TCP   4h3m
    
    NAME                                                               READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/clickhouse-operator-altinity-clickhouse-operator   1/1     1            1           70m
    
    NAME                                                                          DESIRED   CURRENT   READY   AGE
    replicaset.apps/clickhouse-operator-altinity-clickhouse-operator-86b5f9b579   1         1         1       70m
    
    NAME                                     READY   AGE
    statefulset.apps/chi-instana-local-0-0   1/1     8m50s
    statefulset.apps/chi-instana-local-0-1   1/1     8m9s
    statefulset.apps/instana-zookeeper       3/3     4h3m
     

    ClickhouseKeeper 를 사용 중이고 ClickHouse 오퍼레이터가 성공적으로 배포된 경우, 다음 예시와 같이 Running 명령어 실행 결과에 오퍼레이터 상태가 표시됩니다:

     NAME                                                               READY   STATUS    RESTARTS   AGE
     pod/chi-instana-local-0-0-0                                        2/2     Running   0          8m46s
     pod/chi-instana-local-0-1-0                                        2/2     Running   0          8m5s
     pod/clickhouse-keeper-0                                            1/1     Running   0          4h3m
     pod/clickhouse-keeper-1                                            1/1     Running   0          4h3m
     pod/clickhouse-keeper-2                                            1/1     Running   0          4h3m
     pod/clickhouse-operator-ibm-clickhouse-operator-7754679687-bpwlx   1/1     Running   0          4h13m
    
     NAME                                                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
     service/chi-instana-local-0-0                                 ClusterIP   None             <none>        9000/TCP,8123/TCP,9009/TCP   8m16s
     service/chi-instana-local-0-1                                 ClusterIP   None             <none>        9000/TCP,8123/TCP,9009/TCP   7m35s
     service/clickhouse-instana                                    ClusterIP   172.30.236.81    <none>        8123/TCP,9000/TCP            8m20s
     service/clickhouse-keeper                                     ClusterIP   172.30.115.37    <none>        2181/TCP,7000/TCP            4h3m
     service/clickhouse-keeper-headless                            ClusterIP   None             <none>        9444/TCP                     4h3m
     service/clickhouse-operator-ibm-clickhouse-operator-metrics   ClusterIP   172.30.120.179   <none>        8888/TCP                     4h23m
    
     NAME                                                          READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/clickhouse-operator-ibm-clickhouse-operator   1/1     1            1           4h23m
    
     NAME                                                                     DESIRED   CURRENT   READY   AGE
     replicaset.apps/clickhouse-operator-ibm-clickhouse-operator-7754679687   1         1         1       4h23m
    
     NAME                                     READY   AGE
     statefulset.apps/chi-instana-local-0-0   1/1     8m20s
     statefulset.apps/chi-instana-local-0-1   1/1     8m20s
     statefulset.apps/clickhouse-keeper       3/3     4h3m