clickhouse-operatorツアー

この記事は[Kubernetes Advent Calendar 2021(2)](https://qiita.com/advent-calendar/2021/kubernetes)の23日目の記事です。

あらかじめ検証で使用した環境を示します。

- macOS 11.6.1
- CPUアーキテクチャ: x86-64

## clickhouse-operatorとは

clickhouse-operatorは、[Altinity](https://altinity.com/)が作成したClickHouseをKubernetesで管理するツールです。
Altinityは英国のデータ分析コンサルを行う会社で、ClickHouseを用いた分析を得意とするほか、ClickHouse自体の開発や[Altinity.Cloud](https://altinity.com/cloud-database/)というClickHouseをAWSやGCPへホスティングを行うサービスも展開しています。
おそらくAltinity.Cloudでも使用されているため、今後もメンテナンスは続いていくツールになると思います。

https://github.com/Altinity/clickhouse-operator

公式のドキュメントに必要なことは書いてありますが、ちょいちょい動かないところもあります。
本記事では公式をベースに使い方を見ていきたいと思います。`kubernetes`がわからなくても進められるようコマンドは全て記載します。雰囲気を感じていただければと思います。

## clickhouse-operatorのインストール

必要なツールは以下の通りです。()内は検証で使用したバージョン
clickhouse-operatorはドライバ無し(`--vm-driver=none`)では起動しないので、ここでは`docker`を使用します。

- [docker](https://www.docker.com/)
- [kubectl](https://kubernetes.io/ja/)(1.23.1)
- [minikube](https://minikube.sigs.k8s.io/docs/)(1.24.0)

docker以外のインストールは [Homebrew](https://brew.sh) を使います。

```bash
$ brew update
$ brew install kubectl minikube
```

インストールが終わったら、minikubeを起動してください。

```bash
$ minikube start
😄  Darwin 11.6.1 上の minikube v1.24.0
✨  dockerドライバーが自動的に選択されました。他の選択肢:  hyperkit, ssh
👍  コントロールプレーンのノード minikube を minikube 上で起動しています
🚜  イメージを Pull しています...
💾  Kubernetes v1.22.3 のダウンロードの準備をしています
    > preloaded-images-k8s-v13-v1...: 501.73 MiB / 501.73 MiB  100.00% 40.93 Mi
    > gcr.io/k8s-minikube/kicbase: 355.78 MiB / 355.78 MiB  100.00% 11.90 MiB p
🔥  docker container (CPUs=2, Memory=15963MB) を作成しています...
🐳  Docker 20.10.8 で Kubernetes v1.22.3 を準備しています...
    ▪ 証明書と鍵を作成しています...
    ▪ Control Plane を起動しています...
    ▪ RBAC のルールを設定中です...
🔎  Kubernetes コンポーネントを検証しています...
    ▪ イメージ gcr.io/k8s-minikube/storage-provisioner:v5 を使用しています
🌟  有効なアドオン: storage-provisioner, default-storageclass
🏄  完了しました！ kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
```

minikubeの起動を確認します。

```bash
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
```

minikubeを起動の起動が確認できたらclickhouse-operatorをインストールします。インストール方法はドキュメントに従います。

```bash
$ kubectl apply -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator/clickhouse-operator-install-bundle.yaml
customresourcedefinition.apiextensions.k8s.io/clickhouseinstallations.clickhouse.altinity.com created
customresourcedefinition.apiextensions.k8s.io/clickhouseinstallationtemplates.clickhouse.altinity.com created
customresourcedefinition.apiextensions.k8s.io/clickhouseoperatorconfigurations.clickhouse.altinity.com created
serviceaccount/clickhouse-operator created
clusterrole.rbac.authorization.k8s.io/clickhouse-operator-kube-system created
clusterrolebinding.rbac.authorization.k8s.io/clickhouse-operator-kube-system created
configmap/etc-clickhouse-operator-files created
configmap/etc-clickhouse-operator-confd-files created
configmap/etc-clickhouse-operator-configd-files created
configmap/etc-clickhouse-operator-templatesd-files created
configmap/etc-clickhouse-operator-usersd-files created
deployment.apps/clickhouse-operator created
service/clickhouse-operator-metrics created
```

インストールの確認をします。clickhouse-opreratorは`kube-system`に入っています。

```bash
$ kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS      AGE
clickhouse-operator-6fd75cbd68-jmf95   2/2     Running   0             107s

$ kubectl describe deployment clickhouse-operator -n kube-system                   
Name:                   clickhouse-operator
Namespace:              kube-system
CreationTimestamp:      Thu, 03 Feb 2022 12:24:32 +0900
(省略)
```

STATUSが `Running` になっていれば正常にインストールできています。api-resourceは次のものが追加されています。

```bash
$ kubectl api-resources
clickhouseinstallations            chi          clickhouse.altinity.com/v1             true         ClickHouseInstallation
clickhouseinstallationtemplates    chit         clickhouse.altinity.com/v1             true         ClickHouseInstallationTemplate
clickhouseoperatorconfigurations   chopconf     clickhouse.altinity.com/v1             true         ClickHouseOperatorConfiguration
```

最後にこの記事中で使用するネームスペース(`dev`)を作成します。
小規模なクラスタでは特に必要なさそうですが、clickhouse-operatorのドキュメントではネームスペースで区切るのはいいことだとあるので従います。

```bash
$ kubectl create namespace dev
namespace/dev created
```

再起動後などminikubeの起動を忘れがちです。minikubeが起動していない状態で`kubectl get`などを叩くと以下のような出力となります。その際は起動させてください。

```bash
$ kubectl get pods -n kube-system
The connection to the server 127.0.0.1:61810 was refused - did you specify the right host or port?
```

## ClickHouseを構築する

公式のドキュメントにもあるサンプルを使用してClickHouseを構築します。

```bash
$ kubectl apply -n dev -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/docs/chi-examples/01-simple-layout-01-1shard-1repl.yaml
clickhouseinstallation.clickhouse.altinity.com/simple-01 created
```

起動に少し時間がかかります。作成されたリソースを確認します。

```bash
$ kubectl get all -n dev 
NAME                             READY   STATUS    RESTARTS   AGE
pod/chi-simple-01-simple-0-0-0   1/1     Running   0          19m

NAME                               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                         AGE
service/chi-simple-01-simple-0-0   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      19m
service/clickhouse-simple-01       LoadBalancer   10.100.74.68   <pending>     8123:31696/TCP,9000:30143/TCP   19m

NAME                                        READY   AGE
statefulset.apps/chi-simple-01-simple-0-0   1/1     19m
```

作成に使用したyamlファイルの内容は以下となります。(2021/12/23時点)

```yaml
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
  name: "simple-01"
spec:
  configuration:
    clusters:
      - name: "simple"
```

### 命名規則

作成されるリソース名は以下の通りについています。`chi` はClickHouseInstallationのことです。

- pod: `chi-<metadata.name>-<spec.configuration.clusters.name>-<shard>-<replica>-0`
- service(ClusterIP): `chi-<metadata.name>-<spec.configuration.clusters.name>-<shard>-<replica>`
- service(LoadBalancer): `clickhouse-<metadata.name>`
- statefulset: `chi-<metadata.name>-<spec.configuration.clusters.name>-<shard>-<replica>`

構築できたら接続を確認します。
docker内のminikube上で動作しているため、直接httpアクセスはできません。minikubeに入ってアクセスを行います。IPはService(LoadBalancer)ののCLUSTER-IPの値になります。

```bash
$ docker exec -it minikube sh

$ curl 10.100.74.68:8123
OK
```

minikubeに入らなくてもclickhouse-clientを立て接続することも可能です。

```bash
$ kubectl -n dev exec -it pod/chi-simple-01-simple-0-0-0 -- clickhouse-client
ClickHouse client version 21.12.2.17 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 21.12.2 revision 54452.
```

```sql
:) show databases

SHOW DATABASES

Query id: 101acd52-4ab9-46c5-aa97-38eebea5b3c1

┌─name───────────────┐
│ INFORMATION_SCHEMA │
│ default            │
│ information_schema │
│ system             │
└────────────────────┘

4 rows in set. Elapsed: 0.003 sec.
:) exit
Happy new year.
```

**Happy new year.**

構築と接続の確認ができたので、作成したリソースの削除をします。

```bash
$ kubectl delete -n dev -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/docs/chi-examples/01-simple-layout-01-1shard-1repl.yaml
clickhouseinstallation.clickhouse.altinity.com "simple-01" deleted
```

削除を確認します。

```bash
$ kubectl get all -n dev
No resources found in dev namespace.
```

## レプリケーション構成のClickHouseを構築する

続いてシャード、レプリケーションのクラスタ構成のClickHouseを構築します。

### zookeeperの構築

ClickHouseのレプリケーションにはzookeeperが必要なのでドキュメントを参考に構築します。ここでは1インスタンス構成にします。

https://github.com/Altinity/clickhouse-operator/blob/master/docs/zookeeper_setup.md

zookeeper用のネームスペースを作成します。

```bash
$ kubectl create namespace zoo1ns
namespace/zoo1ns created
```

1インスタンス構成のyamlファイルはリポジトリ内にあるのでそれを使用して構築します。

```bash
$ kubectl apply -n zoo1ns -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/zookeeper/quick-start-persistent-volume/zookeeper-1-node.yaml
sistent-volume/zookeeper-1-node.yaml
service/zookeeper created
service/zookeepers created
Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
poddisruptionbudget.policy/zookeeper-pod-disruption-budget created
statefulset.apps/zookeeper created
```

`Warning`が出力されていますが、zookeeper-1-node.yamlの問題なので一旦無視します。もしこの問題で動作しない時はファイルをダウンロードして `apiVersion: policy/v1beta1` -> `apiVersion: policy/v1` に変更して使用してください。

構築を確認します。

```bash
$ kubectl get all -n zoo1ns
NAME              READY   STATUS    RESTARTS   AGE
pod/zookeeper-0   1/1     Running   0          50s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
service/zookeeper    ClusterIP   10.111.66.234   <none>        2181/TCP,7000/TCP   50s
service/zookeepers   ClusterIP   None            <none>        2888/TCP,3888/TCP   50s

NAME                         READY   AGE
statefulset.apps/zookeeper   1/1     50s
```

### ClickHouseクラスタの構築

zookeeperの構築が完了したらClickHouseの構築を行います。ドキュメントは以下です。

https://github.com/Altinity/clickhouse-operator/blob/master/docs/replication_setup.md

例によりリポジトリ内にあるサンプルを使用します。
2シャード2レプリカの4インスタンスの構成でクラスタが構築されます。

```bash
$ kubectl apply -n dev -f https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/docs/chi-examples/04-replication-zookeeper-05-simple-PV.yaml
clickhouseinstallation.clickhouse.altinity.com/repl-05 created
```

起動にはしばらくかかるので待ちます。起動が終わったら状態を確認します。

```bash
$ kubectl get all -n dev
NAME                               READY   STATUS    RESTARTS   AGE
pod/chi-repl-05-replicated-0-0-0   1/1     Running   0          87s
pod/chi-repl-05-replicated-0-1-0   1/1     Running   0          45s
pod/chi-repl-05-replicated-1-0-0   1/1     Running   0          23s
pod/chi-repl-05-replicated-1-1-0   1/1     Running   0          3s

NAME                                 TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                         AGE
service/chi-repl-05-replicated-0-0   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      47s
service/chi-repl-05-replicated-0-1   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      29s
service/chi-repl-05-replicated-1-0   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      8s
service/chi-repl-05-replicated-1-1   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      1s
service/clickhouse-repl-05           LoadBalancer   10.99.134.99   <pending>     8123:30634/TCP,9000:31800/TCP   89s

NAME                                          READY   AGE
statefulset.apps/chi-repl-05-replicated-0-0   1/1     87s
statefulset.apps/chi-repl-05-replicated-0-1   1/1     45s
statefulset.apps/chi-repl-05-replicated-1-0   1/1     23s
statefulset.apps/chi-repl-05-replicated-1-1   1/1     3s
```

構築できました。
続いて実際にReplicatedのテーブルを作成、データを登録していきます。ドキュメントによるとレプリカの設定に使える変数として、macroに`installation`、`cluster`、`replica`、`shard`が設定されるようです。

```bash
$ kubectl -n dev exec -it pod/chi-repl-05-replicated-0-0-0 -- clickhouse-client
ClickHouse client version 20.7.4.11 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.7.4 revision 54437.
```

展開される変数の確認

```sql
:) SELECT *
FROM system.macros

┌─macro─────────────┬─substitution───────────────┐
│ all-sharded-shard │ 1                          │
│ cluster           │ replicated                 │
│ installation      │ repl-05                    │
│ replica           │ chi-repl-05-replicated-0-0 │
│ shard             │ 0                          │
└───────────────────┴────────────────────────────┘

5 rows in set. Elapsed: 0.002 sec. 
```

```sql
:) CREATE TABLE events_local ON CLUSTER `{cluster}`
(
    `event_date` Date,
    `event_type` Int32,
    `article_id` Int32,
    `title` String
)
ENGINE = ReplicatedMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/{database}/{table}', '{replica}')
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_type, article_id)

┌─host───────────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chi-repl-05-replicated-1-1 │ 9000 │      0 │       │                   3 │                1 │
│ chi-repl-05-replicated-0-0 │ 9000 │      0 │       │                   2 │                1 │
│ chi-repl-05-replicated-0-1 │ 9000 │      0 │       │                   1 │                1 │
└────────────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host───────────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chi-repl-05-replicated-1-0 │ 9000 │      0 │       │                   0 │                0 │
└────────────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

4 rows in set. Elapsed: 0.185 sec.
```

```sql
:) INSERT INTO events_local SELECT 
    today(),
    rand() % 3,
    number,
    'my title'
FROM numbers(100)

Ok.

0 rows in set. Elapsed: 0.017 sec.

:) SELECT *
FROM events_local
LIMIT 5

┌─event_date─┬─event_type─┬─article_id─┬─title────┐
│ 2021-12-22 │          0 │          4 │ my title │
│ 2021-12-22 │          0 │          5 │ my title │
│ 2021-12-22 │          0 │          7 │ my title │
│ 2021-12-22 │          0 │          8 │ my title │
│ 2021-12-22 │          0 │         12 │ my title │
└────────────┴────────────┴────────────┴──────────┘

5 rows in set. Elapsed: 0.003 sec.
```

zookeeperの確認

```sql
:) SELECT name
FROM system.zookeeper
WHERE path = '/clickhouse/repl-05/replicated/tables/0/default/events_local'

┌─name───────────────────────┐
│ metadata                   │
│ temp                       │
│ mutations                  │
│ log                        │
│ leader_election            │
│ columns                    │
│ blocks                     │
│ nonincrement_block_numbers │
│ replicas                   │
│ quorum                     │
│ block_numbers              │
└────────────────────────────┘

11 rows in set. Elapsed: 0.006 sec.
```

別のpodに接続してレプリケーションされていることを確認します。

```bash
> kubectl -n dev exec -it pod/chi-repl-05-replicated-0-1-0 -- clickhouse-client
ClickHouse client version 20.7.4.11 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.7.4 revision 54437.
```

```sql
:) SELECT *
FROM events_local
LIMIT 5

┌─event_date─┬─event_type─┬─article_id─┬─title────┐
│ 2021-12-22 │          0 │          4 │ my title │
│ 2021-12-22 │          0 │          5 │ my title │
│ 2021-12-22 │          0 │          7 │ my title │
│ 2021-12-22 │          0 │          8 │ my title │
│ 2021-12-22 │          0 │         12 │ my title │
└────────────┴────────────┴────────────┴──────────┘

5 rows in set. Elapsed: 0.003 sec.
```

レプリケーションの確認ができました。

## ClickHouseのアップグレード

最後にClickHouseのアップグレードを試していきます。ドキュメントは以下です。

https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi_update_clickhouse_version.md

ここでは、一つ前のシャード、レプリカ構成で作成したクラスタを1台ずつ更新していきたいと思います。
構築に使用したyamlファイルをダウンロードして`04-replication-zookeeper-05-simple-PV-upgrade.yaml`という名前で保存します。

https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/docs/chi-examples/04-replication-zookeeper-05-simple-PV.yaml

最新の`21.12`に更新したいと思います。
まずは`templates.podTemplates`に設定を追加します。各サーバの設定は`layout.shards`で指定すれば上書きできます。shardの名前はデフォルトが設定されているので、mocrosテーブルを参照してください。replicaも名前で指定したいのですが、デフォルトでついた名前(`chi-repl-05-replicated-0-0`)の文字列長が15を超えているため指定できませんでした。

```yaml
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"

metadata:
  name: "repl-05"

spec:
  defaults:
    templates: 
      dataVolumeClaimTemplate: default
      podTemplate: clickhouse:19.6
 
  configuration:
    zookeeper:
      nodes:
      - host: zookeeper.zoo1ns
    clusters:
      - name: replicated
        layout:
          # shardsCount: 2
          # replicasCount: 2
          shards:
            - name: "0"
              replicas:
              - tcpPort: 9000
              - tcpPort: 9000
                templates:
                  podTemplate: clickhouse:21.12
            - name: "1"
              replicas:
              - tcpPort: 9000
              - tcpPort: 9000
  templates:
    volumeClaimTemplates:
      - name: default
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 500Mi
    podTemplates:
      - name: clickhouse:19.6
        spec:
          containers:
            - name: clickhouse-pod
              image: yandex/clickhouse-server:20.7
      - name: clickhouse:21.12
        spec:
          containers:
            - name: clickhouse-pod
              image: clickhouse/clickhouse-server:21.12
```

変更を適用します。

```bash
$ kubectl apply -n dev -f 04-replication-zookeeper-05-simple-PV-upgrade.yaml
```

変更が走るまでしばらく時間がかかるので待ちます。変更完了後に状態を表示すると、AGEから`pod/chi-repl-05-replicated-0-1-0`のみ変更されていることがわかります。

```bash
$ kubectl get all -n dev                                    
NAME                               READY   STATUS    RESTARTS   AGE
pod/chi-repl-05-replicated-0-0-0   1/1     Running   0          19m
pod/chi-repl-05-replicated-0-1-0   1/1     Running   0          2m11s
pod/chi-repl-05-replicated-1-0-0   1/1     Running   0          18m
pod/chi-repl-05-replicated-1-1-0   1/1     Running   0          18m

NAME                                 TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                         AGE
service/chi-repl-05-replicated-0-0   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      19m
service/chi-repl-05-replicated-0-1   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      19m
service/chi-repl-05-replicated-1-0   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      18m
service/chi-repl-05-replicated-1-1   ClusterIP      None           <none>        8123/TCP,9000/TCP,9009/TCP      17m
service/clickhouse-repl-05           LoadBalancer   10.99.228.67   <pending>     8123:32628/TCP,9000:32547/TCP   19m

NAME                                          READY   AGE
statefulset.apps/chi-repl-05-replicated-0-0   1/1     19m
statefulset.apps/chi-repl-05-replicated-0-1   1/1     19m
statefulset.apps/chi-repl-05-replicated-1-0   1/1     18m
statefulset.apps/chi-repl-05-replicated-1-1   1/1     18m
```

ClickHouseにアクセスして更新後のバージョンを確認します。

```bash
$ kubectl -n dev exec -it pod/chi-repl-05-replicated-0-1-0 -- clickhouse-client
ClickHouse client version 21.12.2.17 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 21.12.2 revision 54452.
```

`21.12.2.1`に更新されています。つづいてデータを確認します。

```sql
:) SELECT *
FROM events
LIMIT 5

Query id: 4e8eb4f2-f760-472c-8305-1c9c28273ce8

┌─event_date─┬─event_type─┬─article_id─┬─title────┐
│ 2021-12-22 │          0 │          0 │ my title │
│ 2021-12-22 │          0 │          3 │ my title │
│ 2021-12-22 │          0 │          5 │ my title │
│ 2021-12-22 │          0 │          9 │ my title │
│ 2021-12-22 │          0 │         12 │ my title │
└────────────┴────────────┴────────────┴──────────┘

5 rows in set. Elapsed: 0.002 sec.
```

1台の更新が確認できたので、同じように他のpodにも変更を行なっていけば全てのアップグレードが行えます。

## clickhouse-operatorの設定変更

clickhouse-operatorの設定の変更方法を試します。ドキュメントは以下です。

https://github.com/Altinity/clickhouse-operator/blob/master/docs/operator_configuration.md

デフォルトではclickhouse-operatorで作成したDBはdefaultユーザのアクセスをローカルのみに制限しています。ここではその制限を外すのと、passwordも空にします。
設定を変更する方法はいくつかありますが、今回は　`ClickHouseOperatorConfiguration` を使用します。ドキュメントにあるexampleのファイルを取得し、変更した`custom-config.yaml`を作成します。変更箇所の差分を以下に示します。

```plaintext
$ diff -y 70-chop-config.yaml custom-config.yaml 
################################################           ################################################
##                                                         ##
## Configuration Users Section                             ## Configuration Users Section
##                                                         ##
################################################           ################################################
user:                                                      user:
  default:                                                   default:
    # Default values for ClickHouse user configuration         # Default values for ClickHouse user configuration
    # 1. user/profile - string                                 # 1. user/profile - string
    # 2. user/quota - string                                   # 2. user/quota - string
    # 3. user/networks/ip - multiple strings                   # 3. user/networks/ip - multiple strings
    # 4. user/password - string                                # 4. user/password - string
    profile: default                                           profile: default
    quota: default                                             quota: default
    networksIP:                                                networksIP:
      - "::1"                                           |        - "::/0"
      - "127.0.0.1"                                     <
     password: "default"                                |      password: ""
```

リソースを作成します。

```bash
$ kubectl apply -f custom-config.yaml -n kube-system

$ kubectl get chopconf -n kube-system                           
NAME        NAMESPACES
chop-config-01
```

作成が確認できたらclickhouse-operatorを再起動して反映します。

```bash
$ kubectl rollout restart deploy clickhouse-operator -n kube-system
```

以上で、設定を変更できました。今後作成するDBにはこの設定が反映されることになります。

---

clickhouse-operatorを使用してClickHouseの構築からアップグレードまで基本的な操作を動かしてきました。自分も触り始めたばかりでどういったことができるかわかっていませんが、設定ファイルのレイアウトを見る限りコンフィグファイルのカスタマイズなど細かい設定まで行えるようです。
また、リポジトリ内には多くのサンプルもあり、AWSでの設定や、複数ストレージの設定などもちょっと調べれば使える気がしているので、もっと使い込んでいこうと思います。