Création d'un magasin de données « ClickHouse » sur Linux on IBM Z and LinuxONE

Installez l'opérateur ClickHouse et configurez le magasin de données.

Remarque : après la création initiale d'un cluster ClickHouse ou après l'augmentation du nombre de shards, le cluster peut avoir besoin de quelques minutes pour intégrer les shards.

ClickHouse versions des opérateurs et balises d'image

Les images suivantes sont nécessaires pour la charte Helm ou les versions d'opérateur épinglées.

Tableau 1. Versions d'opérateur et balises d'image
Plateforme Versions de l'opérateur Version de graphique Helm Image avec étiquette
Linux® on IBM Z® and LinuxONE v0.1.2 v0.1.2

artifact-public.instana.io/clickhouse-operator: v0.1.2

artifact-public.instana.io/clickhouse: 24.8.14.39-10-lts-ibm

Installation d' ClickHouse. en ligne

Procédez comme suit pour installer le magasin de données ClickHouse .

  1. Vérifiez si l'espace de nom instana-clickhouse existe dans votre cluster. S'il n'existe pas, vous pouvez le créer maintenant.

    1. Vérifiez si l'espace de nom instana-clickhouse existe.
      kubectl get namespace | grep clickhouse
       
    2. Si l'espace de nom instana-clickhouse n'existe pas, créez-le maintenant.
      kubectl create namespace instana-clickhouse
       
    3. Créez le compte clickhouse de service.
    kubectl create serviceaccount clickhouse  -n instana-clickhouse
     
  2. Créez des secrets d'extraction d'image pour l'image ClickHouse . Mettez à jour la valeur <download_key> avec votre propre clé de téléchargement.

    kubectl create secret docker-registry instana-registry \
    --namespace=instana-clickhouse \
    --docker-username=_ \
    --docker-password=<download_key> \
    --docker-server=artifact-public.instana.io
     
  3. Créez un fichier « YAML », par exemple clickhouse-scc.yaml, contenant la définition du protocole SCC ( SecurityContextConstraints ).

    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. Créez la ressource SCC.

    kubectl apply -f clickhouse-scc.yaml
     
  5. Créez un fichier custom_values.yaml et définissez la tolérance et l'affinité.

    tolerations:
       - key: node.instana.io/monitor
         operator: Equal
         effect: NoSchedule
         value: "true"
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/monitor
                  operator: In
                  values:
                    - "true"
     
  6. Installez l'opérateur ClickHouse .

    helm install clickhouse-operator instana/ibm-clickhouse-operator -n instana-clickhouse --version=v0.1.2 --set operator.image.repository=artifact-public.instana.io/clickhouse-operator --set operator.image.tag=v0.1.2 --set imagePullSecrets[0].name="instana-registry" -f custom_values.yaml
     
  7. Choisissez un mot de passe pour l'utilisateur ClickHouse . Dans une étape ultérieure, vous créez une ressource personnalisée (CR) ClickHouseInstallation dans laquelle vous devez spécifier le mot de passe utilisateur ClickHouse dans la section spec.configuration.users . Vous pouvez utiliser un mot de passe en texte clair ou un mot de passe de hachage SHA256 ou SHA1 .

    • Hachage SHA256

      Si vous souhaitez utiliser un mot de passe de hachage SHA256 , procédez comme suit:

      1. Générez un mot de passe aléatoire et son hachage SHA256 correspondant.

        PASSWORD=$(base64 < /dev/urandom | head -c16); echo "Password: $PASSWORD"; HEX=$(echo -n "$PASSWORD" | sha256sum | tr -d '-'); echo "SHA256: $HEX"
         
      2. Dans la ressource personnalisée ClickHouseInstallation , remplacez clickhouse-user/password: "clickhouse-pass" par clickhouse-user/password_sha256_hex: "<SHA256_HEX>". Consultez l'exemple de code suivant:

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

      Si vous souhaitez utiliser un mot de passe de hachage SHA1 , procédez comme suit:

      1. Générez un mot de passe aléatoire et son hachage SHA1 correspondant.

        PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
         
      2. Dans la ressource personnalisée ClickHouseInstallation , remplacez clickhouse-user/password: "clickhouse-pass" par clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>". Consultez l'exemple de code suivant:

        spec:
          configuration:
            users:
              clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"
         
  8. Créez un fichier « YAML », par exemple clickhouse_installation.yaml, contenant la définition ClickHouseInstallation de la ressource. Remplacez le zookeeper.nodes.host champ par le nom d'hôte de votre cluster ZooKeeper. Si vous utilisez un hachage comme mot de passe, mettez à jour le mot de passe comme indiqué à l'étape précédente.

    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
        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:
              containers:
                - name: instana-clickhouse
                  image: artifact-public.instana.io/clickhouse:24.8.14.39-10-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:24.8.14.39-10-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
              tolerations:
                - key: node.instana.io/monitor
                  operator: Equal
                  effect: NoSchedule
                  value: "true"
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                      - matchExpressions:
                        - key: node-role.kubernetes.io/monitor
                          operator: In
                          values:
                          - "true"
            # 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
     
  9. Suivez les étapes de la rubrique Déploiement et vérification de ClickHouse (en ligne et hors ligne).

Installer « ClickHouse » en mode hors ligne

Si vous n'avez pas encore extrait les images ClickHouse du registre externe lorsque vous avez préparé l'installation, vous pouvez les extraire maintenant. Exécutez les commandes suivantes sur votre hôte bastion. Ensuite, copiez les images sur votre serveur d' Instana, qui se trouve dans votre environnement isolé.

docker pull artifact-public.instana.io/clickhouse-operator:v0.1.2
docker pull artifact-public.instana.io/clickhouse:24.8.14.39-10-lts-ibm
         

Suivez les étapes suivantes sur votre serveur d' Instana.

  1. Rebalisez les images dans votre registre d'images interne.

    docker tag artifact-public.instana.io/clickhouse-operator:v0.1.2 <internal-image-registry>/clickhouse-operator:v0.1.2
    docker tag artifact-public.instana.io/clickhouse:24.8.14.39-10-lts-ibm <internal-image-registry>/clickhouse:24.8.14.39-10-lts-ibm
                   
  2. Envoyez les images à votre registre d'images interne.

    docker push <internal-image-registry>/clickhouse-operator:v0.1.2
    docker push <internal-image-registry>/clickhouse:24.8.14.39-10-lts-ibm
                   
  3. Créez un fichier « YAML », par exemple clickhouse-scc.yaml, contenant la définition du protocole SCC ( SecurityContextConstraints ).

    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. Créez la ressource SCC.

    kubectl apply -f clickhouse-scc.yaml
     
  5. Vérifiez si l'espace de nom instana-clickhouse existe dans votre cluster. S'il n'existe pas, vous pouvez le créer maintenant.

    1. Vérifiez si l'espace de nom instana-clickhouse existe.
      kubectl get namespace | grep clickhouse
       
    2. Si l'espace de nom instana-clickhouse n'existe pas, créez-le maintenant.
      kubectl create namespace instana-clickhouse
       
    3. Créez le compte clickhouse de service.
    kubectl create serviceaccount clickhouse  -n instana-clickhouse
     
  6. Facultatif : Créez un secret d'extraction d'image si votre registre d'images interne nécessite une authentification.

    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. Créez un fichier custom_values.yaml et définissez la tolérance et l'affinité.

    tolerations:
       - key: node.instana.io/monitor
         operator: Equal
         effect: NoSchedule
         value: "true"
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/monitor
                  operator: In
                  values:
                    - "true"
     
  8. Installez l'opérateur ClickHouse . Si vous avez créé un secret d'extraction d'image à l'étape précédente, ajoutez --set imagePullSecrets[0].name="<internal-image-registry-pull-secret>" à la commande suivante.

    helm install clickhouse-operator ibm-clickhouse-operator-v0.1.2.tgz -n instana-clickhouse --version=v0.1.2 --set operator.image.repository=<internal-image-registry>/clickhouse-operator --set operator.image.tag=v0.1.2 -f custom_values.yaml
     
  9. Choisissez un mot de passe pour l'utilisateur ClickHouse . Dans une étape ultérieure, vous créez une ressource personnalisée (CR) ClickHouseInstallation dans laquelle vous devez spécifier le mot de passe utilisateur ClickHouse dans la section spec.configuration.users . Vous pouvez utiliser un mot de passe en texte clair ou un mot de passe de hachage SHA256 ou SHA1 .

    • Hachage SHA256

      Si vous souhaitez utiliser un mot de passe de hachage SHA256 , procédez comme suit:

      1. Générez un mot de passe aléatoire et son hachage SHA256 correspondant.

        PASSWORD=$(base64 < /dev/urandom | head -c16); echo "Password: $PASSWORD"; HEX=$(echo -n "$PASSWORD" | sha256sum | tr -d '-'); echo "SHA256: $HEX"
         
      2. Dans la ressource personnalisée ClickHouseInstallation , remplacez clickhouse-user/password: "clickhouse-pass" par clickhouse-user/password_sha256_hex: "<SHA256_HEX>". Consultez l'exemple de code suivant:

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

      Si vous souhaitez utiliser un mot de passe de hachage SHA1 , procédez comme suit:

      1. Générez un mot de passe aléatoire et son hachage SHA256 correspondant.

        PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
         
      2. Dans la ressource personnalisée ClickHouseInstallation , remplacez clickhouse-user/password: "clickhouse-pass" par clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>". Consultez l'exemple de code suivant:

        spec:
          configuration:
            users:
              clickhouse-user/password_double_sha1_hex: "<SHA1_HEX>"
         
  10. Créez un fichier « YAML », par exemple clickhouse_installation.yaml, contenant la définition ClickHouseInstallation de la ressource. Remplacez le zookeeper.nodes.host champ par le nom d'hôte de votre cluster ZooKeeper. Si vous utilisez un hachage comme mot de passe, mettez à jour le mot de passe comme indiqué à l'étape précédente.

    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
        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
        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:
              containers:
                - name: instana-clickhouse
                  image: <internal-image-registry>/clickhouse:24.8.14.39-10-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:24.8.14.39-10-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
              tolerations:
                - key: node.instana.io/monitor
                  operator: Equal
                  effect: NoSchedule
                  value: "true"
              affinity:
                nodeAffinity:
                  requiredDuringSchedulingIgnoredDuringExecution:
                    nodeSelectorTerms:
                      - matchExpressions:
                        - key: node-role.kubernetes.io/monitor
                          operator: In
                          values:
                          - "true"
            # 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
     
  11. Suivez les étapes de la rubrique Déploiement et vérification de ClickHouse (en ligne et hors ligne).

Déploiement et vérification d' ClickHouse

Procédez comme suit pour déployer l'instance ClickHouse et créer le magasin de données.

  1. DéployerClickHouse, exécutez la commande suivante :

    kubectl apply -f clickhouse_installation.yaml -n instana-clickhouse
     
  2. Dans le fichier config.yaml , stockez le mot de passe de l'utilisateur ClickHouse .

    Remarque : vous devez utiliser le même mot de passe aléatoire que celui que vous avez créé précédemment lors de l'installation en ligne d' ClickHouse ou lors de l'installation hors ligne d' ClickHouse. N'utilisez pas ici le mot de passe haché SHA256 correspondant.
    datastoreConfigs:
      ...
      clickhouseConfigs:
        - user: clickhouse-user
          password: <USER_GENERATED_PASSWORD>
          adminUser: clickhouse-user
          adminPassword: <USER_GENERATED_PASSWORD>
      ...
     
  3. Si vous souhaitez configurer le cluster ClickHouse dans la configuration de base, n'entrez pas dans le service d'équilibreur de charge de l'ensemble du cluster. Ajoutez uniquement les services de noeud individuels en utilisant le schéma suivant. Réplique 1 et 2 dans l'ordre croissant jusqu'au fragment:

    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. Vérifiez le déploiement de l'opérateur ClickHouse .

    kubectl get all -n instana-clickhouse
     

    Si l'opérateur ClickHouse est déployé avec succès, la sortie de la commande affiche le statut de l'opérateur sous la forme Running , comme illustré dans l'exemple suivant:

    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
     
  5. Assurez-vous que les pods sont planifiés sur les nœuds souhaités.

    kubectl get pods -n instana-clickhouse -o wide
     

    L'exemple suivant présente un aperçu du résultat.

    chi-instana-local-0-0-0                                       2/2     Running   0               21d   10.254.20.145   worker0.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    chi-instana-local-0-1-0                                       2/2     Running   0               21d   10.254.20.146   worker0.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    clickhouse-operator-ibm-clickhouse-operator-fb58dff68-np54g   1/1     Running   0               21d   10.254.20.143   worker0.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-zookeeper-0                                           1/1     Running   0               21d   10.254.20.141   worker1.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-zookeeper-1                                           1/1     Running   0               21d   10.254.16.105   worker2.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-zookeeper-2                                           1/1     Running   0               21d   10.254.24.75    worker3.instana-odf5.cp.fyre.ibm.com   <none>           <none>