1. Custom Resource元素
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
name: "clickhouse-installation-test"
这是clickhouse operator自定义的资源ClickHouseInstallation
1.1. .spec.defaults
spec:
defaults: - section represents default values for sections below.
replicasUseFQDN: "no" - should replicas be specified by FQDN in <host></host>
distributedDDL: - reference to <yandex><distributed_ddl></distributed_ddl></yandex>
profile: default
storageManagement:
# Specify PVC provisioner.
# 1. StatefulSet. PVC would be provisioned by the StatefulSet
# 2. Operator. PVC would be provisioned by the operator
provisioner: StatefulSet
# Specify PVC reclaim policy.
# 1. Retain. Keep PVC from being deleted
# Retaining PVC will also keep backing PV from deletion. This is useful in case we need to keep data intact.
# 2. Delete
reclaimPolicy: Retain
1.2. .spec.configuration
表示ClickHouse配置文件的来源。无论是用户,远程服务器等配置文件。
1.2.1. .spec.configuration.zookeeper
表示标签 <yandex><zookeeper></zookeeper></yandex> 配置
zookeeper:
nodes:
- host: zookeeper-0.zookeepers.zoo3ns.svc.cluster.local
port: 2181
- host: zookeeper-1.zookeepers.zoo3ns.svc.cluster.local
port: 2181
- host: zookeeper-2.zookeepers.zoo3ns.svc.cluster.local
port: 2181
session_timeout_ms: 30000
operation_timeout_ms: 10000
root: /path/to/zookeeper/node
identity: user:password
1.2.2. .spec.configuration.profiles
profiles:
readonly/readonly: 1 表示<yandex><profiles></profiles></yandex> settings
1.2.3. .spec.configuration.users
users:
readonly/profile: readonly
# <users>
# <readonly>
# <profile>readonly</profile>
# </readonly>
# </users>
test/networks/ip:
- "127.0.0.1"
- "::/0"
# <users>
# <test>
# <networks>
# <ip>127.0.0.1</ip>
# <ip>::/0</ip>
# </networks>
# </test>
# </users>
test/profile: default
test/quotas: default
1.2.4. .spec.configuration.settings
profiles:
readonly/readonly: "1"
# <profiles>
# <readonly>
# <readonly>1</readonly>
# </readonly>
# </profiles>
default/max_memory_usage: "1000000000"
1.2.5. .spec.configuration.files
file允许通过YAML自定义ClickHouse文件。这可以用于创建复杂的自定义配置。
spec:
configuration:
settings:
dictionaries_config: config.d/*.dict
files:
dict_one.dict: |
<yandex>
<dictionary>
<name>one</name>
<source>
<clickhouse>
<host>localhost</host>
<port>9000</port>
<user>default</user>
<password/>
<db>system</db>
<table>one</table>
</clickhouse>
</source>
<lifetime>60</lifetime>
<layout><flat/></layout>
<structure>
<id>
<name>dummy</name>
</id>
<attribute>
<name>one</name>
<expression>dummy</expression>
<type>UInt8</type>
<null_value>0</null_value>
</attribute>
</structure>
</dictionary>
</yandex>
1.2.6. .spec.configuration.clusters
集群配置
clusters:
- name: all-counts # 基础配置 使用layout
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
schemaPolicy:
replica: All
shard: All
layout:
shardsCount: 3 分片数
replicasCount: 2 副本数
- name: shards-only
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
layout:
shardsCount: 3
# replicasCount not specified, assumed = 1, by default
- name: replicas-only
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
layout:
# shardsCount not specified, assumed = 1, by default
replicasCount: 3
- name: customized #自定义分片和副本 使用shards and replicas标签.
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
schemaPolicy:
replica: None
shard: None
layout:
shards:
- name: shard0
replicasCount: 3
weight: 1
internalReplication: Disabled
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
- name: shard1
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
replicas:
- name: replica0
- name: replica1
- name: replica2
- name: shard2
replicasCount: 3
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
replicaServiceTemplate: replica-service-template
replicas:
- name: replica0
tcpPort: 9000
httpPort: 8123
interserverHTTPPort: 9009
templates:
podTemplate: clickhouse-v23.8
dataVolumeClaimTemplate: default-volume-claim
logVolumeClaimTemplate: default-volume-claim
replicaServiceTemplate: replica-service-template
- name: with-secret
# Insecure communication.
# Opens/Closes insecure ports
insecure: "yes"
# Secure communication.
# Opens/Closes secure ports
# Translates into <secure>1</secure> ClickHouse setting for remote replicas
secure: "yes"
# Shared secret value to secure cluster communications
secret:
# Auto-generate shared secret value to secure cluster communications
auto: "True"
# Cluster shared secret value in plain text
value: "plaintext secret"
# Cluster shared secret source
valueFrom:
secretKeyRef:
name: "SecretName"
key: "Key"
layout:
shardsCount: 2
1.3. .spec.templates
1.3.1. .serviceTemplates
templates:
serviceTemplates:
- name: chi-service-template
# generateName understands different sets of macroses,
# depending on the level of the object, for which Service is being created:
#
# For CHI-level Service:
# 1. {chi} - ClickHouseInstallation na