Erstellen eines ClickHouseKeeper Datenspeichers auf Linux x86_64
Installieren Sie den ClickHouse Operator und richten Sie Clickhouse-keeper ein.
Vorbereitende Schritte
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Der Online- oder Offline-Host ist darauf vorbereitet, Bilder aus dem externen Repository zu ziehen.
- Das Helm Repo wird hinzugefügt.
Weitere Informationen finden Sie unter Vorbereiten der Installation von Datenspeicheroperatoren.
ClickHouse operator-Versionen und Bild-Tags
Die folgenden Bilder werden für die gepinnten Helm Diagramm- oder Bedienerversionen benötigt.
| Plattform | Operatorversionen | Version des Helm-Diagramms | Bild mit Tag |
|---|---|---|---|
| Linux® x86_64 | v1.2.18 | v1.2.0 | artifact-public.instana.io/clickhouse-operator: v1.2.18
artifact-public.instana.io/clickhouse: 25.8.6.11-1-lts-ibm |
Installation von ClickHouseKeeper online
Um ClickHouse-keeper online zu installieren, führen Sie die folgenden Schritte aus.
Prüfen Sie, ob der Namespace
instana-clickhousein Ihrem Cluster existiert. Wenn er nicht existiert, können Sie ihn jetzt erstellen.- Prüfen Sie, ob der Namespace
instana-clickhouseexistiert.kubectl get namespace | grep clickhouse - Wenn der Namespace
instana-clickhousenicht existiert, erstellen Sie ihn jetzt.kubectl create namespace instana-clickhouse - Erstellen Sie ein
clickhousekeeperDienstkonto.kubectl create serviceaccount clickhousekeeper -n instana-clickhouse
- Prüfen Sie, ob der Namespace
Erstellen Sie Bildzugriffsgeheimnisse für das Bild ClickHouse. Ersetzen Sie
<download_key>durch Ihren eigenen Download-Schlüssel.kubectl create secret docker-registry instana-registry \ --namespace=instana-clickhouse \ --docker-username=_ \ --docker-password=<download_key> \ --docker-server=artifact-public.instana.ioWenn Sie einen Red Hat® OpenShift® cluster verwenden, erstellen Sie Security Context Constraints (SCC), bevor Sie den ClickHouse Operator einsetzen. Erstellen Sie eine YAML-Datei, z.B.
clickhouse-scc.yaml, mit der Definition SecurityContextConstraints (SCC).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:clickhousekeeperErstellen Sie die SCC-Ressource.
kubectl apply -f clickhouse-scc.yamlInstallieren Sie den Betreiber 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.18 --set imagePullSecrets[0].name="instana-registry"Erstellen Sie eine YAML-Datei, z.B.
clickhouse_keeper.yaml, mit der RessourcendefinitionClickHouseKeeperInstallation.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-openssl:25.8.6.11-1-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-openssl:25.8.6.11-1-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: 20GiFühren Sie die Schritte unter Bereitstellen und Überprüfen von ClickHousekeeper (online und offline) aus.
Installation von ClickHouseKeeper offline
Installieren Sie den ClickHouse Operator in einer luftdurchlässigen Umgebung.
Wenn Sie die ClickHouse -Images nicht aus der externen Registrierung geholt haben, als Sie die Installation vorbereitet haben, können Sie sie jetzt holen. Führen Sie die folgenden Befehle auf Ihrem Bastion-Host aus. Kopieren Sie dann die Bilder auf Ihren Instana-Host, der sich in einer Air-Gapped-Umgebung befindet.
docker pull artifact-public.instana.io/clickhouse-operator:v1.2.18
docker pull artifact-public.instana.io/clickhouse-openssl:25.8.6.11-1-lts-ibm
Um den ClickHouse Operator in einer Air-Gapped-Umgebung zu installieren, führen Sie die folgenden Schritte auf Ihrem Instana-Host aus.
Kennzeichnen Sie die Bilder in Ihrer internen Bildregistrierung neu.
docker tag artifact-public.instana.io/clickhouse-operator:v1.2.18 <internal-image-registry>/clickhouse-operator:v1.2.18 docker tag artifact-public.instana.io/clickhouse-openssl:25.8.6.11-1-lts-ibm <internal-image-registry>/clickhouse-openssl:25.8.6.11-1-lts-ibmÜbertragen Sie die Bilder in Ihre interne Bildregistrierung.
docker push <internal-image-registry>/clickhouse-operator:v1.2.18 docker push <internal-image-registry>/clickhouse-openssl:25.8.6.11-1-lts-ibmErstellen Sie eine YAML-Datei, z.B.
clickhouse-scc.yaml, mit der Definition SecurityContextConstraints (SCC).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:clickhousekeeperErstellen Sie die SCC-Ressource.
kubectl apply -f clickhouse-scc.yamlPrüfen Sie, ob der Namespace
instana-clickhousein Ihrem Cluster existiert. Wenn er nicht existiert, können Sie ihn jetzt erstellen.- Prüfen Sie, ob der Namespace
instana-clickhouseexistiert.kubectl get namespace | grep clickhouse - Wenn der Namespace
instana-clickhousenicht existiert, erstellen Sie ihn jetzt.kubectl create namespace instana-clickhouse - Erstellen Sie das Dienstkonto
clickhousekeeper.
kubectl create serviceaccount clickhousekeeper -n instana-clickhouse- Prüfen Sie, ob der Namespace
Wenn Ihre interne Bildregistrierung eine Authentifizierung erfordert, erstellen Sie ein Bildabrufgeheimnis.
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>Installieren Sie den Betreiber ClickHouse. Wenn Sie im vorangegangenen Schritt ein Image Pull Secret erstellt haben, fügen Sie dem folgenden Befehl
--set imagePullSecrets[0].name="<internal-image-registry-pull-secret>"hinzu.helm install clickhouse-operator ibm-clickhouse-operator-v1.2.18.tgz -n instana-clickhouse --version=v1.2.0 --set operator.image.repository=<internal-image-registry>/clickhouse-operator --set operator.image.tag=v1.2.18Erstellen Sie eine YAML-Datei, z.B.
clickhouse_keeper.yaml, mit der Ressourcendefinition"ClickHouseKeeperInstallation.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-openssl:25.8.6.11-1-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-openssl:25.8.6.11-1-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: 20GiFühren Sie die Schritte unter Bereitstellen und Überprüfen von ClickHouseKeeper (online und offline) aus.
Bereitstellung und Überprüfung von ClickHouseKeeper (online und offline)
Um die Instanz ClickHouseKeeper bereitzustellen und den Datenspeicher zu erstellen, führen Sie die folgenden Schritte aus.
Stellen Sie ClickHouseKeeper bereit.
kubectl apply -f clickhouse_keeper.yaml -n instana-clickhouseÜberprüfen Sie den ClickHouse Betreiber und ClickhouseKeeper Einsatz.
kubectl get all -n instana-clickhouseWenn der Operator ClickHouse erfolgreich eingesetzt wurde, zeigt die Befehlsausgabe den Operator-Status
Runningan, wie im folgenden Beispiel gezeigt: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