GCP PSC est disponible avec les offres Scale et Enterprise. Pour passer à une offre supérieure, consultez la page des offres dans la console Cloud.
Private Service Connect (PSC) est une fonctionnalité réseau de Google Cloud qui permet aux consommateurs d’accéder de manière privée à des services managés au sein de leur réseau VPC (Virtual Private Cloud). De même, elle permet aux producteurs de services managés d’héberger ces services dans leurs propres réseaux VPC distincts et d’offrir une connexion privée à leurs consommateurs.
Les producteurs de services publient leurs applications à destination des consommateurs en créant des services Private Service Connect. Les consommateurs de services accèdent directement à ces services Private Service Connect via l’un de ces types de connexion Private Service Connect.

Considérations importantes pour l’utilisation de Global Access avec Private Service Connect :
- Les régions utilisant Global Access doivent appartenir au même VPC.
- Global Access doit être explicitement activé au niveau du PSC (voir la capture d’écran ci-dessous).
- Assurez-vous que les règles de votre pare-feu ne bloquent pas l’accès à PSC depuis d’autres régions.
- Gardez à l’esprit que des frais de transfert de données inter-régions sur GCP peuvent s’appliquer.
La connectivité inter-régions n’est pas prise en charge. Les régions du producteur et du consommateur doivent être identiques. Cependant, vous pouvez vous connecter depuis d’autres régions au sein de votre VPC en activant Global Access au niveau de Private Service Connect (PSC).
Effectuez les étapes suivantes pour activer GCP PSC :
- Récupérez le service attachment GCP pour Private Service Connect.
- Créez un point de terminaison de service.
- Ajoutez l’« Endpoint ID » au service ClickHouse Cloud.
- Ajoutez l’« Endpoint ID » à la liste d’autorisation du service ClickHouse.
Attention
ClickHouse tente de regrouper vos services afin de réutiliser le même PSC endpoint publié dans la région GCP. Toutefois, ce regroupement n'est pas garanti, surtout si vos services sont répartis entre plusieurs organisations ClickHouse. Si PSC est déjà configuré pour d'autres services dans votre organisation ClickHouse, vous pourrez souvent ignorer la plupart des étapes grâce à ce regroupement et passer directement à l'étape finale : Ajouter l'"Endpoint ID" à la liste d'autorisation du service ClickHouse.
Vous trouverez des exemples Terraform ici.
Avant de commencer
Vous devrez récupérer des informations sur votre service ClickHouse Cloud. Vous pouvez le faire soit via la console ClickHouse Cloud, soit via la ClickHouse API. Si vous prévoyez d’utiliser la ClickHouse API, veuillez définir les variables d’environnement suivantes avant de continuer :
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>Vous pouvez créer une nouvelle clé API ClickHouse Cloud ou utiliser une clé existante.
Récupérez l’INSTANCE_ID de votre instance ClickHouse en filtrant par région, fournisseur et nom du service :
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)Obtenir le service attachment GCP et le nom DNS pour Private Service Connect
Option 1 : console ClickHouse Cloud
Dans la console ClickHouse Cloud, ouvrez le service que vous souhaitez connecter via Private Service Connect, puis ouvrez le menu Settings. Cliquez sur le bouton Set up private endpoint. Notez le Service name (endpointServiceId) et le DNS name (privateDnsHostname). Vous les utiliserez aux étapes suivantes.

Option 2 : API
Récupérez le service attachment GCP et le nom DNS pour 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"
}Prenez note de endpointServiceId et de privateDnsHostname. Vous les utiliserez dans les étapes suivantes.
Créer un point de terminaison de service
Dans cette section, vous allez créer un point de terminaison de service.
Ajout d’une Private Service Connection
Tout d’abord, vous allez créer une Private Service Connection.
Option 1 : Utiliser la console Google Cloud
Dans la console Google Cloud, accédez à Network services -> Private Service Connect.

Ouvrez la boîte de dialogue de création de Private Service Connect en cliquant sur le bouton Connect Endpoint.
- Target : utilisez Published service
- Target service : utilisez
endpointServiceIdAPI ouService nameconsole à l’étape Obtain GCP service attachment for Private Service Connect. - Endpoint name : définissez un nom pour l’Endpoint name PSC.
- Network/Subnetwork/IP address : choisissez le réseau à utiliser pour la connexion. Vous devrez créer une adresse IP ou utiliser une adresse existante pour le point de terminaison Private Service Connect. Dans notre exemple, nous avons créé au préalable une adresse nommée your-ip-address et lui avons attribué l’adresse IP
10.128.0.2. - Pour rendre le point de terminaison accessible depuis n’importe quelle région, vous pouvez cocher la case Enable global access.

Pour créer le point de terminaison PSC, utilisez le bouton ADD ENDPOINT.
La colonne Status passera de Pending à Accepted une fois la connexion approuvée.

Copiez PSC Connection ID ; vous l’utiliserez comme Endpoint ID dans les étapes suivantes.
Option 2 : utiliser 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" # See below in notes
}
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."
}Définir le nom DNS privé de l’endpoint
Vous devez faire pointer le « nom DNS », obtenu à l’étape Obtain GCP service attachment for Private Service Connect, vers l’adresse IP de l’endpoint GCP Private Service Connect. Cela garantit que les services/composants de votre VPC/réseau pourront le résoudre correctement.
Ajouter l’Endpoint ID à l’organisation ClickHouse Cloud
Option 1 : console ClickHouse Cloud
Pour ajouter un endpoint à votre organisation, passez à l’étape Ajouter "Endpoint ID" à la liste d’autorisation du service ClickHouse. L’ajout du PSC Connection ID à la liste d’autorisation du service via la console ClickHouse Cloud l’ajoute automatiquement à l’organisation.
Pour supprimer un endpoint, ouvrez Organization details -> Private Endpoints et cliquez sur le bouton de suppression pour retirer l’endpoint.

Option 2 : API
Définissez ces variables d’environnement avant d’exécuter des commandes :
Remplacez ENDPOINT_ID ci-dessous par la valeur indiquée dans Endpoint ID à l’étape Ajout d’une Private Service Connection.
Pour ajouter un endpoint, exécutez :
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"add": [
{
"cloudProvider": "gcp",
"id": "${ENDPOINT_ID:?}",
"description": "A GCP private endpoint",
"region": "${REGION:?}"
}
]
}
}
EOFPour supprimer un endpoint, exécutez :
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"remove": [
{
"cloudProvider": "gcp",
"id": "${ENDPOINT_ID:?}",
"region": "${REGION:?}"
}
]
}
}
EOFAjouter ou supprimer un Private Endpoint pour une organisation :
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.jsonAjouter « Endpoint ID » à la liste d’autorisation du service ClickHouse
Vous devez ajouter un Endpoint ID à la liste d’autorisation de chaque instance devant être accessible via Private Service Connect.
Option 1 : console ClickHouse Cloud
Dans la console ClickHouse Cloud, ouvrez le service que vous souhaitez connecter via Private Service Connect, puis accédez à Settings. Saisissez l’Endpoint ID récupéré lors de l’étape Ajout d’une Private Service Connection. Cliquez sur Create endpoint.

Option 2 : API
Définissez ces variables d’environnement avant d’exécuter la moindre commande :
Remplacez ENDPOINT_ID ci-dessous par la valeur de Endpoint ID indiquée à l’étape Ajout d’une Private Service Connection.
Exécutez cette opération pour chaque service devant être accessible via Private Service Connect.
Pour ajouter :
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"add": [
"${ENDPOINT_ID}"
]
}
}
EOFÀ supprimer :
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 | jqAccéder à l’instance à l’aide de Private Service Connect
Chaque service pour lequel Private Service Connect est activé dispose d’un point de terminaison public et d’un point de terminaison privé. Pour vous connecter à l’aide de Private Service Connect, vous devez utiliser le point de terminaison privé, c’est-à-dire le privateDnsHostname obtenu à l’étape Obtenir le service attachment GCP pour Private Service Connect.
Récupérer le nom d’hôte DNS privé
Option 1 : console ClickHouse Cloud
Dans la console ClickHouse Cloud, accédez à Settings. Cliquez sur le bouton Set up private endpoint. Dans le volet qui s’ouvre, copiez le DNS Name.

Option 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"
}Dans cet exemple, la connexion au nom d’hôte xxxxxxx.yy-xxxxN.p.gcp.clickhouse.cloud sera acheminée via Private Service Connect. En revanche, xxxxxxx.yy-xxxxN.gcp.clickhouse.cloud sera acheminé via Internet.
Dépannage
Tester la configuration DNS
DNS_NAME - Utilisez privateDnsHostname indiqué à l’étape Obtenir le service attachment GCP pour Private Service Connect
nslookup $DNS_NAMENon-authoritative answer:
...
Address: 10.128.0.2Connexion réinitialisée par l’hôte distant
- Il est très probable que l’Endpoint ID n’ait pas été ajouté à la liste d’autorisation du service. Revenez à l’étape Ajouter l’Endpoint ID à la liste d’autorisation des services.
Tester la connectivité
Si vous rencontrez des problèmes de connexion via un lien PSC, vérifiez la connectivité à l’aide de openssl. Assurez-vous que l’état du point de terminaison Private Service Connect est Accepted :
OpenSSL doit pouvoir se connecter (la sortie doit afficher CONNECTED). errno=104 est attendu.
DNS_NAME - Utilisez privateDnsHostname de l’étape Obtain GCP service attachment for 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)Vérification des filtres d’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"
]Connexion à une base de données distante
Selon la documentation GCP Private Service Connect :
Conception orientée service : les services producteurs sont publiés via des équilibreurs de charge qui exposent une adresse IP unique au réseau VPC consommateur. Le trafic du consommateur qui accède aux services producteurs est unidirectionnel et ne peut accéder qu'à l'adresse IP du service, plutôt qu'à l'ensemble d'un réseau VPC appairé.
Pour connecter les fonctions de table MySQL ou PostgreSQL dans ClickHouse Cloud à une base de données hébergée dans votre VPC GCP, configurez les règles de pare-feu de votre VPC GCP afin d'autoriser les connexions depuis ClickHouse Cloud. Consultez les adresses IP de sortie par défaut des régions ClickHouse Cloud, ainsi que les adresses IP statiques disponibles.
Informations complémentaires
Pour plus de détails, consultez cloud.google.com/vpc/docs/configure-private-service-connect-services.