> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# GCP Private Service Connect для ClickPipes

> Установите защищённое соединение между ClickPipes и источником данных, размещённым в GCP, с помощью Private Service Connect (PSC).

export const Image = ({img, alt, size = "lg", background}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  const backgroundColor = background === "white" ? "white" : background === "black" ? "rgb(31 31 28)" : undefined;
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} style={{
    backgroundColor
  }} />
      </Frame>
    </div>;
};

Вы можете использовать GCP [Private Service Connect (PSC)](https://cloud.google.com/vpc/docs/private-service-connect), чтобы установить защищённое соединение между ClickPipes и источником данных, размещённым в GCP. ClickPipes создаёт **обратную частную конечную точку (RPE)** в своей VPC и связывает её с сервисом конечной точки, опубликованным для вашего источника данных, поэтому трафик никогда не передаётся через публичный интернет.

<Check>
  ClickPipes поддерживает **межрегиональную** связность PSC через [глобальный доступ](https://docs.cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access). Глобальный доступ требуется для конечных точек, расположенных в регионе, отличном от региона, в котором работает инфраструктура ClickPipes. Подробнее см. в [документации ClickPipes по регионам GCP](/ru/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips).
</Check>

<div id="supported-patterns">
  ## Поддерживаемые схемы
</div>

| Схема                           | Когда применяется                                                                                                                                              | Подключение сервиса GCP                                   |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| **Нативный PSC**                | Управляемые сервисы, автоматически публикующие подключение сервиса PSC (*например,* Google Cloud SQL, AlloyDB, Google Cloud Managed Service for Apache Kafka). | Автоматически создаётся при включении PSC для экземпляра. |
| **PSC, принадлежащий producer** | Источники данных, не публикующие подключение сервиса, например Postgres на Compute Engine или управляемый сервис, доступный только по частному IP-адресу.      | Создаётся и управляется вами.                             |

<div id="prerequisites">
  ## Предварительные требования
</div>

* Сервис ClickHouse Cloud, размещённый в GCP. ClickPipes работает в том же регионе, что и ваш сервис ClickHouse Cloud ([за некоторыми исключениями](/ru/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips)).
* Права IAM для включения PSC для вашего источника и управления подключениями сервиса GCP (`roles/compute.networkAdmin`).
* **Проект-потребитель ClickPipes**, которому разрешено подключаться к вашему подключению сервиса GCP (`clickpipes-production`).
* Если вы настраиваете ClickPipes программно: ключ API ClickHouse Cloud для организации, которой принадлежит сервис.

<div id="create-rpe">
  ## Создайте обратную частную конечную точку
</div>

Чтобы создать RPE, вам потребуется следующая информация об источнике данных:

* **URI подключения сервиса GCP**: `projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>` — конечная точка PSC, опубликованная перед источником данных.
* **имя private DNS**: имя хоста, к которому подключается ваш пайп. Конечной точке PSC назначается статический внутренний IP-адрес без привязанного DNS-имени, поэтому ClickPipes разрешает это имя хоста в этот IP-адрес.

<Tabs>
  <Tab title="Интерфейс ClickPipes">
    1. В ClickHouse Cloud откройте сервис и перейдите в **Источники данных** > **ClickPipes**.
    2. Выберите источник данных, из которого необходимо принимать данные.
    3. В разделе **Настройка подключения ClickPipe** включите **Использовать защищённое соединение**, затем нажмите **+ Обратная частная конечная точка** и выберите **Подключение сервиса GCP PSC**.
    4. Укажите **URI подключения сервиса GCP**, **имя private DNS** и **Описание**.
    5. Нажмите **Создать**. Конечная точка последовательно переходит из состояния `Provisioning` в `Ready`. (Нативный PSC автоматически принимает подключение, поэтому состояние `PendingAcceptance` не отображается.)
  </Tab>

  <Tab title="Terraform">
    Сопоставления пользовательского private DNS не являются атрибутом `clickhouse_clickpipes_reverse_private_endpoint`: ими управляет отдельный ресурс `clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns`, которому передаётся полный заменяющий список сопоставлений и который ссылается на конечную точку по ID:

    ```hcl theme={null}
    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>" }
      ]
    }
    ```
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    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>" }
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="custom-private-dns-rules">
  ### Пользовательские имена private DNS
</div>

Поскольку GCP PSC не передаёт записи DNS, для каждой конечной точки GCP PSC необходимо сопоставление пользовательского private DNS, чтобы ClickPipes мог разрешать его в статический внутренний IP-адрес конечной точки.

Применяются стандартные [правила именования пользовательского private DNS в ClickPipes](/ru/integrations/clickpipes/networking/aws-privatelink#custom-private-dns): поддержка подстановочных шаблонов, уникальность среди обратных частных конечных точек сервиса и ограничения для зарезервированных суффиксов одинаковы для всех провайдеров. Подстановочные шаблоны особенно полезны: например, одно сопоставление `*.<cluster>.<region>.managedkafka.<project>.cloud.goog` охватывает всех брокеров кластера Managed Kafka.

Для GCP PSC используется только значение `privateDnsName` сопоставления. Поле `internalDNSName` не поддерживается, поскольку конечная точка PSC предоставляет статический IP-адрес без DNS-имени, к которому можно привязаться: сопоставления всегда разрешаются в этот IP-адрес.

<div id="producer-owned">
  ## Подтверждение подключений для PSC, принадлежащего producer
</div>

Для PSC, принадлежащего producer, добавьте проект-потребитель ClickPipes (`clickpipes-production`) в список автоматического принятия подключения сервиса GCP, чтобы подключение принималось автоматически. Если этого не сделать, RPE останется в состоянии `PendingAcceptance`, пока вы не подтвердите его вручную.

Чтобы принять подключение, список потребителей подключения сервиса GCP должен содержать URI конечной точки с числовым ID (`projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID>`). Чтобы получить значение `endpointWithId` для ожидающего подключения к подключению сервиса GCP, выполните:

```bash theme={null}
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`:

<Danger>
  `--consumer-accept-list` перезаписывает список разрешённых подключений, а не добавляет в него новый проект-потребитель. Если подключение сервиса GCP уже разрешает доступ другим проектам или конечным точкам, передайте их все в той же команде, иначе неуказанные потеряют доступ.
</Danger>

```bash theme={null}
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
```

<Warning>
  Не используйте здесь `endpoint_id` из ответа ClickPipes API/Terraform: это *имя* правила перенаправления, а не числовой ID, необходимый GCP, поэтому он не будет соответствовать списку разрешённых подключений. Всегда берите числовой ID из ожидающего `endpointWithId` подключения сервиса GCP.
</Warning>

<div id="managing-rpes">
  ## Управление обратными частными конечными точками
</div>

Существующими обратными частными конечными точками можно управлять в настройках сервиса ClickHouse Cloud:

1. На боковой панели консоли ClickHouse Cloud перейдите в раздел `Settings`.

В разделе `ClickPipe reverse private endpoints` нажмите `Reverse private endpoints`.

Подробная информация об обратной частной конечной точке отображается в выдвижной панели. Здесь можно удалить RPE: нажмите `×` рядом с конечной точкой и подтвердите удаление. Удаление **необратимо** и нарушит работу всех ClickPipe, использующих эту конечную точку.

Чтобы изменить сопоставления пользовательского private DNS для конечной точки, используйте [Cloud API](/ru/integrations/clickpipes/programmatic-access/openapi) или [Terraform](/ru/integrations/clickpipes/programmatic-access/terraform). При обновлении заменяется весь список сопоставлений, а не добавляются новые.

Если для конечной точки отображается статус `Rejected` или `Failed`, прочитайте сообщение под статусом: оно позволяет отличить подключение, отклонённое producer, от подключения, которое было закрыто или требует внимания. В обоих случаях это обычно означает, что список разрешённых подключений подключения сервиса GCP не включает проект-потребитель ClickPipes. Чтобы увидеть статус конечной точки, сообщаемый GCP, опишите `connectedEndpoints` для подключения сервиса GCP.

<div id="limitations">
  ## Известные ограничения
</div>

* Подключение сервиса GCP PSC может быть закреплено только за одним сервисом ClickHouse Cloud одновременно; его нельзя использовать для нескольких сервисов. Чтобы перенести подключение сервиса GCP в другой сервис, [обратитесь в службу поддержки ClickHouse](https://clickhouse.com/support/program), чтобы снять существующее закрепление.
