Azure Private Link está disponible en los planes Scale y Enterprise. Para actualizar el plan, visita la página de planes en Cloud Console.
Esta guía muestra cómo usar Azure Private Link para proporcionar conectividad privada a través de una red virtual entre Azure (incluidos los servicios de clientes y de partners de Microsoft) y ClickHouse Cloud. Azure Private Link simplifica la arquitectura de red y protege la conexión entre los endpoints de Azure al eliminar la exposición de los datos a la Internet pública.

Azure admite conectividad entre regiones mediante Private Link. Esto le permite establecer conexiones entre VNets ubicadas en distintas regiones en las que tiene servicios de ClickHouse desplegados.
Complete los siguientes pasos para habilitar Azure Private Link:
- Obtenga el alias de conexión de Azure para Private Link
- Cree un Private Endpoint en Azure
- Agregue el Private Endpoint Resource ID a su organización de ClickHouse Cloud
- Agregue el Private Endpoint Resource ID a la lista de permitidos de sus servicios
- Acceda a su servicio de ClickHouse Cloud mediante Private Link
Atención
ClickHouse intenta agrupar sus servicios para reutilizar el mismo servicio de Private Link publicado en la región de Azure. Sin embargo, esta agrupación no está garantizada, especialmente si distribuye sus servicios entre varias organizaciones de ClickHouse. Si ya tiene Private Link configurado para otros servicios en su organización de ClickHouse, a menudo puede omitir la mayoría de los pasos gracias a esta agrupación y pasar directamente al último paso: Agregar el Private Endpoint Resource ID a la lista de permitidos de sus servicios.
Puede encontrar ejemplos de Terraform en el repositorio de Terraform Provider de ClickHouse.
Obtener el alias de conexión de Azure para Private Link
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, abra el servicio que quiera conectar mediante PrivateLink y, a continuación, abra el menú Settings. Haga clic en el botón Set up private endpoint. Tome nota de Service name y DNS name, ya que se usarán para configurar Private Link.

Tome nota de Service name y DNS name; los necesitará en los siguientes pasos.
Opción 2: API
Antes de empezar, necesitarás una clave de API de ClickHouse Cloud. Puedes crear una nueva clave o usar una existente.
Una vez que tengas tu clave de API, configura las siguientes variables de entorno antes de ejecutar cualquier comando:
REGION=<region code, use Azure format, for example: westus3>
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
SERVICE_NAME=<Your ClickHouse service name>Obtenga el INSTANCE_ID de ClickHouse filtrando por región, proveedor y 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)Obtén tu alias de conexión de Azure y el nombre de host de DNS privado para Private Link:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
{
"endpointServiceId": "production-westus3-0-0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.westus3.azure.privatelinkservice",
"privateDnsHostname": "xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud"
}Toma nota del endpointServiceId. Lo usarás en el paso siguiente.
Crear un Private Endpoint en Azure
En esta sección, vamos a crear un Private Endpoint en Azure. Puede usar Azure Portal o Terraform.
Opción 1: Usar Azure Portal para crear un Private Endpoint en Azure
En Azure Portal, abra Private Link Center → Private Endpoints.

Abra el cuadro de diálogo de creación de Private Endpoint haciendo clic en el botón Create.

En la siguiente pantalla, especifique las siguientes opciones:
- Subscription / Resource Group: Elija la suscripción de Azure y el grupo de recursos para el Private Endpoint.
- Name: Defina un nombre para el Private Endpoint.
- Region: Elija una región en la que esté desplegada la VNet que se conectará a ClickHouse Cloud mediante Private Link.
Después de completar los pasos anteriores, haga clic en el botón Next: Resource.

Seleccione la opción Connect to an Azure resource by resource ID or alias.
Para Resource ID or alias, use el endpointServiceId que obtuvo en el paso Obtain Azure connection alias for Private Link.
Haga clic en el botón Next: Virtual Network.

- Virtual network: Elija la VNet que desea conectar a ClickHouse Cloud mediante Private Link
- Subnet: Elija la subred en la que se creará el Private Endpoint
Opcional:
- Application security group: Puede asociar un ASG al Private Endpoint y usarlo en Network Security Groups para filtrar el tráfico de red hacia o desde el Private Endpoint.
Haga clic en el botón Next: DNS.

Haga clic en el botón Next: Tags.

Opcionalmente, puede asociar etiquetas a su Private Endpoint.
Haga clic en el botón Next: Review + create.

Por último, haga clic en el botón Create.

El Connection status del Private Endpoint creado estará en estado Pending. Cambiará al estado Approved una vez que agregue este Private Endpoint a la lista de permitidos del servicio.
Abra la interfaz de red asociada al Private Endpoint y copie la Private IPv4 address (10.0.0.4 en este ejemplo); necesitará esta información en los siguientes pasos.

Opción 2: Usar Terraform para crear un Private Endpoint en Azure
Use la siguiente plantilla para crear un Private Endpoint con Terraform:
resource "azurerm_private_endpoint" "example_clickhouse_cloud" {
name = var.pe_name
location = var.pe_location
resource_group_name = var.pe_resource_group_name
subnet_id = var.pe_subnet_id
private_service_connection {
name = "test-pl"
private_connection_resource_alias = "<data from 'Obtain Azure connection alias for Private Link' step>"
is_manual_connection = true
}
}Obtención del Private Endpoint Resource ID
Para usar Private Link, debes agregar el Resource ID de la conexión del Private Endpoint a la lista de permitidos de tu servicio.
El Private Endpoint Resource ID aparece en Azure Portal. Abre el Private Endpoint creado en el paso anterior y haz clic en JSON View:

Copia el campo id de nivel superior (el Resource ID del Private Endpoint, con el formato /subscriptions/.../providers/Microsoft.Network/privateEndpoints/<name>) — no uses los campos id anidados dentro del objeto properties:
Método preferido: usar Resource ID

Método heredado: usar resourceGUID
Aún puedes usar resourceGUID por compatibilidad con versiones anteriores. Busca el campo resourceGuid y copia este valor:

Configurar DNS para Private Link
Deberá crear una zona DNS privada (${location_code}.privatelink.azure.clickhouse.cloud) y vincularla a su VNet para acceder a los recursos a través de Private Link.
Crear una zona DNS privada
Opción 1: Usar Azure Portal
Sigue esta guía para crear una zona DNS privada de Azure mediante Azure Portal.
Opción 2: Usar Terraform
Usa la siguiente plantilla de Terraform para crear una zona DNS privada:
resource "azurerm_private_dns_zone" "clickhouse_cloud_private_link_zone" {
name = "${var.location}.privatelink.azure.clickhouse.cloud"
resource_group_name = var.resource_group_name
}Crear un registro DNS con comodín
Cree un registro con comodín y apúntelo a su Private Endpoint:
Opción 1: Usar Azure Portal
- Abra el grupo de recursos
MyAzureResourceGroupy seleccione la zona privada${region_code}.privatelink.azure.clickhouse.cloud. - Seleccione + Record set.
- En Name, escriba
*. - En IP Address, escriba la dirección IP que aparece para Private Endpoint.
- Seleccione OK.

Opción 2: Usar Terraform
Use la siguiente plantilla de Terraform para crear un registro DNS con comodín:
resource "azurerm_private_dns_a_record" "example" {
name = "*"
zone_name = var.zone_name
resource_group_name = var.resource_group_name
ttl = 300
records = ["10.0.0.4"]
}Crear un vínculo de red virtual
Para vincular la zona DNS privada a una red virtual, deberá crear un vínculo de red virtual.
Opción 1: Usar Azure Portal
Siga esta guía para vincular la red virtual a su zona DNS privada.
Opción 2: Usar Terraform
Debe hacer que "DNS name", obtenido en el paso Obtener el alias de conexión de Azure para Private Link, apunte a la dirección IP del Private Endpoint. Esto garantiza que los servicios/componentes dentro de su VPC/red puedan resolverlo correctamente.
Verifica la configuración de DNS
El dominio xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud debe apuntar a la IP del Private Endpoint (10.0.0.4 en este ejemplo).
nslookup xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud.
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud
Address: 10.0.0.4Añade el Private Endpoint Resource ID a tu organización de ClickHouse Cloud
Opción 1: consola de ClickHouse Cloud
Para agregar un endpoint a la organización, ve al paso Agregar el Private Endpoint Resource ID a la lista de permitidos de tus servicios. Al agregar el Private Endpoint Resource ID a la lista de permitidos de los servicios mediante la consola de ClickHouse Cloud, se añade automáticamente a la organización.
Para eliminar un endpoint, abre Organization details -> Private Endpoints y haz clic en el botón de eliminación para quitar el endpoint.

Opción 2: API
Configure las siguientes variables de entorno antes de ejecutar cualquier comando:
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
ENDPOINT_ID=<Private Endpoint Resource ID>
REGION=<region code, use Azure format>Establezca la variable de entorno ENDPOINT_ID con los datos del paso Obtención del ID de recurso del Private Endpoint.
Ejecute el siguiente comando para agregar el Private Endpoint:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"add": [
{
"cloudProvider": "azure",
"id": "${ENDPOINT_ID:?}",
"description": "Azure private endpoint",
"region": "${REGION:?}"
}
]
}
}
EOFTambién puedes ejecutar el siguiente comando para eliminar un Private Endpoint:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"remove": [
{
"cloudProvider": "azure",
"id": "${ENDPOINT_ID:?}",
"region": "${REGION:?}"
}
]
}
}
EOFDespués de agregar o quitar un Private Endpoint, ejecute el siguiente comando para aplicarlo en su 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ñade el Private Endpoint Resource ID a la lista de permitidos de tus servicios
De forma predeterminada, un servicio de ClickHouse Cloud no está disponible a través de una conexión de Private Link, incluso si dicha conexión de Private Link está aprobada y establecida. Debes añadir explícitamente el Private Endpoint Resource ID de cada servicio que deba estar disponible mediante Private Link.
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, abra el servicio que desea conectar mediante PrivateLink y, a continuación, vaya a Settings. Introduzca el Resource ID obtenido en el paso anterior.

Opción 2: API
Configura estas variables de entorno antes de ejecutar cualquier comando:
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
ENDPOINT_ID=<Private Endpoint Resource ID>
INSTANCE_ID=<Instance ID>Ejecútelo para cada servicio que deba estar disponible mediante Private Link.
Ejecute el siguiente comando para agregar el Private Endpoint a la lista de permitidos de los servicios:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"add": [
"${ENDPOINT_ID:?}"
]
}
}
EOFTambién puede ejecutar el siguiente comando para quitar un Private Endpoint de la lista de permitidos del servicio:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"remove": [
"${ENDPOINT_ID:?}"
]
}
}
EOFDespués de agregar o eliminar un Private Endpoint de la lista de permitidos de los servicios, ejecuta el siguiente comando para aplicar el cambio en tu organización:
curl --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 | jqAccede a tu servicio de ClickHouse Cloud mediante Private Link
Cada servicio con Private Link habilitado tiene un endpoint público y otro privado. Para conectarte mediante Private Link, debes usar un endpoint privado, que será privateDnsHostnameAPI o DNS nameconsole, obtenido en Obtener el alias de conexión de Azure para Private Link.
Obtener el hostname DNS privado
Opción 1: consola de ClickHouse Cloud
En la consola de ClickHouse Cloud, vaya a Settings. Haga clic en el botón Set up private endpoint. En el panel desplegable que se abre, copie el DNS Name.

Opción 2: API
Define las siguientes variables de entorno antes de ejecutar cualquier comando:
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
INSTANCE_ID=<Instance ID>Ejecute el siguiente comando:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .resultDeberías obtener una respuesta similar a la siguiente:
{
...
"privateDnsHostname": "xxxxxxx.<region code>.privatelink.azure.clickhouse.cloud"
}En este ejemplo, la conexión al hostname xxxxxxx.region_code.privatelink.azure.clickhouse.cloud se enrutará a través de Private Link. Mientras tanto, xxxxxxx.region_code.azure.clickhouse.cloud se enrutará por internet.
Usa privateDnsHostname para conectarte a tu servicio de ClickHouse Cloud mediante Private Link.
Solución de problemas
Comprobar la configuración de DNS
Ejecute el siguiente comando:
nslookup <dns name>donde "nombre DNS" es privateDnsHostnameAPI o Nombre DNSconsole de Obtener el alias de conexión de Azure para Private Link
Deberías obtener la siguiente respuesta:
Non-authoritative answer:
Name: <dns name>
Address: 10.0.0.4La conexión se restableció por el extremo remoto
Lo más probable es que no se haya añadido el Private Endpoint Resource ID a la lista de permitidos del servicio. Vuelve a revisar el paso Añadir el Private Endpoint Resource ID a la lista de permitidos de tus servicios.
Private Endpoint está en estado pendiente
Lo más probable es que no se haya agregado el Private Endpoint Resource ID a la lista de permitidos del servicio. Vuelve al paso Agregar el Private Endpoint Resource ID a la lista de permitidos de tus servicios.
Probar la conectividad
Si tiene problemas para conectarse mediante Private Link, compruebe la conectividad con openssl. Asegúrese de que el estado del endpoint de Private Link sea Accepted.
OpenSSL debería poder conectarse (debería aparecer CONNECTED en la salida). Se espera errno=104.
openssl s_client -connect abcd.westus3.privatelink.azure.clickhouse.cloud: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)Comprobar los filtros del Private Endpoint
Configure las siguientes variables de entorno antes de ejecutar cualquier comando:
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<ingrese el ID de organización de ClickHouse>
INSTANCE_ID=<Instance ID>Ejecute el siguiente comando para verificar los filtros de Private Endpoint:
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.privateEndpointIdsMás información
Para obtener más información sobre Azure Private Link, consulte azure.microsoft.com/en-us/products/private-link.