Вы можете использовать GCP Private Service Connect (PSC), чтобы установить защищённое соединение между ClickPipes и источником данных, размещённым в GCP. ClickPipes создаёт обратную частную конечную точку (RPE) в своей VPC и связывает её с сервисом конечной точки, опубликованным для вашего источника данных, поэтому трафик никогда не передаётся через публичный интернет.
Поддерживаемые схемы
| Схема | Когда применяется | Подключение сервиса GCP |
|---|---|---|
| Нативный PSC | Управляемые сервисы, автоматически публикующие подключение сервиса PSC (например, Google Cloud SQL, AlloyDB, Google Cloud Managed Service for Apache Kafka). | Автоматически создаётся при включении PSC для экземпляра. |
| PSC, принадлежащий producer | Источники данных, не публикующие подключение сервиса, например Postgres на Compute Engine или управляемый сервис, доступный только по частному IP-адресу. | Создаётся и управляется вами. |
Предварительные требования
- Сервис ClickHouse Cloud, размещённый в GCP. ClickPipes работает в том же регионе, что и ваш сервис ClickHouse Cloud (за некоторыми исключениями).
- Права IAM для включения PSC для вашего источника и управления подключениями сервиса GCP (
roles/compute.networkAdmin). - Проект-потребитель ClickPipes, которому разрешено подключаться к вашему подключению сервиса GCP (
clickpipes-production). - Если вы настраиваете ClickPipes программно: ключ API ClickHouse Cloud для организации, которой принадлежит сервис.
Создайте обратную частную конечную точку
Чтобы создать RPE, вам потребуется следующая информация об источнике данных:
- URI подключения сервиса GCP:
projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>— конечная точка PSC, опубликованная перед источником данных. - имя private DNS: имя хоста, к которому подключается ваш пайп. Конечной точке PSC назначается статический внутренний IP-адрес без привязанного DNS-имени, поэтому ClickPipes разрешает это имя хоста в этот IP-адрес.
- В ClickHouse Cloud откройте сервис и перейдите в Источники данных > ClickPipes.
- Выберите источник данных, из которого необходимо принимать данные.
- В разделе Настройка подключения ClickPipe включите Использовать защищённое соединение, затем нажмите + Обратная частная конечная точка и выберите Подключение сервиса GCP PSC.
- Укажите URI подключения сервиса GCP, имя private DNS и Описание.
- Нажмите Создать. Конечная точка последовательно переходит из состояния
ProvisioningвReady. (Нативный PSC автоматически принимает подключение, поэтому состояниеPendingAcceptanceне отображается.)
Сопоставления пользовательского private DNS не являются атрибутом clickhouse_clickpipes_reverse_private_endpoint: ими управляет отдельный ресурс clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns, которому передаётся полный заменяющий список сопоставлений и который ссылается на конечную точку по ID:
resource "clickhouse_clickpipes_reverse_private_endpoint" "gcp_psc" {
service_id = var.clickhouse_service_id
description = "GCP PSC endpoint"
type = "GCP_PSC_SERVICE_ATTACHMENT"
gcp_service_attachment = "projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>"
}
resource "clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns" "gcp_psc" {
service_id = var.clickhouse_service_id
reverse_private_endpoint_id = clickhouse_clickpipes_reverse_private_endpoint.gcp_psc.id
mapping = [
{ private_dns_name = "<PRIVATE_DNS_NAME>" }
]
}curl --silent --user $KEY_ID:$KEY_SECRET \
-X POST -H "Content-Type: application/json" \
https://api.clickhouse.cloud/v1/organizations/<ORG_ID>/services/<SERVICE_ID>/clickpipesReversePrivateEndpoints \
-d '{
"type": "GCP_PSC_SERVICE_ATTACHMENT",
"description": "GCP PSC endpoint",
"gcpServiceAttachment": "projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>",
"customPrivateDnsMappings": [
{ "privateDnsName": "<PRIVATE_DNS_NAME>" }
]
}'Пользовательские имена private DNS
Поскольку GCP PSC не передаёт записи DNS, для каждой конечной точки GCP PSC необходимо сопоставление пользовательского private DNS, чтобы ClickPipes мог разрешать его в статический внутренний IP-адрес конечной точки.
Применяются стандартные правила именования пользовательского private DNS в ClickPipes: поддержка подстановочных шаблонов, уникальность среди обратных частных конечных точек сервиса и ограничения для зарезервированных суффиксов одинаковы для всех провайдеров. Подстановочные шаблоны особенно полезны: например, одно сопоставление *.<cluster>.<region>.managedkafka.<project>.cloud.goog охватывает всех брокеров кластера Managed Kafka.
Для GCP PSC используется только значение privateDnsName сопоставления. Поле internalDNSName не поддерживается, поскольку конечная точка PSC предоставляет статический IP-адрес без DNS-имени, к которому можно привязаться: сопоставления всегда разрешаются в этот IP-адрес.
Подтверждение подключений для PSC, принадлежащего producer
Для PSC, принадлежащего producer, добавьте проект-потребитель ClickPipes (clickpipes-production) в список автоматического принятия подключения сервиса GCP, чтобы подключение принималось автоматически. Если этого не сделать, RPE останется в состоянии PendingAcceptance, пока вы не подтвердите его вручную.
Чтобы принять подключение, список потребителей подключения сервиса GCP должен содержать URI конечной точки с числовым ID (projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID>). Чтобы получить значение endpointWithId для ожидающего подключения к подключению сервиса GCP, выполните:
gcloud beta compute service-attachments describe <SERVICE_ATTACHMENT_NAME> \
--region=<REGION> --project=<YOUR_PROJECT_ID> \
--format='json(connectedEndpoints)'Возьмите endpointWithId записи, у которой status имеет значение PENDING, удалите префикс https://www.googleapis.com/compute/beta/ и передайте результат в --consumer-accept-list:
gcloud beta compute service-attachments update <SERVICE_ATTACHMENT_NAME> \
--region=<REGION> --project=<YOUR_PROJECT_ID> \
--consumer-accept-list=projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID> \
--reconcile-connectionsУправление обратными частными конечными точками
Существующими обратными частными конечными точками можно управлять в настройках сервиса ClickHouse Cloud:
- На боковой панели консоли ClickHouse Cloud перейдите в раздел
Settings.
В разделе ClickPipe reverse private endpoints нажмите Reverse private endpoints.
Подробная информация об обратной частной конечной точке отображается в выдвижной панели. Здесь можно удалить RPE: нажмите × рядом с конечной точкой и подтвердите удаление. Удаление необратимо и нарушит работу всех ClickPipe, использующих эту конечную точку.
Чтобы изменить сопоставления пользовательского private DNS для конечной точки, используйте Cloud API или Terraform. При обновлении заменяется весь список сопоставлений, а не добавляются новые.
Если для конечной точки отображается статус Rejected или Failed, прочитайте сообщение под статусом: оно позволяет отличить подключение, отклонённое producer, от подключения, которое было закрыто или требует внимания. В обоих случаях это обычно означает, что список разрешённых подключений подключения сервиса GCP не включает проект-потребитель ClickPipes. Чтобы увидеть статус конечной точки, сообщаемый GCP, опишите connectedEndpoints для подключения сервиса GCP.
Известные ограничения
- Подключение сервиса GCP PSC может быть закреплено только за одним сервисом ClickHouse Cloud одновременно; его нельзя использовать для нескольких сервисов. Чтобы перенести подключение сервиса GCP в другой сервис, обратитесь в службу поддержки ClickHouse, чтобы снять существующее закрепление.