> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Establece una conexión segura entre ClickPipes y una fuente de datos alojada en GCP mediante Private Service Connect (PSC).

# GCP Private Service Connect para ClickPipes

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

Puede usar [Private Service Connect (PSC)](https://cloud.google.com/vpc/docs/private-service-connect) de GCP para establecer una conexión segura entre ClickPipes y una fuente de datos alojada en GCP. ClickPipes crea un **endpoint privado inverso (RPE)** en su VPC y lo vincula a un servicio de endpoint privado publicado para su fuente de datos, de modo que el tráfico nunca queda expuesto a Internet público.

<Note>
  La conectividad de GCP PSC solo está disponible cuando el servicio de ClickPipes se despliega en GCP. Consulte la [lista de regiones de GCP en las que se aloja ClickPipes](/docs/es/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips) antes de comenzar.
</Note>

<div id="supported-patterns">
  ## Patrones compatibles
</div>

| Patrón                              | Cuándo se aplica                                                                                                                                            | Adjunto de servicio                                       |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| **PSC nativo**                      | Servicios administrados que publican automáticamente un adjunto de servicio de PSC, como AlloyDB.                                                           | Se crea automáticamente al habilitar PSC en la instancia. |
| **PSC gestionado por el productor** | Fuentes de datos que no publican un adjunto de servicio, como Postgres en Compute Engine o un servicio administrado accesible solo mediante una IP privada. | Lo creas y administras tú.                                |

<div id="prerequisites">
  ## Requisitos previos
</div>

* Un servicio de ClickHouse Cloud alojado en GCP, en una [región donde esté disponible ClickPipes](/docs/es/integrations/clickpipes/networking/static-ips#google-cloud-static-nat-ips).
* Permisos de IAM para habilitar PSC en el origen y administrar los adjuntos de servicio de PSC (`roles/compute.networkAdmin`).
* El **proyecto consumidor de ClickPipes** autorizado para conectarse al adjunto de servicio. Para ClickPipes en producción, es `clickpipes-production`.
* La clave API y el secreto de ClickHouse Cloud de la organización propietaria del servicio (solo se requieren si se aprovisiona mediante Terraform o la API).

<div id="create-rpe">
  ## Cree el endpoint privado inverso
</div>

Para crear un RPE, necesita la siguiente información sobre su fuente de datos:

* **URI del adjunto de servicio**: `projects/<PROJECT>/regions/<REGION>/serviceAttachments/<NAME>`, el
  endpoint de PSC publicado delante de su fuente de datos.
* **Nombre de DNS privado**: el nombre de host al que se conecta su pipe. Un endpoint de PSC recibe una IP interna estática
  sin un nombre de DNS asociado, por lo que ClickPipes resuelve este nombre de host a esa IP por usted.

<Tabs>
  <Tab title="UI de ClickPipes">
    1. En ClickHouse Cloud, abra su servicio y vaya a **Fuentes de datos** > **ClickPipes**.
    2. Seleccione la fuente de datos desde la que desea ingerir datos.
    3. En **Configure su conexión de ClickPipe**, active **Usar conexión segura** y, a continuación, haga clic en **+ Endpoint privado inverso** y seleccione **Adjunto de servicio de GCP PSC**.
    4. Rellene la **URI del adjunto de servicio**, el **Nombre de DNS privado** y una **Descripción**.
    5. Haga clic en **Crear**. El endpoint pasa por los estados `Provisioning` → `Ready`. (El PSC nativo acepta automáticamente, por lo que no verá `PendingAcceptance`.)
  </Tab>

  <Tab title="Terraform">
    Las asignaciones personalizadas de DNS privado no son un atributo de `clickhouse_clickpipes_reverse_private_endpoint`; se gestionan mediante el recurso independiente `clickhouse_clickpipes_reverse_private_endpoint_custom_private_dns`, que recibe una lista completa de asignaciones de reemplazo y hace referencia al endpoint mediante su 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">
  ### Nombres de DNS privados personalizados
</div>

Dado que GCP PSC no propaga DNS, una asignación personalizada de DNS privado es esencial para cada endpoint de GCP PSC: siempre se proporciona así el nombre de DNS privado de la fuente, y ClickPipes lo resuelve a la IP interna estática del endpoint.

Se aplican las reglas estándar de ClickPipes para los [nombres de DNS privados personalizados](/docs/es/integrations/clickpipes/networking/aws-privatelink#custom-private-dns): la compatibilidad con comodines, la unicidad entre los endpoints privados inversos de un servicio y las restricciones sobre sufijos reservados se aplican de forma idéntica para todos los proveedores. Los comodines son especialmente útiles en GCP: una única asignación, como `*.<cluster>.<region>.managedkafka.<project>.cloud.goog`, abarca todos los brokers de un clúster de Kafka Managed.

Para GCP PSC, solo se utiliza `privateDnsName` de la asignación. El campo `internalDNSName` no es compatible, ya que un endpoint de PSC expone una IP estática sin un nombre de DNS al que asociarse: las asignaciones siempre se resuelven a esa IP.

<div id="producer-owned">
  ## Aprobación de conexiones gestionadas por el productor
</div>

En el caso de PSC gestionado por el productor, añada el proyecto consumidor de ClickPipes a la lista de aceptación automática del adjunto de servicio para que la conexión se acepte automáticamente. Si omite este paso, el RPE permanecerá en `PendingAcceptance` hasta que lo apruebe manualmente.

Para aceptar la conexión, la lista de consumidores aceptados del adjunto de servicio debe incluir el URI basado en el ID numérico del endpoint (`projects/<PROJECT>/regions/<REGION>/forwardingRules/<NUMERIC_ID>`). Este valor es el `endpointWithId` de la conexión pendiente en el adjunto de servicio; descríbalo para localizarlo:

```bash theme={null}
gcloud beta compute service-attachments describe <SERVICE_ATTACHMENT_NAME> \
  --region=<REGION> --project=<YOUR_PROJECT_ID> \
  --format='json(connectedEndpoints)'
```

Tome el `endpointWithId` de la entrada cuyo `status` sea `PENDING`, quite el prefijo `https://www.googleapis.com/compute/beta/` y pase el resultado a `--consumer-accept-list`:

```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>
  No use aquí el `endpoint_id` de la respuesta de la API/Terraform de ClickPipes: ese valor es el *nombre* de la regla de reenvío, no el ID numérico que requiere GCP, por lo que la lista de aceptación no coincidirá. Obtenga siempre el ID numérico del `endpointWithId` pendiente del adjunto de servicio.

  `--consumer-accept-list` también sobrescribe la lista de aceptación en lugar de añadir elementos. Si el adjunto de servicio ya acepta otros proyectos o endpoints, inclúyalos todos en el mismo comando; de lo contrario, los que omita perderán el acceso.
</Warning>

<div id="managing-rpes">
  ## Gestión de endpoints privados inversos
</div>

Puede gestionar los endpoints privados inversos existentes en la configuración del servicio de ClickHouse Cloud:

1. En la barra lateral, busque el botón `Settings` y haga clic en él.

   <Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/cp_rpe_settings0.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=71e42e9eea9482ef95a7a0268daed9e2" alt="Configuración de ClickHouse Cloud" size="lg" border width="1120" height="928" data-path="images/integrations/data-ingestion/clickpipes/cp_rpe_settings0.webp" />

2. Haga clic en `Reverse private endpoints` en la sección `ClickPipe reverse private endpoints`.

   <Image img="https://mintcdn.com/private-7c7dfe99/KW34O4k4cC0oxlHH/images/integrations/data-ingestion/clickpipes/cp_rpe_settings1.webp?fit=max&auto=format&n=KW34O4k4cC0oxlHH&q=85&s=085af9a759cfaa002abb814936c14600" alt="Configuración de ClickHouse Cloud" size="md" border width="579" height="705" data-path="images/integrations/data-ingestion/clickpipes/cp_rpe_settings1.webp" />

   La información detallada del endpoint privado inverso se muestra en el panel desplegable.

   Esta vista es de solo lectura, salvo para eliminar: haga clic en `×` en un endpoint y confirme la eliminación. La eliminación es permanente e interrumpe cualquier ClickPipe que esté usando ese endpoint.

   Para cambiar las asignaciones personalizadas de DNS privado de un endpoint, use la API o Terraform. La actualización reemplaza toda la lista de asignaciones, en lugar de añadir elementos.

Si un endpoint muestra `Rejected` o `Failed`, lea el mensaje que aparece bajo su estado: permite distinguir entre una conexión rechazada por el productor y otra que se cerró o requiere atención. Ambas situaciones suelen indicar que la lista de aceptación del adjunto de servicio no incluye el proyecto consumidor de ClickPipes. Para ver el estado que GCP informa para el endpoint, describa los `connectedEndpoints` de su adjunto de servicio.

<div id="limitations">
  ## Limitaciones
</div>

* El endpoint de RPE y el adjunto de servicio deben estar en la **misma región de GCP**. PSC entre regiones mediante [acceso global](https://docs.cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access) aún no es compatible. Use un [túnel SSH](/docs/es/integrations/clickpipes/networking/index#ssh-tunneling) si su fuente está en otra región.
* Un adjunto de servicio de PSC solo puede asignarse a un servicio de ClickHouse Cloud a la vez; no se puede reutilizar en varios servicios. Para mover un adjunto de servicio a otro servicio, [contacte con el soporte de ClickHouse](https://clickhouse.com/support/program) para liberar la asignación existente.
