Skip to main content
このページでは、登録トークンの取得から、ClickHouse Cloud が駆動するサービスライフサイクルを executor が適用する managed モードでの検証済みコネクタの準備までの手順を説明します。コネクタは、Kubernetes クラスター (Helm) または Linux VM (systemd) にインストールできます。標準的な手順はトークン登録です。環境からコネクタエンドポイントに直接アクセスできない場合は、エアギャップ環境およびミラーインストールを参照してください。executor を使わずに自分で運用する ClickHouse を監視する場合は、--no-managed を指定してください。

前提条件

環境を登録する

登録 (enrollment) を行う前に、アカウントチームがお客様の環境を登録し、組織に対して managed モードを有効化します。以下の情報をアカウントチームに伝えてください:
  • AWS アカウント ID、リージョン、EKS クラスター名
  • コネクタを Linux VM 上で実行するか、クラスター内で実行するか
  • プラットフォームコンポーネント用の node group
  • サービス用のネームスペースプレフィックス (デフォルトは ns-)
  • クラスターが ClickHouse イメージを取得する方法: ClickHouse Cloud がお客様のアカウント向けに設定するレジストリアクセスを利用するか、独自のミラーを利用するか
その後、ClickHouse Cloud からコネクタエンドポイント、使い捨ての登録トークン、および ClickHouse クラスターチャートの ECR リポジトリ ARN (Terraform ルート の chart_repository_arn 入力) が発行されます。Terraform でインストールする場合は、この時点でプラットフォームバンドルも受け取ります。このバンドルは、Helm の場合は clicklink clctl init --managed --from-terraform --platform-bundle で、VM の場合は登録後に clicklink clctl platform approve --bundle で適用します。それ以外の managed インストールでは、最初のバンドルは後から executor によってステージングされ、プラットフォーム更新 で説明しているとおり clicklink clctl platform approve で適用します。--no-managed を指定したインストールではバンドルは不要です。このトークンによって環境が識別されるため、登録時に追加の ID は不要です。

すべてのインストールで共通

  • コネクタ v0.17.0 以降。 それより前のリリースには Managed モード、platform コマンド、instances create がありません。インストーラーは --version を指定しない限り最新のリリースを提供します。
  • 登録時に発行されるコネクタエンドポイントと登録トークン。
  • ポート 443 での egress。宛先は https://<subdomain>.<connector-domain> と https://<subdomain>.enroll.<connector-domain>、さらにインストール時には releases.clicklink.clickhouse.com と Amazon ECR Public です。Managed モードでは、プラットフォームの同期や作成処理が ECR から チャート を取得する際に、executor が Amazon ECR と STS にも接続します。これらのいずれかに到達できない場合は、エアギャップ and ミラーインストール を参照してください。
  • Managed モードには Amazon EKS クラスター が必要です。init はそれ以外のクラスターでは Managed モードを拒否し、executor なしでインストールする方法として --no-managed を案内します。Terraform on AWS では、新規クラスター用と既存クラスター用のルートモジュールに加え、その上にプラットフォームレイヤーをインストールする init コマンドが提供されています。
  • executor の 権限 に必要な クラスター admin 権限。 この 権限 では、executor を自身の prefix 配下の ネームスペース に限定する ClusterRole、ClusterRoleBinding、ValidatingAdmissionPolicy が作成されます。Kubernetes では、init の実行に使う kubeconfig にこの権限が必要です。VM ではホストの kubeconfig に必要で、ホストに admin 権限がない場合、init は権限を持つホストで実行すべきコマンドを出力します。
  • ClickHouse はまだ不要です。 Managed インストールは サービス が存在しない状態から始まり、executor が作成した サービス が自動的に登録されます。Managed モードの init は、自身で運用している ClickHouse を登録しません (Kubernetes では --instance と --instance-namespace を拒否します) 。そのようなクラスターを監視するには、--no-managed を指定して別の コネクタ デプロイメント をインストールしてください。--ch-user-suffix を使えば、2 つの デプロイメント が コネクタ の user 名を衝突させることなく同一の インスタンス を共有できます。この デプロイメント には到達可能な native listener が必要で、セキュア接続なら 9440、plaintext なら 9000 を使用し、Kubernetes では自動検出されます。さらに、provisioning のために ClickHouse admin アクセスも必要です。パスワードなしの default user、--ch-admin-password-stdin もしくはプロンプトで渡すパスワード、または operator 管理の インスタンス の場合は CR injection のいずれかを利用します。
  • リリースアーティファクトをダウンロードするすべての環境での cosign。 インストーラーは常に SHA-256 checksum を検証します。cosign がインストールされていれば リリース の署名も検証し、CLICKLINK_REQUIRE_COSIGN=1 を指定した場合は cosign なしでの処理続行を拒否します。

Kubernetes (Helm) インストールの場合

  • kubeconfig:現在のコンテキストが EKS クラスターを指していること。コネクタのネームスペースの作成と読み取り、Secrets の適用、ServiceAccounts、Roles、RoleBindings の作成、チャートのインストール、および executor への クラスター-wide なアクセス権の付与が行える必要があります。
  • AWS 認証情報:workstation 上 (環境変数または profile) に、eks:DescribeCluster と ec2:DescribeVpcs の権限を持つもの。init はこれらを使用して、NetworkPolicy 用に クラスターの VPC の CIDR ブロックを読み取ります。ルックアップに失敗した場合は警告を表示し、そのリストは手動で入力できるよう空のまま残します。
  • コネクタエンドポイントの背後にある CIDR:インストール時にチャートのデフォルト拒否 NetworkPolicy を有効化するために必要です。指定がない場合、init はポリシーを disabled の状態で配置し、後から有効化する方法を表示します。
  • デフォルトの StorageClass、または --storage-class で指定するクラス。troubleshooter と executor は PersistentVolumeClaims 上に state を保持します。
  • イメージのプルアクセス:クラスターのノードが、パブリック ECR イメージまたは自身でホストする mirror をプルできる必要があります。

Linux VM(systemd)へのインストールの場合

  • systemd を使用する任意の Linux ホスト(amd64 または arm64)。Linux 向け builds は FIPS モードで動作します。
  • インストーラーおよび init のための root アクセス。
  • 空きポート:health と metrics 用に 8082、8084、8086、executor のローカル API 用にループバックインターフェイス上の 9999、support-session gateway を有効化する場合はさらに 8443。
  • provisioning および executor の 権限 のための Kubernetes API server への Admin アクセス:ホスト上の kubeconfig、--server と --ca-data、またはプロンプトのいずれか。Access bundles は両方の target で Kubernetes ServiceAccount に紐付けられます。Managed モードでは、kubeconfig の current context が管理対象の EKS クラスターを指している必要があります。それ以外の context を経由した 権限 は init が拒否します。
VM において Kubernetes API server の要件を回避する方法は --skip-provision のみで、これは stage 専用です。ClickHouse user の provisioning、executor の 権限、ユニットの有効化、検証をスキップするため、これだけでは動作するコネクタは生成されません。Kubernetes ではスキップされるのは ClickHouse user の provisioning のみです。チャートの executor は 権限 を付与された ServiceAccount がなければスケジュールできないため、executor の 権限 は引き続き適用されます。

インストールと登録

1

コネクタのエンドポイントと登録トークンを取得する

どちらも、環境の登録が完了するとアカウントチームから提供されます。エンドポイントの形式は次のとおりです:
このトークンは一度しか使用できず、短時間で有効期限が切れるため、受け取ったら速やかに登録してください。トークンはシークレットとして扱ってください。CLI はトークンを非表示のプロンプトまたは stdin の 1 行目から読み取り、コマンドライン引数やディスク、ログから読み取ることはありません。登録前に有効期限が切れてしまった場合は、アカウントチームに新しいトークンを依頼してください。
2

CLI のインストールと確認

1つのコマンドで、検証済みの clicklink バイナリをインストールできます。プラットフォーム (macOS または Linux、amd64 または arm64) を自動検出し、最新のリリースをダウンロードして SHA-256 チェックサムを検証します。cosign がインストールされている場合は、リリース署名も検証します。/usr/local/bin が書き込み可能な場合はそこに、そうでない場合は ~/.local/bin にインストールされます (必要に応じてそのディレクトリを PATH に追加してください。--bin-dir で変更できます) 。Kubernetes にインストールする場合は、対象のクラスターに kubeconfig でアクセスできる任意のマシンで実行してください:
VM へのインストールでは、ホスト上で同じスクリプトを --host 付きで実行します。検証済みのダウンロードが完了すると、clicklink システムユーザー、/etc/clicklink、/var/lib/clicklink、/var/log/clicklink の各ディレクトリ、および 3 つのコンポーネントすべての systemd ユニットが作成されます。/etc/clicklink/redaction-patterns.yaml には初期パターン一式が書き込まれます (既存のファイルはそのまま保持されます) 。そのため、次のステップは登録になります:
どちらの形式でも、リリースを固定するために --version vX.Y.Z を指定できます。いずれも再実行しても安全で、ホストへのインストールでは以前のバイナリがバックアップされ、稼働中の設定はそのまま保持されます。実行前にスクリプトを確認したい場合や、リリースの tarball を自分でフェッチして検証したい場合は、手動でのダウンロードと検証を参照してください。
3

コネクタを登録してインストールする

init --enroll はトークンを引き換え、署名済みのクライアント証明書と executor の cluster-wide grant を取得したうえで、コネクタをインストールして検証します。端末上では、init が Enable managed mode (ClickHouse manages the lifecycle of ClickHouse services in this cluster)? と尋ね、yes があらかじめ選択された状態になります。このプロンプトをスキップするには --managed を、executor を含まない観測専用インストールを行うには --no-managed を渡します。どちらのフラグも指定しない無人の新規インストールでは managed モードは無効のままになります (--force による再実行では、置き換えられる設定の状態が引き継がれます) 。そのため、スクリプトでは必ず --managed を渡してください。
kube コンテキストを EKS cluster に向けた状態で、ワークステーションから次を実行します:
非表示のプロンプトに enrollment token を貼り付けます。init は現在のコンテキストの EKS ARN から cluster の名前、region、AWS account を読み取るため、cluster に関する入力は一切不要です。続いて、以下の入力を求められます:
  • コネクタのネームスペース (デフォルトは clicklink)
  • StorageClass (cluster にデフォルトが設定されていない場合のみ)
  • コネクタのエンドポイントの背後にある CIDR (NetworkPolicy の egress allowlist 用。空のままにすると、ポリシーは無効の状態でステージングされます)
  • support-session の運用方針、および有効にする場合は operator のメール allowlist
init はトークンを引き換え、enrollment bundle を作業ディレクトリに handoff.yaml として保存します。さらに、executor ブロックと、NetworkPolicy の API サーバー CIDR として cluster VPC のレンジを含む Helm values オーバーレイ clicklink-values.yaml をステージングします。ネームスペースを作成し、clicklink-hmac Secret を適用し、clicklink-mtls Secret 内に秘密鍵を生成して CSR を書き出します。executor の cluster-wide access をコネクタのネームスペースに付与し、ClickHouse Cloud にクライアント証明書を署名させます。組み込みの Helm クライアント (helm バイナリは不要) で clicklink-connector Helm リリースをインストールし、ヘルスを検証します。無人実行の場合は、プロンプトに答える代わりにフラグを指定します。保存した bundle をエントリポイントとして使用するか、enrollment token を stdin の 1 行目として --enroll にパイプします:
support session を無効にするには、--operators の代わりに --no-gateway を渡します。この 2 つのフラグは同時に指定できません。
インストールの検証が完了すると、init は Managed mode is on というメッセージとともに、最初の service を準備するコマンドを表示します。service を作成するに進んでください。
4

成功を確認する

init は、成功を報告する前にインストール内容を検証します。Kubernetes では、エグゼキューターを含む有効化された各コンポーネントの /livez エンドポイントを最大 5 分間ポーリングします。サポートセッションゲートウェイが有効な場合は、ゲートウェイが未認証のプローブに対して 401 を返すことも必須となります。VM では、各デーモンの /livez を待機したうえで、プリフライトスイート一式を実行します。このスイートでは、config、ファイル、ポートの競合、ネットワーク到達性、ClickHouse への接続性、3 つのユニットすべての systemd ユニットの状態、コンポーネントごとのアクセス、ディスク、マスキングパターンをチェックします。Kubernetes で手動で確認するには、次を実行します。
すべてのコネクタのポッド、すなわち scraper、トラブルシューター、executor が Running かつ ready の状態である必要があります。VM 上で手動で確認するには、次のようにします。
すべてのチェックに合格した場合は 0、いずれかが失敗した場合は 2 を終了コードとして返し、失敗したチェックを出力します。
5

クリーンアップ

enrollment bundle である handoff.yaml (作業ディレクトリ内、mode 0600) により、インストール中の再実行や復旧を 2 つ目のトークンなしで進められます。このファイルにはコネクタの API secret が平文で格納されているため、インストールの検証が完了したら削除してください。
実行中のコネクタは認証情報のコピーを自身で保持します。アップグレードや設定変更でこのファイルが必要になることはありません。後から再度 init が必要になった場合は、アカウントチームに新しい登録トークンをリクエストし、init --enroll --force を実行してください。

エアギャップ環境とミラーインストール

環境からどこに到達できるかに応じて、2 つの独立した要素を帯域外で処理できます。executor には追加で必要なものはありません。他のコンポーネントと同じクライアント証明書と API 認証情報で認証を行います。cluster-wide の grant は、ネットワーク経由ではなく kubeconfig を通じて適用します。 バンドルの受け渡し。 オンラインでトークンを引き換えたくない場合は、account team がオンボーディング時に enrollment bundle を直接お渡しできます。その場合は --enroll の代わりに clicklink clctl init --handoff <bundle-file> を実行してください。--handoff が置き換えるのはトークンの引き換えのみです。証明書の署名は引き続き enrollment endpoint 経由で行われるため、--handoff を単独で使うのは、init を実行する場所からその endpoint に到達できる場合に限ってください。 帯域外での証明書署名。 init を実行する場所から enrollment endpoint に到達できない場合は、--no-auto-sign を追加します。init はすべてをステージングし、clicklink.csr を書き出します。この CSR を account team に送り、返送された証明書とチェーンを使ってインストールを完了してください。VM では sudo clicklink clctl init --signed-cert client.crt --chain ca-chain.crt を実行します。Kubernetes では clicklink clctl init --signed-cert client.crt --chain ca-chain.crt --target helm --target-namespace <connector-namespace> --values clicklink-values.yaml を実行します。ステージング実行では、同等の kubectl patch と helm upgrade --install の一連のコマンドが出力されます。外部に出るのは CSR のみで、秘密鍵が環境外に出ることはありません。 Kubernetes では、--chart は --chart-repo 経由で解決されるチャート名、oci:// 参照、直接の URL、ローカルのアーカイブまたはディレクトリを受け付けます。--chart-version はデフォルトで CLI 自身のバージョンとなるため、バイナリとチャートは常に同じバージョンで揃います。自身の registry からイメージを配信するには、コンテナーイメージをミラーし、values overlay で image.repository を設定してください。egress 経路がコネクタに対して private CA を提示する場合は、--api-private-ca を渡します。するとコネクタは、システムのルート証明書に加えて enrollment bundle に含まれる CA チェーンを用いてコネクタエンドポイントを検証します。 インストーラーはミラーからも動作します。リリースアーティファクトと install.sh を自身のミラーでホストし、CLICKLINK_MIRROR_URL でそこを指定してください。

手動でのダウンロードと検証

インストーラーをパイプで実行したくない場合は、リリースを自分で取得して検証してください。このスクリプトはプラットフォームとアーキテクチャを検出するため、macOS または Linux、amd64 または arm64 でそのまま実行できます。
展開する前に、cosign で署名を検証します。
ワークステーション上で (Kubernetes へのインストールの場合) 、tarball を展開し、バイナリをインストールします。
VM では、tarball を展開し、展開先のディレクトリで sudo ./install.sh を実行します。リリースアーティファクトの隣に配置すると、--host と同じホストインストールが実行されます。

失敗した場合

同じコマンドを再実行してください。init は冪等であり、再実行しても同じ状態に収束し、既存の設定とステージ済みのファイルはそのまま維持され、完了済みの作業はスキップされます。ステップが途中で失敗した場合、CLI が復旧コマンドをそのまま出力します。これらは繰り返し実行しても安全です。 登録が拒否された場合、そのトークンはすでに使用済みであるか、無効または期限切れです。使用済みトークンの場合は、クリーンアップのステップまで残る handoff.yaml を使い、--handoff handoff.yaml を指定して再実行してください。それ以外の場合は、アカウントチーム に新しいトークンを依頼してください。登録が通信エラーで失敗した場合は、同じコマンドを再実行してください。再実行が拒否された場合は、最初の試行でトークンが消費されているため、新しいトークンをリクエストしてください。 クラスターが EKS ではないために managed モードが拒否された場合は、--no-managed を指定して再実行し、executor なしでインストールしてください。VM 上では、current context が別のクラスターを指している kubeconfig も拒否されます。その場合は kubectl config use-context で context を切り替えてから再実行してください。 executor の 権限 を適用できない場合:
  • VM 上では、init は失敗しません。バンドルをステージしたうえで、cluster admin 権限を持つ kubeconfig から実行すべきコマンドを警告として出力します。検証用の preflight は executor の state をありのままに報告します。出力されたコマンドを実行し、同じ init コマンドを再実行して検証してください:
  • Kubernetes 上では、権限 が拒否されると chart のデプロイ前に init が停止します。executor は 権限を付与された ServiceAccount にバインドするため、それがないと起動できないからです。ステージングされた overlay、Secrets、CSR は保持され、init は cluster admin 権限を持つ host から実行すべき 2 つのコマンドを出力します。それらを実行したうえで、同じ init コマンドを再実行して続行してください:
--force は明示的なリセットであり、日常的な再試行では必要ありません。保持されている config や values overlay を上書きし、client key を再生成し、有効期限内のクライアント証明書も差し替えます (署名エンドポイントから 409 が返る場合は、すでに証明書が存在することを意味します) 。コネクタのクラスター UUID と managed モードの設定状態は保持されます。無人での再実行ではこの状態が維持され、端末上ではプロンプトのデフォルト値にもその状態が使われます (--managed または --no-managed を指定した場合を除く) 。認証情報のローテーションや証明書の差し替えを行う場合に --force を使用してください。再実行と復旧のモデル全体については operations を参照してください。