Skip to content

ClickPipes 向け Terraform および OpenAPI の一般提供 (GA) を開始

marta paes moreira no background
2026年4月20日 · 10分で読む

TL;DR
Terraform と OpenAPI を使用して、ClickPipes リソースを「コードとして」プロビジョニングおよび管理できるようになりました。すべてのコネクタに対応し、使いやすさも向上しています。


ClickOps(ユーザーインターフェース上のボタンをクリックする操作)は、新しい製品を使い始める際には便利ですが、本番環境への移行が進むにつれて、より自動化されバージョン管理された方法でリソースを管理するアプローチ、すなわち「Infrastructure as Code」に移行するのが一般的です。

ClickHouse Cloud を開発するにあたり、私たちの目標の 1 つは API ファーストにすることです。ユーザーインターフェースから実行できるあらゆる操作は、既存のデプロイワークフローに組み込める(そしてエージェントからも活用できる 🤖)プログラムインターフェース経由でも利用できるようにすべきだと考えています。ClickHouse Cloud のフルマネージドデータ取り込みプラットフォームである ClickPipes も例外ではありません。

今すぐ始める

今すぐ ClickHouse Cloud にサインアップして、ClickPipes によるシームレスなデータ取り込みをお試しください。

サインアップ

本記事の公開に合わせて、Terraform における ClickPipes リソースおよび OpenAPI におけるエンドポイントの一般提供 (GA) を発表します!2025年にこれらのインターフェースのベータサポートを発表しましたが、一部の機能や使い勝手の面で不足があり、すべての ユーザーが ClickPipes をコードとして管理できる状態ではありませんでした。特にコネクターの対応範囲が完全ではありませんでしたが、今回のアップデートにより、CDC ClickPipes (Postgres、MySQL、MongoDB) もコードとして作成できるようになりました!

サポートされる内容

CDC ClickPipes のサポートに加えて、提供開始に合わせて両方のインターフェースに新しい ClickPipes コネクターと機能 (例: BigQuery および Azure Blob Storage コネクター、S3 および GCS の unordered モード) を追加しました。さらに、リバースプライベートエンドポイントの作成と管理のサポートなど、重要な機能の不足も解消しています。これにより、ClickPipes UI にあって OpenAPI や Terraform 経由で公開されていない機能はほとんどなくなりました。SSH トンネリングは例外ですが、現在対応を進めています!

現在、すべての操作が ClickHouse Terraform provider のリソースまたは OpenAPI エンドポイント に明確に対応しています:

アクションTerraformOpenAPI
一覧取得terraform state listGET /clickpipes
作成リソース追加 + terraform applyPOST /clickpipes
取得terraform show / refreshGET /clickpipes/{id}
更新設定変更 + terraform applyPATCH /clickpipes/{id}
停止stopped = true + terraform applyPATCH /clickpipes/{id}/state {"action": "stop"}
再開stopped = false + terraform applyPATCH /clickpipes/{id}/state {"action": "start"}
設定の更新settings ブロック更新 + terraform applyPUT /clickpipes/{id}/settings
スケールscaling ブロック更新 + terraform applyPATCH /clickpipes/{id}/scaling
再同期のトリガーtrigger_resync = true + terraform applyPATCH /clickpipes/{id}
削除terraform destroyDELETE /clickpipes/{id}

ClickPipe をゼロからプロビジョニングする場合は、手順: 新しい ClickPipe の設定 から始めてください。すでに稼働中のパイプラインがあり、それらをバージョン管理下に置きたい場合は、手順: 既存の ClickPipes のインポート を確認してください。

手順: 新しい ClickPipe の設定

Cloud API キーの作成

1. ClickHouse Terraform provider は ClickHouse Cloud サービスとの連携に Cloud API を使用するため、認証用に有効な API キーが必要です。このプロバイダーを初めて利用する場合は、まず新しい API キーを作成します。Organization > API keys > New API key に移動し、表示される Key ID と Key Secret のペアを控えておくか、ダウンロードします。

2. 次に、プロバイダーを設定します。認証情報をソース管理から除外するため、Terraform 変数 と、.gitignore に追加できる terraform.tfvars ファイルの使用を推奨します:

variables.tf

variable "organization_id" {
  description = "ClickHouse Cloud organization ID"
  type        = string
}

variable "service_id" {
  description = "ClickHouse Cloud service ID"
  type        = string
}

variable "token_key" {
  description = "ClickHouse Cloud API key ID"
  type        = string
  sensitive   = true
}

variable "token_secret" {
  description = "ClickHouse Cloud API key secret"
  type        = string
  sensitive   = true
}
...

terraform.tfvars

organization_id   = "" # your org ID from cloud.clickhouse.com
service_id        = "" # target ClickHouse service ID
token_key         = "" # API key ID
token_secret      = "" # API key secret
...

ClickPipes リソースの設定

この例では、Postgres データベースから ClickHouse へニアリアルタイムで継続的に変更を取り込むための Postgres CDC ClickPipe リソースを設定します。注意点として、CDC ClickPipe を作成する前に、データソースの設定ガイドに従って、アップストリームでのレプリケーションを有効にしておいてください。

1. ClickPipe を作成する準備ができたら、ソース属性に postgres を指定した新しい clickhouse_clickpipe リソース を Terraform 設定に追加します。以下は、単一の Postgres テーブル (public.firenibble) を同期し、source_table の新しい変更 (つまり 挿入、更新、削除) を cdc を使用して ClickHouse Cloud の target_table に反映する単一の ClickPipe を作成する基本的な設定例です。

main.tf

terraform {
 required_providers {
   clickhouse = {
     source  = "ClickHouse/clickhouse"
     version = ">= 3.14.0"
   }
 }
}

provider "clickhouse" {
 organization_id = var.organization_id
 token_key       = var.token_key
 token_secret    = var.token_secret
}

resource "clickhouse_clickpipe" "pg_pipe" {
 name       = "tf-postgres-clickpipe"
 service_id = var.service_id

 source = {
   postgres = {
     host     = var.postgres_host
     port     = 5432
     database = var.postgres_database

     credentials = {
       username = var.postgres_user
       password = var.postgres_password
     }

     settings = {
       replication_mode = "cdc"
     }

     table_mappings = [
       {
         source_schema_name = "public"
         source_table       = "firenibble"
         target_table       = "public_firenibble"
       }
     ]
   }
 }

 destination = {
   database = "default"
 }
}

2. Cloud API の認証情報とリソース設定を Terraform に渡したので、デプロイの準備が整いました。terraform init を実行して ClickHouse プロバイダーをインストールし、次に terraform apply を実行してパイプラインをプロビジョニングします。Terraform は実行計画を出力し、デプロイ前に計画された変更の確認を求めます:

terraform apply

...
Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

clickhouse_clickpipe.pg_pipe: Creating...
clickhouse_clickpipe.pg_pipe: Still creating... [00m10s elapsed]
clickhouse_clickpipe.pg_pipe: Creation complete after 11s [id=10128f88-100c-4830-b480-e242fa89570f]

以上で完了です!プログラムによって作成された最初の CDC ClickPipe が稼働しました。ClickHouse Cloud コンソールに移動し、(Data sources > ClickPipes の配下に) パイプラインが存在し、データ取り込みを順調に処理していることを確認してください。

さまざまなパイプタイプ、取り込みモード、ネットワーク構成に応じた Terraform での ClickPipes 設定例は、プロバイダーのリポジトリ で確認できます。

手順: 既存の ClickPipes のインポート

以下の手順は HashiCorp Terraform v1.5+ でテストされています。インポートのワークフローは代替実装 (OpenTofu など) とも広く互換性があるはずですが、最小バージョンや基本的な手法が異なる場合があります。

すでに ClickHouse Terraform provider を使用しているプロジェクトがある場合は、手動で設定する代わりに、既存の ClickPipes を Terraform state にインポートしてコードとして管理できます。

1. Cloud API を使用して、対象の組織およびサービスに存在する ClickPipes を取得します:

curl -s \
  "https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes" \
  -u "$KEY_ID:$KEY_SECRET" | jq -r '.result[] | "\(.id)\t\(.name)"'

1667855d-1646-4693-8cac-60e1c386ccb1    existing_pg_pipe
2e4c3974-025e-47a0-861b-4c200b6c0249    existing_mysql_pipe
76a42195-ef25-40fc-ae3d-31733d377f77    existing_mongo_pipe

2. 設定ファイルを編集し、Terraform にインポートしたい ClickPipes の import ブロックを追加します:

...
import {
  to = clickhouse_clickpipe.existing_pg_pipe
  id = "<service_id>:1667855d-1646-4693-8cac-60e1c386ccb1"
}
...

3. 既存のリソースから Terraform のリソース設定を生成します:

terraform plan -generate-config-out=generated.tf

generated.tf を確認し、Terraform が state から取得できない機密フィールド (認証情報など) を入力します。

# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.

# __generated__ by Terraform
resource "clickhouse_clickpipe" "pg_pipe" {
…
credentials    = {
username = var.postgres_user
password = var.postgres_password
}
…}

4. terraform plan を実行して予期しない差分がないことを確認し、terraform apply を実行して完了します。

注: Postgres CDC ClickPipes の場合、terraform apply を実行する前にリソース設定で stopped = true を設定する必要があります。Terraform はパイプを一時停止し、1 回のパスで認証情報を state に書き込みます。完了したら、stopped = false に設定して再度 apply を実行し、再開します。これは 既知の制限事項 です。

今後の展開

ClickPipes リソースは v3.14.0 以降の ClickHouse Terraform provider の安定版リリースで利用可能であり、OpenAPI エンドポイントもベータを終了しました (仕様書)。ClickPipes の進化に伴い、私たちは Terraform と OpenAPI を「完了の定義」の一部を成すファーストクラスのインターフェースとして扱い続けます。上記のような複雑な使い勝手に関する制限事項の解消に積極的に取り組んでいるほか、要望の多い SSH トンネリング 設定のサポートにも取り組んでいます!

Terraform や OpenAPI を使用した ClickPipes の設定および管理についてフィードバックがある場合や問題が発生した場合は、私たちのチームまでご連絡ください。間もなく、最近リリースされた ClickHouse CLI でも ClickPipes が利用できるようになります。数週間以内に詳細をお知らせします!

ClickPipes を今すぐ試す

ETL の複雑さを解消し、データ移動コストを削減しませんか?今すぐ ClickPipes を試して、世界最速の分析データベースである ClickHouse Cloud との完全マネージドなネイティブ統合を体験してください。

ClickPipes を試す

この記事をシェア

  • Y Combinator icon
  • X icon
  • Bluesky icon
  • Facebook icon
  • LinkedIn icon

Subscribe to our newsletter

Stay informed on feature releases, product roadmap, support, and cloud offerings!

Follow us

XBlueskySlackGithubTelegramMeetupRSS