Criação de um repositório de dados do ClickHouseKeeper no Linux x86_64
Instale o operador ClickHouse e configure o Clickhouse-keeper.
Antes de iniciar
Certifique-se de que os seguintes pré-requisitos sejam atendidos:
- O host on-line ou off-line está preparado para extrair imagens do repositório externo.
- O repositório Helm foi adicionado.
Para obter mais informações, consulte “Preparação para a instalação de operadores de armazenamento de dados ”.
Versões do operador ClickHouse e tags de imagem
As imagens a seguir são necessárias para a carta Helm fixada ou para as versões do operador.
| Plataforma | Versões do operador | Versão do gráfico do Helm | Imagem com tag |
|---|---|---|---|
| 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 |
Instalação do ClickHouseKeeper on-line
Para instalar ClickHouse-keeper on-line, conclua as etapas a seguir.
Verifique se o namespace "
instana-clickhouseexiste em seu cluster. Se ele não existir, você poderá criá-lo agora.- Verificar se o namespace "
instana-clickhouseexiste.kubectl get namespace | grep clickhouse - Se o namespace "
instana-clickhousenão existir, crie-o agora.kubectl create namespace instana-clickhouse - Criar uma conta
clickhousekeeperde serviço.kubectl create serviceaccount clickhousekeeper -n instana-clickhouse
- Verificar se o namespace "
Crie segredos de extração de imagem para a imagem ClickHouse. Substitua "
<download_key>por sua própria chave de download.kubectl create secret docker-registry instana-registry \ --namespace=instana-clickhouse \ --docker-username=_ \ --docker-password=<download_key> \ --docker-server=artifact-public.instana.ioSe você estiver usando um cluster do Red Hat® OpenShift®, crie Restrições de Contexto de Segurança (SCC) antes de implantar o Operador do ClickHouse. Crie um arquivo ` YAML `, por exemplo
clickhouse-scc.yaml, com a definição do ` 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:clickhousekeeperCriar o recurso SCC.
kubectl apply -f clickhouse-scc.yamlInstale o operador 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"Crie um arquivo ` YAML `, por exemplo
clickhouse_keeper.yaml, com aClickHouseKeeperInstallationdefinição do recurso.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: 20GiConclua as etapas em Implantação e verificação de ClickHousekeeper (on-line e off-line).
Instalando o ClickHouseKeeper off-line
Instale o operador do ClickHouse em um ambiente com vedação de ar.
Se você não extraiu as imagens do ClickHouse do registro externo quando preparou a instalação, poderá extraí-las agora. Execute os seguintes comandos em seu host do bastion. Em seguida, copie as imagens para o seu servidor de Instana, que se encontra em um ambiente isolado.
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
Para instalar o operador ` ClickHouse ` em um ambiente isolado, execute as etapas a seguir no seu host ` Instana `.
Reenquadre as imagens no seu registro interno de imagens.
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-ibmEnvie as imagens para o seu registro interno de imagens.
docker push <internal-image-registry>/clickhouse-operator:v1.2.39 docker push <internal-image-registry>/clickhouse:25.8.13.73-7-lts-ibmCrie um arquivo ` YAML `, por exemplo
clickhouse-scc.yaml, com a definição do ` 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:clickhousekeeperCriar o recurso SCC.
kubectl apply -f clickhouse-scc.yamlVerifique se o namespace "
instana-clickhouseexiste em seu cluster. Se ele não existir, você poderá criá-lo agora.- Verificar se o namespace "
instana-clickhouseexiste.kubectl get namespace | grep clickhouse - Se o namespace "
instana-clickhousenão existir, crie-o agora.kubectl create namespace instana-clickhouse - Crie a conta
clickhousekeeperde serviço.
kubectl create serviceaccount clickhousekeeper -n instana-clickhouse- Verificar se o namespace "
Se o seu registro de imagem interno precisar de autenticação, crie um segredo de image pull.
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>Instale o operador ClickHouse. Se você criou um segredo de extração de imagem na etapa anterior, adicione
--set imagePullSecrets[0].name="<internal-image-registry-pull-secret>"ao comando a seguir.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.39Crie um arquivo ` YAML `, por exemplo
clickhouse_keeper.yaml, com a"ClickHouseKeeperInstallationdefinição do recurso.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: 20GiConclua as etapas em Implantação e verificação ClickHouseKeeper (on-line e off-line).
Implementação e verificação ClickHouseKeeper (on-line e off-line)
Para implantar a instância ClickHouseKeeper e criar o armazenamento de dados, conclua as etapas a seguir.
Implante ClickHouseKeeper.
kubectl apply -f clickhouse_keeper.yaml -n instana-clickhouseVerifique a implementação do operador ClickHouse e do ClickhouseKeeper.
kubectl get all -n instana-clickhouseSe o operador ClickHouse for implantado com êxito, a saída do comando mostrará o status do operador como '
Running, conforme mostrado no exemplo a seguir: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