> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# BYOC GCP 私有网络设置

> 为 GCP 上的 BYOC 设置 VPC 对等互连 或 Private Service Connect

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>;
};

ClickHouse 在 GCP 上的 BYOC 支持两种私有连接方式：VPC 对等互连 和 PSC (Private Service Connect)。

<div id="common-prerequisites">
  ## 前置条件
</div>

VPC 对等互连 和 PSC 共同需要执行的步骤。

<div id="step-enable-private-load-balancer-for-clickhouse-byoc">
  ### 为 ClickHouse BYOC 启用私有负载均衡器
</div>

在 ClickHouse Cloud 控制台中，为您的 BYOC 基础设施启用**私网负载均衡器**。

<Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/wrAOYL3DquclMwbQ/images/cloud/reference/byoc-private-load-balancer.webp?fit=max&auto=format&n=wrAOYL3DquclMwbQ&q=85&s=c2d79269321210679ad00c0afe098632" size="md" alt="BYOC 启用私网负载均衡器" border width="2438" height="1724" data-path="images/cloud/reference/byoc-private-load-balancer.webp" />

<div id="gcp-vpc-peering">
  ## 设置 VPC 对等互连
</div>

请先了解 [GCP VPC 对等互连 功能](https://docs.cloud.google.com/vpc/docs/vpc-peering)，并注意 VPC 对等互连的限制 (例如，已对等互连的 VPC 网络之间，子网 IP 范围不能重叠) 。ClickHouse BYOC 使用私网负载均衡器，通过对等互连为 ClickHouse 服务提供网络连通性。

如需为 ClickHouse BYOC 创建或删除 VPC 对等互连，请按照以下步骤操作：

<Note>
  以下示例步骤适用于简单场景；对于更复杂的场景，例如与本地环境网络进行对等互连，可能需要进行一些调整。
</Note>

<Steps>
  <Step title="创建对等连接" id="step-1-create-a-peering-connection">
    在本示例中，我们将在 BYOC VPC 网络与另一个现有的 VPC 网络之间建立对等互连。

    1. 在 ClickHouse BYOC Google Cloud 项目中，进入 “VPC Network”。
    2. 选择 “VPC network peering”。
    3. 点击 “Create connection”。
    4. 根据你的需求填写必要字段。下面是在同一 GCP 项目中创建对等互连的截图。

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/wrAOYL3DquclMwbQ/images/cloud/reference/byoc-vpcpeering-gcp-1.webp?fit=max&auto=format&n=wrAOYL3DquclMwbQ&q=85&s=155bdd685e897ec94710136a0a854a25" size="md" alt="BYOC 创建对等连接" border width="1552" height="1740" data-path="images/cloud/reference/byoc-vpcpeering-gcp-1.webp" />

    GCP VPC 对等互连要求在这两个网络之间建立 2 个连接才能生效 (即，一个从 BYOC 网络到现有 VPC 网络的连接，以及一个从现有 VPC 网络到 BYOC 网络的连接) 。因此，你还需要按相反方向再创建 1 个连接。下面是创建第二个对等连接的截图：

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/wrAOYL3DquclMwbQ/images/cloud/reference/byoc-vpcpeering-gcp-2.webp?fit=max&auto=format&n=wrAOYL3DquclMwbQ&q=85&s=b05cc2c734703c8478000f6af4886913" size="md" alt="BYOC 接受对等连接" border width="1560" height="1744" data-path="images/cloud/reference/byoc-vpcpeering-gcp-2.webp" />

    两个连接都创建完成后，刷新 Google Cloud Console 页面，这 2 个连接的状态应变为 “Active”：

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/wrAOYL3DquclMwbQ/images/cloud/reference/byoc-vpcpeering-gcp-3.webp?fit=max&auto=format&n=wrAOYL3DquclMwbQ&q=85&s=592aa5fa952cc7c4a3cf90cce941a33b" size="lg" alt="BYOC 接受对等连接" border width="3134" height="640" data-path="images/cloud/reference/byoc-vpcpeering-gcp-3.webp" />

    此时，应可从已对等互连的 VPC 访问 ClickHouse 服务。
  </Step>

  <Step title="通过对等连接访问 ClickHouse 服务" id="step-2-access-ch-service-via-peering">
    如需私有访问 ClickHouse，系统会预配私网负载均衡器和端点，以便从用户已对等互连的 VPC 安全连接。专用终结点遵循公共端点的格式，并带有 `-private` 后缀。例如：

    * **公共端点**：`h5ju65kv87.mhp0y4dmph.us-east1.gcp.clickhouse-byoc.com`
    * **专用终结点**：`h5ju65kv87-private.mhp0y4dmph.us-east1.gcp.clickhouse-byoc.com`
  </Step>
</Steps>

<div id="setup-psc">
  ## 配置 PSC (Private Service Connect)
</div>

GCP PSC (Private Service Connect) 可为您的 ClickHouse BYOC 服务提供安全的私网连接，无需进行 VPC 对等互连 或使用互联网网关。所有流量均在 GCP 网络内传输，确保不会经过公网。

<Steps>
  <Step title="在 ClickHouse 控制台中启用 Private Link" id="step-1-enable-private-link">
    <Note>
      请确保已启用私网负载均衡器，这是前置条件。
    </Note>

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/wrAOYL3DquclMwbQ/images/cloud/reference/byoc-privatelink.webp?fit=max&auto=format&n=wrAOYL3DquclMwbQ&q=85&s=0cce402678608f2f392274290212c7cb" size="md" alt="启用 BYOC PrivateLink" width="2800" height="1848" data-path="images/cloud/reference/byoc-privatelink.webp" />
  </Step>

  <Step title={<>获取端点 <code>Service name</code></>} id="step-2-obtain-endpoint-service-name">
    1. 在 ClickHouse Cloud 控制台中，进入要通过 PSC 连接的服务的 Settings 页面。
    2. 点击“设置专用终结点”。
    3. 在打开的弹出面板中，复制 `Service name` 和 `DNS name` 的值，下一步将用到它们。 (启用 Private Link 后，可能需要一段时间才能生成这些值。)
           <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-privatelink-pe-create.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=69067518eadb371baff190537f63e430" size="md" alt="专用终结点" border width="1368" height="719" data-path="images/cloud/security/gcp-privatelink-pe-create.webp" />
  </Step>

  <Step title="在您的网络中创建端点" id="step-3-create-endpoint">
    1. 打开您自己的 GCP 控制台 (即客户端应用程序所在 GCP 账户的控制台) → Network Services → Private Service Connect → Connected Endpoints。

    2. 点击“Connect Endpoint”按钮，打开 Private Service Connect 创建对话框。
           <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-psc-open.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=f4ae28bfa6d8ab4b217e56a28361370c" size="md" alt="在 Google Cloud 控制台中打开 Private Service Connect" border width="1892" height="737" data-path="images/cloud/security/gcp-psc-open.webp" />

    3. 填写以下字段：
       * **目标**：选择 `Published service`
       * **目标服务**：使用上一步获取的 `Service name`
       * **端点名称**：输入有效的端点名称
       * **网络/子网**：选择用于连接的网络；客户端应用程序将通过该网络进行连接
       * **IP 地址**：为端点选择或创建新的 IP 地址；在步骤 [为端点设置私有 DNS 名称](#step-5-set-private-dns-name-for-endpoint) 中需要使用该 IP 地址
       * (可选) **启用全局访问**：如果希望可从任意区域访问该端点，请启用此选项
           <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-psc-enable-global-access.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=a1f4b9a87ea78645d2a66285e2e49bac" size="md" alt="为 Private Service Connect 启用全局访问" border width="545" height="660" data-path="images/cloud/security/gcp-psc-enable-global-access.webp" />
       * 点击“ADD ENDPOINT”按钮创建端点。

    4. 连接获批后，Status 列将从 Pending 变为 Accepted。

    5. 创建端点后，复制 `PSC Connection ID` 的值，下一步将用到它。
           <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-psc-copy-connection-id.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=bb533eebfa2d6123aeb5898cd0cd1413" size="md" alt="复制 PSC Connection ID" border width="1441" height="116" data-path="images/cloud/security/gcp-psc-copy-connection-id.webp" />
  </Step>

  <Step title={<>将 <code>Endpoint ID</code> 添加到 ClickHouse 服务允许列表</>} id="step-4-add-endpoint-id-to-services-allow-list">
    1. 在 ClickHouse Cloud 控制台中，进入要通过 PSC 连接的服务的 Settings 页面。
    2. 点击“设置专用终结点”。
    3. 在打开的弹出面板中，将上一步获取的 `PSC Connection ID` 填入 `Endpoint ID` 字段，也可选择添加描述。
    4. 点击“创建端点”。

    <Note>
      如果要允许通过现有 PSC 连接访问，请使用现有端点下拉列表。
      下拉列表会显示同一基础设施中各服务的现有 PSC 连接。
    </Note>

    <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-privatelink-pe-filters.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=441e6d16123cd4ced5761fd300281d22" size="md" alt="专用终结点过滤器" border width="1367" height="768" data-path="images/cloud/security/gcp-privatelink-pe-filters.webp" />
  </Step>

  <Step title="为端点设置私有 DNS 名称" id="step-5-set-private-dns-name-for-endpoint">
    <Note>
      DNS 的配置方式有多种。请根据您的具体用例配置 DNS。
    </Note>

    您需要将“DNS name”的所有子域名 (通配符) 指向 GCP PSC 端点 IP 地址，以确保 VPC/网络中的服务和组件能够正确解析该名称。
  </Step>

  <Step title="通过 PSC 访问实例" id="step-6-connect-via-psc">
    1. 在 ClickHouse Cloud 控制台中，进入服务的 Settings 页面。
    2. 点击“设置专用终结点”。
    3. 在打开的弹出面板中，复制 `DNS name`。
           <Image img="https://mintcdn.com/private-7c7dfe99-trino-dialect/1eeX3TpI5_hf7pMs/images/cloud/security/gcp-privatelink-pe-dns.webp?fit=max&auto=format&n=1eeX3TpI5_hf7pMs&q=85&s=0a877dd5746f9149c394c16d9de89916" size="md" alt="专用终结点 DNS 名称" border width="1367" height="768" data-path="images/cloud/security/gcp-privatelink-pe-dns.webp" />
           <Note>
             通过 PSC 访问 ClickHouse 服务受服务级别的 **Istio 授权策略**控制，该策略由 ClickHouse 在您的 BYOC 基础设施中管理。
           </Note>
  </Step>
</Steps>
