Installing EDB Postgres AI for ClickHouse on Kubernetes#
EDB ClickHouse Kubernetesオペレーターは、KubernetesでのClickHouse展開を管理し、クラスターのプロビジョニング、構成、アップグレード、およびスケーリングを処理します。
Helmチャートを介してインストールされると、以下を作成します。
4つのカスタムリソース定義CRD
clickhouseinstallations略称chiclickhouseinstallationtemplatesclickhouseoperatorconfigurationsclickhousekeeperinstallations略称chkオペレーターおよびメトリックエクスポーターサイドカー
2/2 Readyを実行する展開。オペレーターがクラスター全体でClickHouseリソースを管理するために必要なサービスアカウント、ロール、クラスターロール、およびバインディング。
前提条件#
実行中のKubernetesクラスター1.26以降
kubectlはクラスターと通信するように構成Helm 3.8以降
EDBサブスクリプショントークン、 EDB customer portal から入手できます。これは、HelmチャートリポジトリURLと、KubernetesがイメージをプルするときのDockerパスワードの両方で使用します。
イメージプルシークレットの作成#
Kubernetesがdocker.enterprisedb.com
からEDBコンテナイメージをプルするには資格情報が必要です。オペレーターをインストールする名前空間にdocker-registry
シークレットを作成します。
export EDB_SUBSCRIPTION_TOKEN=<your-token>
kubectl create namespace clickhouse
kubectl create secret docker-registry cs-pull \
--namespace=clickhouse \
--docker-server=docker.enterprisedb.com \
--docker-username=clickhouse \
--docker-password="$EDB_SUBSCRIPTION_TOKEN"
Helmインストールでcs-pull
を参照してオペレーターポッドが独自のイメージをプルでき、すべてのClickHouseInstallation
でClickHouseポッドがedb-clickhouse-server
をプルできるようにします。
注釈
ユーザー名は、プル元のリポジトリと一致する必要があります。 Dockerは、リポジトリを区別せずにレジストリをキーとした資格情報を保存するため、各ログインは以前のログインを上書きします。 docker.enterprisedb.com の別のリポジトリからイメージをプルする必要がある場合は、適切なユーザー名で再度ログインします。
オペレーターのインストール#
EDB Helmリポジトリを追加します。
helm repo add edb \
"https://dl.cloudsmith.io/$EDB_SUBSCRIPTION_TOKEN/enterprisedb/clickhouse/helm/charts/"
helm repo update edb
チャートをインストールします。
helm upgrade --install clickhouse-operator \
edb/edb-clickhouse-operator-chart \
--version 0.27.2+1edb1 \
--namespace clickhouse \
--set imagePullSecrets[0].name=cs-pull
オペレーターが実行されていることを確認します。
kubectl get pods -n clickhouse
オペレーターポッドは、約30秒以内に2/2 Ready
を報告します。2つのコンテナは、オペレーターとメトリックエクスポーターサイドカーです。
登録されたCRDを確認します。
kubectl get crds | grep clickhouse
上記の4つのCRDすべてが出力に表示されます。
ClickHouseクラスターの作成#
オペレーターはClickHouseInstallation
リソースを監視し、実行中のClickHouseポッドにそれらを調整します。
clickhouse-installation.yaml という名前のファイルを作成します。
apiVersion: clickhouse.altinity.com/v1
kind: ClickHouseInstallation
metadata:
name: my-clickhouse
namespace: clickhouse
spec:
configuration:
clusters:
- name: my-cluster
templates:
podTemplate: edb-clickhouse
layout:
shardsCount: 1
replicasCount: 1
templates:
podTemplates:
- name: edb-clickhouse
spec:
imagePullSecrets:
- name: cs-pull
containers:
- name: clickhouse
image: docker.enterprisedb.com/clickhouse/edb-clickhouse-server:26.3.13.31-1edb1
ports:
- name: http
containerPort: 8123
- name: client
containerPort: 9000
imagePullSecrets
はポッドテンプレートの内部にあることに注意してください。これは、オペレーターポッド自分自身ではなく、オペレーターが作成するClickHouseポッドに適用されます。どちらもそれが必要です。
オペレーターバージョンと互換性のあるedb-clickhouse-server
バージョンのリリースノートを確認してください。
リソースを適用し、クラスターが起動するのを確認します。
kubectl apply -f clickhouse-installation.yaml
kubectl get chi -n clickhouse -w
STATUS がCompleted
を表示するまで待ちます。これには約60〜90秒かかります。
ClickHouseに接続する#
オペレーターは、クラスターごとにヘッドレスサービスを作成します。ポート転送を使用してサービス名を介して接続します。
kubectl port-forward -n clickhouse svc/clickhouse-my-clickhouse 9000:9000
次に、別のターミナルで。 default
ユーザーのデフォルトのパスワードはadmin123 です。
clickhouse-client --host 127.0.0.1 --port 9000 --password admin123
または、クラスター内でワンショットクエリーを実行します。
kubectl exec -it -n clickhouse \
"$(kubectl get pods -n clickhouse -l clickhouse.altinity.com/chi=my-clickhouse -o name | head -1)" \
-- clickhouse-client --password admin123 --query "SELECT version()"
返されたバージョンには(EDB Build)
サフィックスが含まれ、EDBディストリビューションを実行していることを確認します。
アンインストール#
kubectl delete chi my-clickhouse -n clickhouse # operator deletes pods and services
helm uninstall clickhouse-operator -n clickhouse # removes the operator Deployment; CRDs survive
kubectl delete secret cs-pull -n clickhouse # optional
CRDは、helm uninstall によって意図的に削除されません。
CRDを削除すると、他の名前空間のものも含む、すべての依存ClickHouseInstallation
が削除されます。クラスター内に他のオペレーターインスタンスがない場合にのみそれらを削除します。
kubectl delete crd \
clickhouseinstallations.clickhouse.altinity.com \
clickhouseinstallationtemplates.clickhouse.altinity.com \
clickhouseoperatorconfigurations.clickhouse.altinity.com \
clickhousekeeperinstallations.clickhouse-keeper.altinity.com