GCP PSC está disponible en los planes Scale y Enterprise. Para actualizar el plan, visita la página de planes en Cloud Console.
Private Service Connect (PSC) es una función de red de Google Cloud que permite a los consumidores acceder de forma privada a servicios gestionados dentro de su red de nube privada virtual (VPC). Del mismo modo, permite a los proveedores de servicios gestionados alojar estos servicios en sus propias redes VPC independientes y ofrecer una conexión privada a sus consumidores.
Los proveedores de servicios publican sus aplicaciones para los consumidores creando servicios de Private Service Connect. Los consumidores acceden a esos servicios de Private Service Connect directamente a través de uno de estos tipos de Private Service Connect.

Consideraciones importantes para usar Global Access de Private Service Connect:
- Las regiones que usan Global Access deben pertenecer a la misma VPC.
- Global Access debe habilitarse explícitamente en el nivel de PSC (consulte la captura de pantalla a continuación).
- Asegúrese de que la configuración del firewall no bloquee el acceso a PSC desde otras regiones.
- Tenga en cuenta que pueden aplicarse cargos por transferencia de datos entre regiones de GCP.
No se admite la conectividad entre regiones. Las regiones del productor y del consumidor deben ser las mismas. Sin embargo, puede conectarse desde otras regiones dentro de su VPC habilitando Global Access en el nivel de Private Service Connect (PSC).
Complete los siguientes pasos para habilitar GCP PSC:
- Obtenga el service attachment de GCP para Private Service Connect.
- Cree un endpoint de servicio.
- Añada el "Endpoint ID" al servicio de ClickHouse Cloud.
- Añada el "Endpoint ID" a la lista de permitidos del servicio de ClickHouse.
Atención
ClickHouse intenta agrupar sus servicios para reutilizar el mismo endpoint de PSC publicado en la región de GCP. Sin embargo, esta agrupación no está garantizada, especialmente si distribuye sus servicios entre varias organizaciones de ClickHouse. Si ya tiene PSC configurado para otros servicios en su organización de ClickHouse, a menudo puede omitir la mayoría de los pasos gracias a esa agrupación y continuar directamente con el paso final: Agregar "Endpoint ID" a la lista de permitidos del servicio de ClickHouse.
Puede encontrar ejemplos de Terraform aquí.
Antes de empezar
Deberá obtener información sobre su servicio de ClickHouse Cloud. Puede hacerlo a través de la consola de ClickHouse Cloud o de la ClickHouse API. Si va a usar la ClickHouse API, configure las siguientes variables de entorno antes de continuar:
REGION=<Your region code using the GCP format, for example: us-central1>
PROVIDER=gcp
KEY_ID=<Your ClickHouse key ID>
KEY_SECRET=<Your ClickHouse key secret>
ORG_ID=<Your ClickHouse organization ID>
SERVICE_NAME=<Your ClickHouse service name>Puede crear una nueva clave de la API de ClickHouse Cloud o usar una existente.
Obtenga su INSTANCE_ID de ClickHouse filtrando por la región, el proveedor y el nombre del servicio:
INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)Obtenga el service attachment de GCP y el nombre DNS de Private Service Connect
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, abra el servicio al que desea conectarse mediante Private Service Connect y, a continuación, abra el menú Settings. Haga clic en el botón Set up private endpoint. Tome nota del Service name (endpointServiceId) y del DNS name (privateDnsHostname). Los usará en los siguientes pasos.

Opción 2: API
Obtenga el service attachment de GCP y el nombre DNS de Private Service Connect:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
{
"endpointServiceId": "projects/.../regions/us-central1/serviceAttachments/production-us-central1-clickhouse-cloud",
"privateDnsHostname": "xxxxxxxxxx.us-central1.p.gcp.clickhouse.cloud"
}Toma nota de endpointServiceId y privateDnsHostname. Los usarás en los pasos siguientes.
Crear endpoint de servicio
En esta sección, creará un endpoint de servicio.
Agregar una conexión de servicio privada
Primero, crearás una conexión de servicio privada.
Opción 1: Uso de Google Cloud Console
En Google Cloud Console, vaya a Network services -> Private Service Connect.

Abra el cuadro de diálogo de creación de Private Service Connect haciendo clic en el botón Connect Endpoint.
- Target: use Published service
- Target service: use
endpointServiceIdAPI oService nameconsole del paso Obtain GCP service attachment for Private Service Connect. - Endpoint name: defina un nombre para el Endpoint name de PSC.
- Network/Subnetwork/IP address: elija la red que desea usar para la conexión. Tendrá que crear una dirección IP o usar una existente para el endpoint de Private Service Connect. En nuestro ejemplo, creamos previamente una dirección con el nombre your-ip-address y le asignamos la dirección IP
10.128.0.2. - Para que el endpoint esté disponible desde cualquier región, puede activar la casilla Enable global access.

Para crear el endpoint de PSC, use el botón ADD ENDPOINT.
La columna Status cambiará de Pending a Accepted una vez que se apruebe la conexión.

Copie PSC Connection ID; lo usará como Endpoint ID en los siguientes pasos.
Opción 2: Usar Terraform
provider "google" {
project = "my-gcp-project"
region = "us-central1"
}
variable "region" {
type = string
default = "us-central1"
}
variable "subnetwork" {
type = string
default = "https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/us-central1/subnetworks/default"
}
variable "network" {
type = string
default = "https://www.googleapis.com/compute/v1/projects/my-gcp-project/global/networks/default"
}
resource "google_compute_address" "psc_endpoint_ip" {
address = "10.128.0.2"
address_type = "INTERNAL"
name = "your-ip-address"
purpose = "GCE_ENDPOINT"
region = var.region
subnetwork = var.subnetwork
}
resource "google_compute_forwarding_rule" "clickhouse_cloud_psc" {
ip_address = google_compute_address.psc_endpoint_ip.self_link
name = "ch-cloud-${var.region}"
network = var.network
region = var.region
load_balancing_scheme = ""
# service attachment
target = "https://www.googleapis.com/compute/v1/$TARGET" # Ver las notas más abajo
}
output "psc_connection_id" {
value = google_compute_forwarding_rule.clickhouse_cloud_psc.psc_connection_id
description = "Add GCP PSC Connection ID to allow list on instance level."
}Configurar el nombre DNS privado para el endpoint
Debe hacer que el "nombre DNS", obtenido en el paso Obtener el service attachment de GCP para Private Service Connect, apunte a la dirección IP del endpoint de GCP Private Service Connect. Esto garantiza que los servicios/componentes de su VPC/red puedan resolverlo correctamente.
Añadir el Endpoint ID a la organización de ClickHouse Cloud
Opción 1: consola de ClickHouse Cloud
Para añadir un endpoint a su organización, vaya al paso Agregar "Endpoint ID" a la lista de permitidos del servicio de ClickHouse. Al añadir el PSC Connection ID a la lista de permitidos del servicio mediante la consola de ClickHouse Cloud, se agrega automáticamente a la organización.
Para eliminar un endpoint, abra Organization details -> Private Endpoints y haga clic en el botón Eliminar para quitar el endpoint.

Opción 2: API
Configura estas variables de entorno antes de ejecutar cualquier comando:
Sustituye ENDPOINT_ID a continuación por el valor de Endpoint ID del paso Adding a Private Service Connection.
Para agregar un endpoint, ejecuta:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"add": [
{
"cloudProvider": "gcp",
"id": "${ENDPOINT_ID:?}",
"description": "A GCP private endpoint",
"region": "${REGION:?}"
}
]
}
}
EOFPara eliminar un endpoint, ejecute:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"remove": [
{
"cloudProvider": "gcp",
"id": "${ENDPOINT_ID:?}",
"region": "${REGION:?}"
}
]
}
}
EOFAgregar/quitar un Private Endpoint para una organización:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X PATCH -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}" -d @pl_config_org.jsonAñada el "Endpoint ID" a la lista de permitidos del servicio de ClickHouse
Debe añadir un Endpoint ID a la lista de permitidos de cada instancia que deba estar disponible mediante Private Service Connect.
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, abra el servicio que desea conectar mediante Private Service Connect y, a continuación, vaya a Settings. Introduzca el Endpoint ID obtenido en el paso Adding a conexión de servicio privada. Haga clic en Create endpoint.

Opción 2: API
Establece estas variables de entorno antes de ejecutar cualquier comando:
Reemplaza ENDPOINT_ID a continuación por el valor de Endpoint ID del paso Adding a Private Service Connection.
Ejecútalo para cada servicio que deba estar disponible mediante Private Service Connect.
Para agregar:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"add": [
"${ENDPOINT_ID}"
]
}
}
EOFPara eliminar:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"remove": [
"${ENDPOINT_ID}"
]
}
}
EOFcurl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X PATCH -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" -d @pl_config.json | jqAcceso a una instancia mediante Private Service Connect
Cada servicio con Private Service Connect habilitado tiene un endpoint público y otro privado. Para conectarse mediante Private Service Connect, debe usar el endpoint privado, que es el privateDnsHostname del paso Obtener el service attachment de GCP para Private Service Connect.
Obtener el nombre de host DNS privado
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, ve a Settings. Haz clic en el botón Set up private endpoint. En el panel lateral que se abre, copia el Nombre DNS.

Opción 2: API
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result{
...
"privateDnsHostname": "xxxxxxx.<region code>.p.gcp.clickhouse.cloud"
}En este ejemplo, la conexión al hostname xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud se dirigirá a Private Service Connect. Mientras tanto, xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud se dirigirá a través de internet.
Resolución de problemas
Probar la configuración de DNS
DNS_NAME - Usa privateDnsHostname del paso Obtener el service attachment de GCP y el nombre DNS para Private Service Connect
nslookup $DNS_NAMENon-authoritative answer:
...
Address: 10.128.0.2Conexión reiniciada por el host remoto
- Lo más probable es que no se haya añadido el Endpoint ID a la lista de permitidos del servicio. Vuelve a revisar el paso Añadir el Endpoint ID a la lista de permitidos de los servicios.
Comprobar la conectividad
Si tiene problemas para conectarse mediante un enlace de PSC, verifique la conectividad con openssl. Asegúrese de que el estado del endpoint de Private Service Connect sea Accepted:
OpenSSL debería poder conectarse (debería aparecer CONNECTED en la salida). Se espera errno=104.
DNS_NAME - Use privateDnsHostname del paso Obtener el service attachment de GCP para Private Service Connect
openssl s_client -connect ${DNS_NAME}:9440CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 335 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)Comprobación de los filtros del endpoint
API REST
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X GET -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | jq .result.privateEndpointIds
[
"102600141743718403"
]Conexión a una base de datos remota
Según la documentación de GCP Private Service Connect:
Diseño orientado a servicios: los servicios del productor se publican a través de equilibradores de carga que exponen una única dirección IP a la red VPC del consumidor. El tráfico del consumidor que accede a los servicios del productor es unidireccional y solo puede acceder a la dirección IP del servicio, en lugar de tener acceso a toda la red VPC conectada mediante peering.
Para conectar las funciones de tabla MySQL o PostgreSQL en ClickHouse Cloud a una base de datos alojada en tu VPC de GCP, configura las reglas de firewall de tu VPC de GCP para permitir conexiones desde ClickHouse Cloud. Consulta las direcciones IP de salida predeterminadas de las regiones de ClickHouse Cloud, junto con las direcciones IP estáticas disponibles.
Más información
Para obtener información más detallada, visite cloud.google.com/vpc/docs/configure-private-service-connect-services.