Création d'un magasin de données « ClickHouseKeeper » sur Linux x86_64
Installez l'opérateur ClickHouse et configurez Clickhouse-keeper.
Avant de commencer
Vérifiez que les conditions pré-requises suivantes sont remplies:
- L'hôte en ligne ou hors ligne est prêt à extraire des images du référentiel externe.
- Le repo Helm est ajouté.
Pour plus d'informations, consultez la section « Préparation à l'installation des opérateurs de stockage de données ».
Versions de l'opérateur ClickHouse et balises d'image
Les images suivantes sont nécessaires pour les versions épinglées de la carte du Helm ou de l'opérateur.
| Plateforme | Versions de l'opérateur | Version de graphique Helm | Image avec étiquette |
|---|---|---|---|
| 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 |
Installation de ClickHouseKeeper en ligne
Pour installer ClickHouse-keeper en ligne, suivez les étapes suivantes.
Vérifiez si l'espace de noms "
instana-clickhouseexiste dans votre cluster. S'il n'existe pas, vous pouvez le créer maintenant.- Vérifier si l'espace de noms "
instana-clickhouseexiste.kubectl get namespace | grep clickhouse - Si l'espace de noms "
instana-clickhousen'existe pas, créez-le maintenant.kubectl create namespace instana-clickhouse - Créer un compte
clickhousekeeperde service.kubectl create serviceaccount clickhousekeeper -n instana-clickhouse
- Vérifier si l'espace de noms "
Créer des secrets de tirage d'image pour l'image ClickHouse. Remplacez "
<download_key>par 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.ioSi vous utilisez un cluster Red Hat® OpenShift®, créez des contraintes de contexte de sécurité (SCC) avant de déployer l'opérateur ClickHouse. 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 - system:serviceaccount:instana-clickhouse:clickhousekeeperCréer la ressource CCN.
kubectl apply -f clickhouse-scc.yamlInstaller l'opérateur 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"Créez un fichier « YAML », par exemple
clickhouse_keeper.yaml, contenant la définitionClickHouseKeeperInstallationde la ressource.apiVersion: "clickhouse-keeper.altinity.com/v1" kind: "ClickHouseKeeperInstallation" metadata: name: clickhouse-keeper namespace: instana-clickhouse spec: configuration: clusters: - name: "local" layout: replicasCount: 3 settings: logger/level: "information" logger/console: "true" listen_host: "0.0.0.0" keeper_server/snapshot_storage_path: /var/lib/clickhouse-keeper/coordination/snapshots/store keeper_server/log_storage_path: /var/lib/clickhouse-keeper/coordination/logs/store keeper_server/storage_path: /var/lib/clickhouse-keeper/ keeper_server/tcp_port: "2181" keeper_server/four_letter_word_white_list: "*" keeper_server/coordination_settings/raft_logs_level: "information" keeper_server/raft_configuration/server/port: "9444" prometheus/endpoint: "/metrics" prometheus/port: "7000" prometheus/metrics: "true" prometheus/events: "true" prometheus/asynchronous_metrics: "true" prometheus/status_info: "false" zookeeper/node/host: "localhost" zookeeper/node/port: "9181" templates: podTemplates: - name: clickhouse-keeper spec: # Add the following Affinity snippet to schedule each pod on a different node. # affinity: # podAntiAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # - labelSelector: # matchLabels: # app: clickhouse-keeper # topologyKey: "kubernetes.io/hostname" containers: - name: clickhouse-keeper imagePullPolicy: IfNotPresent image: artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm command: - clickhouse-keeper - --config-file=/etc/clickhouse-keeper/keeper_config.xml resources: requests: memory: "1Gi" serviceAccountName: clickhousekeeper imagePullSecrets: - name: instana-registry securityContext: fsGroup: 0 runAsGroup: 0 runAsUser: 1001 initContainers: - name: server-id-injector imagePullPolicy: IfNotPresent image: artifact-public.instana.io/clickhouse:25.8.13.73-7-lts-ibm volumeClaimTemplates: - name: log-storage-path spec: storageClassName: <storage_class_name> accessModes: - ReadWriteOnce resources: requests: storage: 20Gi - name: snapshot-storage-path spec: storageClassName: <storage_class_name> accessModes: - ReadWriteOnce resources: requests: storage: 20GiEffectuez les étapes du déploiement et de la vérification de ClickHousekeeper (en ligne et hors ligne).
Installation de ClickHouseKeeper hors ligne
Installer l'opérateur ClickHouse dans un environnement ventilé.
Si vous n'avez pas extrait les images ClickHouse du registre externe lors de la préparation de l'installation, vous pouvez le faire maintenant. Exécutez les commandes suivantes sur votre hôte bastion. Ensuite, copiez les images sur votre serveur d' Instana, qui se trouve dans un environnement isolé.
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
Pour installer l'opérateur « ClickHouse » dans un environnement isolé, procédez comme suit sur votre hôte Instana.
Reporter les images dans votre registre d'images interne.
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-ibmTransférez les images dans votre registre d'images interne.
docker push <internal-image-registry>/clickhouse-operator:v1.2.39 docker push <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibmCré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 - system:serviceaccount:instana-clickhouse:clickhousekeeperCréer la ressource CCN.
kubectl apply -f clickhouse-scc.yamlVérifiez si l'espace de noms "
instana-clickhouseexiste dans votre cluster. S'il n'existe pas, vous pouvez le créer maintenant.- Vérifier si l'espace de noms "
instana-clickhouseexiste.kubectl get namespace | grep clickhouse - Si l'espace de noms "
instana-clickhousen'existe pas, créez-le maintenant.kubectl create namespace instana-clickhouse - Créez le compte
clickhousekeeperde service.
kubectl create serviceaccount clickhousekeeper -n instana-clickhouse- Vérifier si l'espace de noms "
Si votre registre d'images interne nécessite une authentification, créez un secret d'extraction d'image.
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>Installer 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-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.39Créez un fichier « YAML », par exemple
clickhouse_keeper.yaml, contenant la définition"ClickHouseKeeperInstallationde la ressource.apiVersion: "clickhouse-keeper.altinity.com/v1" kind: "ClickHouseKeeperInstallation" metadata: name: clickhouse-keeper namespace: instana-clickhouse spec: configuration: clusters: - name: "local" layout: replicasCount: 3 settings: logger/level: "information" logger/console: "true" listen_host: "0.0.0.0" keeper_server/snapshot_storage_path: /var/lib/clickhouse-keeper/coordination/snapshots/store keeper_server/log_storage_path: /var/lib/clickhouse-keeper/coordination/logs/store keeper_server/storage_path: /var/lib/clickhouse-keeper/ keeper_server/tcp_port: "2181" keeper_server/four_letter_word_white_list: "*" keeper_server/coordination_settings/raft_logs_level: "information" keeper_server/raft_configuration/server/port: "9444" prometheus/endpoint: "/metrics" prometheus/port: "7000" prometheus/metrics: "true" prometheus/events: "true" prometheus/asynchronous_metrics: "true" prometheus/status_info: "false" zookeeper/node/host: "localhost" zookeeper/node/port: "9181" templates: podTemplates: - name: clickhouse-keeper spec: # Add the following Affinity snippet to schedule each pod on a different node. # affinity: # podAntiAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # - labelSelector: # matchLabels: # app: clickhouse-keeper # topologyKey: "kubernetes.io/hostname" containers: - name: clickhouse-keeper imagePullPolicy: IfNotPresent image: <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm command: - clickhouse-keeper - --config-file=/etc/clickhouse-keeper/keeper_config.xml resources: requests: memory: "1Gi" # 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: clickhousekeeper securityContext: fsGroup: 0 runAsGroup: 0 runAsUser: 1001 initContainers: - name: server-id-injector imagePullPolicy: IfNotPresent image: <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibm volumeClaimTemplates: - name: log-storage-path spec: storageClassName: <storage_class_name> accessModes: - ReadWriteOnce resources: requests: storage: 20Gi - name: snapshot-storage-path spec: storageClassName: <storage_class_name> accessModes: - ReadWriteOnce resources: requests: storage: 20GiSuivez les étapes de la section Déploiement et vérification de ClickHouseKeeper (en ligne et hors ligne).
Déploiement et vérification de ClickHouseKeeper (en ligne et hors ligne)
Pour déployer l'instance ClickHouseKeeper et créer le magasin de données, suivez les étapes suivantes.
Déployer ClickHouseKeeper.
kubectl apply -f clickhouse_keeper.yaml -n instana-clickhouseVérifier le déploiement de l'opérateur ClickHouse et de ClickhouseKeeper.
kubectl get all -n instana-clickhouseSi l'opérateur ClickHouse est déployé avec succès, la sortie de la commande indique que le statut de l'opérateur est "
Running, comme le montre l'exemple suivant :NAME READY STATUS RESTARTS AGE pod/clickhouse-keeper-0 1/1 Running 0 2d7h pod/clickhouse-keeper-1 1/1 Running 0 2d8h pod/clickhouse-keeper-2 1/1 Running 0 2d8h pod/clickhouse-operator-ibm-clickhouse-operator-7754679687-bpwlx 1/1 Running 0 2d8h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/clickhouse-keeper ClusterIP 172.30.115.37 <none> 2181/TCP,7000/TCP 13d service/clickhouse-keeper-headless ClusterIP None <none> 9444/TCP 13d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/clickhouse-operator-ibm-clickhouse-operator 1/1 1 1 79d NAME DESIRED CURRENT READY AGE replicaset.apps/clickhouse-operator-ibm-clickhouse-operator-7754679687 1 1 1 79d NAME READY AGE statefulset.apps/clickhouse-keeper 3/3 13d