Private Service Connect
GCP PSC is available in the Scale and Enterprise plans. To upgrade, visit the plans page in the cloud console.
Private Service Connect (PSC) — это сетевая возможность Google Cloud, которая позволяет потребителям приватно получать доступ к управляемым сервисам внутри их виртуальной частной облачной сети (VPC). Аналогично, она позволяет поставщикам управляемых сервисов размещать эти сервисы в отдельных VPC-сетях и предоставлять своим потребителям приватное подключение.
Поставщики сервисов публикуют свои приложения для потребителей, создавая сервисы Private Service Connect. Потребители сервисов получают доступ к этим сервисам Private Service Connect напрямую через один из типов подключений Private Service Connect.

По умолчанию сервис ClickHouse недоступен через подключение Private Service Connect, даже если PSC-подключение одобрено и установлено; необходимо явно добавить идентификатор PSC в список разрешённых подключений на уровне инстанса, выполнив шаг ниже.
Важные замечания по использованию Private Service Connect Global Access:
- Регионы, использующие Global Access, должны принадлежать одной и той же VPC.
- Global Access необходимо явно включить на уровне PSC (см. скриншот ниже).
- Убедитесь, что настройки межсетевого экрана не блокируют доступ к PSC из других регионов.
- Имейте в виду, что у вас могут возникнуть расходы на межрегиональную передачу данных GCP.
Межрегиональные подключения не поддерживаются. Регионы поставщика и потребителя должны совпадать. Однако вы можете подключаться из других регионов внутри вашей VPC, включив Global Access на уровне Private Service Connect (PSC).
Выполните следующие действия, чтобы включить GCP PSC:
- Получите ресурс service attachment в GCP для Private Service Connect.
- Создайте endpoint сервиса (service endpoint).
- Добавьте идентификатор конечной точки (Endpoint ID) в сервис ClickHouse Cloud.
- Добавьте идентификатор конечной точки (Endpoint ID) в список разрешённых подключений (allow list) сервиса ClickHouse.
Внимание
ClickHouse пытается группировать ваши сервисы, чтобы повторно использовать один и тот же опубликованный PSC endpoint в пределах региона GCP. Однако такая группировка не гарантируется, особенно если вы распределяете свои сервисы между несколькими организациями ClickHouse. Если у вас уже настроен PSC для других сервисов в вашей организации ClickHouse, вы часто можете пропустить большинство шагов благодаря этой группировке и перейти непосредственно к заключительному шагу: добавить «Endpoint ID» в список разрешённых сервисов ClickHouse.
Примеры Terraform доступны здесь.
Прежде чем начать
Примеры кода ниже демонстрируют, как настроить Private Service Connect в сервисе ClickHouse Cloud. В наших примерах мы будем использовать:
- регион GCP:
us-central1 - проект GCP (проект GCP клиента):
my-gcp-project - приватный IP-адрес GCP в проекте GCP клиента:
10.128.0.2 - VPC GCP в проекте GCP клиента:
default
Вам потребуется получить сведения о своем сервисе ClickHouse Cloud. Это можно сделать либо через консоль ClickHouse Cloud, либо через ClickHouse API. Если вы собираетесь использовать ClickHouse API, перед продолжением установите следующие переменные среды:
Вы можете создать новый API-ключ ClickHouse Cloud или использовать уже существующий.
Получите свой INSTANCE_ID ClickHouse, отфильтровав по региону, провайдеру и имени сервиса:
- Вы можете получить ID организации (Organization ID) в консоли ClickHouse (Organization -> Organization Details).
- Вы можете создать новый ключ или использовать уже существующий.
Получите подключение сервиса GCP (service attachment) и имя DNS для Private Service Connect
Вариант 1: консоль ClickHouse Cloud
В консоли ClickHouse Cloud откройте сервис, к которому вы хотите подключиться через Private Service Connect, затем откройте меню Settings. Нажмите кнопку Set up private endpoint. Запишите значения Service name (endpointServiceId) и DNS name (privateDnsHostname). Вы будете использовать их в последующих шагах.

Вариант 2: API
Для выполнения этого шага в регионе должен быть развернут как минимум один инстанс.
Получите подключение сервиса GCP (service attachment) и имя DNS для Private Service Connect:
Запомните значения endpointServiceId и privateDnsHostname. Они понадобятся на следующих шагах.
Создание конечной точки сервиса
В этом разделе рассматриваются специфичные для ClickHouse детали настройки ClickHouse через GCP PSC (Private Service Connect). Шаги, связанные с GCP, приведены в качестве справочной информации, чтобы указать, где искать нужные настройки, но со временем они могут меняться без уведомления со стороны облачного провайдера GCP. Пожалуйста, настраивайте GCP в соответствии с вашим конкретным сценарием использования.
Обратите внимание, что ClickHouse не несет ответственности за настройку необходимых конечных точек GCP PSC и DNS-записей.
По любым вопросам, связанным с задачами по настройке GCP, обращайтесь непосредственно в службу поддержки GCP.
В этом разделе мы создадим конечную точку сервиса.
Добавление частного сервисного подключения
Сначала мы создадим Private Service Connection.
Вариант 1: Использование консоли Google Cloud
В консоли Google Cloud перейдите в Network services -> Private Service Connect.

Откройте диалог создания Private Service Connect, нажав кнопку Connect Endpoint.
- Target: используйте Published service
- Target service: используйте
endpointServiceIdAPI илиService nameconsole из шага Obtain GCP service attachment for Private Service Connect. - Endpoint name: задайте имя для Endpoint name PSC.
- Network/Subnetwork/IP address: выберите сеть, которую вы хотите использовать для подключения. Вам нужно создать IP-адрес или использовать существующий для конечной точки Private Service Connect. В нашем примере мы предварительно создали адрес с именем your-ip-address и назначенным IP-адресом
10.128.0.2. - Чтобы сделать конечную точку доступной из любого региона, вы можете включить флажок Enable global access.

Чтобы создать конечную точку PSC, используйте кнопку ADD ENDPOINT.
Столбец Status изменится с Pending на Accepted, как только подключение будет одобрено.

Скопируйте PSC Connection ID — мы будем использовать его как Endpoint ID на следующих шагах.
Вариант 2: Использование Terraform
используйте значение endpointServiceIdAPI или Service nameconsole из шага Obtain GCP service attachment for Private Service Connect
Задайте приватное DNS-имя для конечной точки
Существует несколько способов настройки DNS. Настройте DNS в соответствии с вашим конкретным сценарием использования.
Необходимо указать DNS-имя, полученное на шаге Obtain GCP service attachment for Private Service Connect, на IP-адрес конечной точки GCP Private Service Connect. Это гарантирует, что сервисы и компоненты внутри вашей VPC/сети смогут корректно разрешать это имя.
Добавление Endpoint ID в организацию ClickHouse Cloud
Вариант 1: консоль ClickHouse Cloud
Чтобы добавить endpoint в вашу организацию, перейдите к шагу Добавление «Endpoint ID» в список разрешённых сервисов ClickHouse. Добавление PSC Connection ID в список разрешённых сервисов через консоль ClickHouse Cloud автоматически добавляет его в организацию.
Чтобы удалить endpoint, откройте Organization details → Private Endpoints и нажмите кнопку удаления, чтобы удалить endpoint.

Вариант 2: API
Перед выполнением каких-либо команд задайте следующие переменные окружения:
Замените ENDPOINT_ID ниже значением из Endpoint ID на шаге Добавление Private Service Connection.
Чтобы добавить endpoint, выполните:
Чтобы удалить конечную точку, выполните:
Добавление и удаление частной конечной точки для организации:
Добавить «Endpoint ID» в список разрешённых для сервиса ClickHouse
Необходимо добавить Endpoint ID в список разрешённых для каждого экземпляра сервиса, который должен быть доступен через Private Service Connect.
Вариант 1: консоль ClickHouse Cloud
В консоли ClickHouse Cloud откройте сервис, который вы хотите подключить через Private Service Connect, затем перейдите в Settings. Введите Endpoint ID, полученный на шаге Adding a Private Service Connection. Нажмите Create endpoint.
Если вы хотите разрешить доступ из уже существующего соединения Private Service Connect, выберите существующий endpoint в выпадающем меню.

Вариант 2: API
Перед выполнением любых команд задайте следующие переменные окружения:
Замените ENDPOINT_ID ниже на значение поля Endpoint ID со шага Adding a Private Service Connection.
Выполните это для каждого сервиса, который должен быть доступен через Private Service Connect.
Чтобы добавить:
Чтобы удалить:
Доступ к экземпляру с использованием Private Service Connect
Каждый сервис с включённым Private Link имеет две конечные точки: публичную и приватную. Для подключения по Private Link необходимо использовать приватную конечную точку privateDnsHostname, значение которой берётся из раздела Obtain GCP service attachment for Private Service Connect.
Получение приватного DNS-имени хоста
Вариант 1: консоль ClickHouse Cloud
В консоли ClickHouse Cloud перейдите в раздел Settings. Нажмите кнопку Set up private endpoint. В открывшейся панели скопируйте значение DNS Name.

Вариант 2: API
В этом примере подключение к хосту xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud будет выполняться через Private Service Connect, тогда как xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud будет использовать соединение через интернет.
Устранение неполадок
Проверка конфигурации DNS
DNS_NAME — используйте значение privateDnsHostname из шага Получение service attachment GCP для Private Service Connect
Сброс соединения удалённой стороной (Connection reset by peer)
- Скорее всего, Endpoint ID не был добавлен в список разрешённых сервисов (allow-list). Повторно выполните шаг Add endpoint ID to services allow-list.
Проверка подключения
Если у вас возникают проблемы с подключением через PSC-ссылку, проверьте подключение с помощью openssl. Убедитесь, что статус конечной точки Private Service Connect — Accepted:
OpenSSL должен суметь подключиться (см. CONNECTED в выводе команды). errno=104 является ожидаемым.
DNS_NAME — используйте privateDnsHostname из шага Obtain GCP service attachment for Private Service Connect.
Проверка фильтров конечных точек
REST API
Подключение к удалённой базе данных
Предположим, вы пытаетесь использовать табличные функции MySQL или PostgreSQL в ClickHouse Cloud и подключиться к базе данных, размещённой в GCP. GCP PSC не может быть использован для безопасной организации такого подключения. PSC — это однонаправленное соединение. Оно позволяет вашей внутренней сети или GCP VPC безопасно подключаться к ClickHouse Cloud, но не позволяет ClickHouse Cloud подключаться к вашей внутренней сети.
Согласно документации GCP Private Service Connect:
Сервис-ориентированная архитектура: сервисы-поставщики публикуются через балансировщики нагрузки, которые предоставляют один IP-адрес для потребительской VPC-сети. Трафик потребителя, обращающийся к сервисам-поставщикам, является однонаправленным и может получать доступ только к IP-адресу сервиса, а не ко всей пиринговой VPC-сети.
Чтобы настроить такое подключение, задайте правила межсетевого экрана (firewall) в вашем GCP VPC так, чтобы разрешить подключения из ClickHouse Cloud к вашему внутреннему/приватному сервису базы данных. Ознакомьтесь со стандартными исходящими (egress) IP-адресами для регионов ClickHouse Cloud, а также с доступными статическими IP-адресами.
Дополнительная информация
Для получения более подробной информации см. cloud.google.com/vpc/docs/configure-private-service-connect-services.