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以降
clickhouseリポジトリへの読み取りアクセスを持つEDB Cloudsmithアカウント。そこから2つの資格情報を使用します。資格トークン — HelmチャートリポジトリのURLに埋め込まれています。 https://www.enterprisedb.com/accounts/loginにあるEDBアカウントから取得します。
Cloudsmith APIキー — Kubernetesが
docker.enterprisedb.comからイメージをプルするときにDockerパスワードとして使用されます。 https://cloudsmith.io/user/settings/api/から取得しますEDB SSOを介してログインします。
イメージプルシークレットの作成#
Kubernetesがdocker.enterprisedb.com
からEDBコンテナイメージをプルするには資格情報が必要です。オペレーターをインストールする名前空間にdocker-registry
シークレットを作成します。
kubectl create namespace clickhouse
kubectl create secret docker-registry cs-pull \
--namespace=clickhouse \
--docker-server=docker.enterprisedb.com \
--docker-username=<your-cloudsmith-username> \
--docker-password=<your-cloudsmith-api-key>
Helmインストールでオペレーターポッドが独自のイメージをプルできるように、すべてのClickHouseInstallation
ClickHouseポッドがedb-clickhouse-server
をプルできるように、の両方でcs-pull を参照します。
オペレーターのインストール#
EDB Helmリポジトリを追加します。
<entitlement-token>をEDBアカウントのトークンに置き換え、<cs-repo>をリリースノートにリストされているEDB Cloudsmithリポジトリ名に置き換えます。
helm repo add edb \
"https://dl.cloudsmith.io/<entitlement-token>/enterprisedb/<cs-repo>/helm/charts/"
helm repo update edb
チャートをインストールします。 EDBリリースサフィックス
-NedbMはSemVerプレリリースタグであり、helm searchがデフォルトでこれらをフィルタリングするため、--versionを明示的に指定します。
helm upgrade --install clickhouse-operator \
edb/edb-clickhouse-operator-chart \
--version <operator-version> \
--namespace clickhouse \
--set imagePullSecrets[0].name=cs-pull
オペレーターが実行されていることを確認します。
kubectl get pods -n clickhouse
オペレーターポッドは、約30秒以内に2/2 Ready
を報告します。2つのコンテナは、オペレーターとメトリックエクスポーターサイドカーです。
登録されたCRDを確認します。
kubectl get crds | grep altinity
上記の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/<cs-repo>/edb-clickhouse-server:<server-version>
ports:
- name: http
containerPort: 8123
- name: client
containerPort: 9000
imagePullSecrets
はポッドテンプレートの内部にあることに注意してください。これは、オペレーターポッド自分自身ではなく、オペレーターが作成するClickHouseポッドに適用されます。どちらもそれが必要です。
<server-version> は、edb-clickhouse-server
のDockerイメージタグです。
Dockerタグには、RPMパッケージが使用する-NedbM
サフィックスがありません。上流バージョンのみ 26.3.12.1
など。オペレーターバージョンと互換性のあるバージョンについては、リリースノートを確認してください。
リソースを適用し、クラスターが起動するのを確認します。
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
次に、別のターミナルで
clickhouse-client --host 127.0.0.1 --port 9000
または、クラスター内でワンショットクエリーを実行します。
kubectl exec -it -n clickhouse \
"$(kubectl get pods -n clickhouse -l clickhouse.altinity.com/chi=my-clickhouse -o name | head -1)" \
-- clickhouse-client --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