创建本地访问端点网关

除了基于中心的DNS共享模型外,您还可以在DNS共享的VPC中创建本地访问虚拟私有端点网关。 本地访问虚拟私有云(VPEs)为 IBM Cloud 支持的服务提供私有本地连接,无需通过中心虚拟私有云(VPC)路由流量。

目前,此功能仅支持,IBM Cloud Object Storage 且仅向特定白名单客户开放。

准备工作

  • 本地访问端点网关采用基于星型架构 的DNS共享模型。 在创建本地访问端点网关之前,必须配置 DNS 共享。 若您已配置 DNS 共享,则无需进行任何更改或迁移即可开始使用本地访问端点网关。
  • 在创建虚拟物理环境(VPE)之前,请先审阅 总体规划注意事项,包括创建限制、安全组、跨账户访问以及支持的功能。
  • 有关在 DNS 集线器和共享 VPC 拓扑中本地访问 VPE 特定先决条件,请参阅 DNS 共享规划注意事项。

在控制台中创建本地访问端点网关

要在 IBM Cloud 控制台中创建本地访问端点网关,请按照以下步骤操作:

  1. 控制 IBM Cloud 台中,选择导航菜单图标,然后依次点击基础设施 VPC 图标 > 网络 > 虚拟私有端点网关。 显示VPC的虚拟私有端点网关页面。

  2. 单击“**创建 **”进入配置页面。

  3. 在详细信息部分,输入以下字段的值:

    • 名称- 为您的端点网关输入一个唯一名称。
    • 资源组- 为端点网关选择一个资源组。 您可以使用此端点网关的默认组,或从列表中选择。 有关更多信息,请参阅在资源组中组织资源的最佳实践
    • 标签- 可选添加标签以组织资源、追踪使用成本或管理资源访问权限。
    • 访问管理标签- 您还可以选择性地为资源添加访问管理标签,以帮助组织访问控制关系。 访问管理标签唯一支持的格式为 key:value. 有关更多信息,请参阅 《通过标签控制对资源的访问》
    • 虚拟私有云- 选择您需要 VPE IP 地址的 VPC。 根据您选择的VPC区域,系统将提供可供访问的服务列表,以便 IBM 您将其关联到端点网关。 如果目标服务未在您选择的VPC区域提供,您可以更改区域以在其他区域选择该服务。

    如果目标服务或服务实例未显示,请重新验证您的IAM权限。 您还可以选择分配一个保留的IP地址绑定到网关,或指定一个VPC子网来分配保留的IP地址用于绑定到网关。

  4. 在“安全组”部分,从安全组表中勾选要附加的安全组复选框。 随后,您可以管理这些安全组,并收紧其针对端点网关的入站流量的安全规则。

    当您创建端点网关时未指定安全组,系统将自动为该端点网关附加VPC默认安全组。 有关详细信息,请参阅 《配置用于端点网关的访问控制列表和安全组》

    在支持安全组之前创建的端点网关不附加任何安全组。 它们还允许所有入站流量。 若将安全组附加到未附加任何安全组的VPE上,则无法将该VPE恢复至未附加安全组的状态。 您可以通过附加一个包含允许所有入站流量的规则的安全组,恢复到之前的“允许所有入站流量”行为。 然而,此规则的安全性本质上低于设置更严格的安全组,因此不建议采用。

  5. “请求连接到服务”部分,选择 IBM Cloud,然后从菜单中选择 cloud-object-storage

    • 选择服务区域。 该区域已预先选定以优化性能。

    • 请注意,除配置服务端点( config endpoint type)之外的所有服务端点类型均支持资源绑定,这使得VPE绑定能够关联 Object Storage 到存储桶或资源。

  6. 在“共享 DNS”部分,请选择以下 DNS 解析绑定模式之一:

    • Primary 允许将 VPE 网关的服务端点共享给中心 VPC 的 DNS 解析器,用于域名解析。
    • 按资源绑定机制使VPE网关能够与云对象存储桶建立资源绑定关系,并共享服务资源端点,以便与中心VPC的DNS解析器进行名称解析。
    • 禁用状态下,VPE网关的服务端点无法共享用于名称解析。

    当虚拟私有云(VPC)作为DNS中心时,DNS共享始终设置为主模式,且该模式不可更改。

    若选择 “按资源绑定”或“禁用”,则可创建可选资源绑定,从而允许从所选VPC对特定 Object Storage 存储桶启用精细访问控制。 有关更多信息,请 阅创建资源绑定。

    在配置过程中,最多可绑定10个存储桶,后续可选择添加更多存储桶。

  7. 在保留IP部分,选择保留的IP地址。 您可以选择:

    • 为我选择一个- 输入IP地址的前缀名称,否则将为您自动选择。 选择一个或多个子网(建议每个区域仅选择一个子网),并启用“自动释放”开关,以便在删除端点网关时自动删除该保留的IP地址。

    • 从现有IP中选择- 从现有IP地址列表中选择。 如果不存在IP地址,请点击 “保留IP”来保留一个。

      在VPC中,每个可用区(AZ)仅允许将一个保留IP绑定到VPE网关。 确保在VPC内的所有子网中,同一可用区内不存在其他绑定。

    • 稍后选择- 在创建端点网关后某个时间点选择IP地址。

  8. 查看订单摘要,然后点击创建虚拟私有端点网关。 请求使用端点网关。

通过命令行界面创建本地访问端点网关

开始之前, 先设置好您的命令行界面环境。

要通过命令行界面创建本地访问端点网关,请执行以下步骤:

  1. 列出符合条件可设置为端点网关目标的服务 IBM Cloud 实例:

    ibmcloud is endpoint-gateway-targets
    
  2. 运行以下命令创建端点网关:

    ibmcloud is endpoint-gateway-create --target TARGET [--target-type private_path_service_gateway | provider_cloud_service | provider_infrastructure_service] [--vpc VPC] [--name NAME] [--rip RIP --subnet SUBNET | (--new-reserved-ip NEW_RESERVED_IP1 --new-reserved-ip NEW_RESERVED_IP2 ...)] [--allow-dns-resolution-binding false | true] [--sg SG] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]
    

    其中:

    --target-type:
    指示此端点网关的目标类型,可选值为以下之一:, provider_cloud_service``private_path_service_gateway,或 provider_infrastructure_service
    --vpc:
    表示 VPC 的 ID 或名称。
    --target:
    表示提供商基础设施服务的名称或提供商云服务实例的 CRN。 您可以使用命令 ibmcloud is endpoint-gateway-targets 列出有资格被设置为端点网关目标的提供商云和基础设施服务。
    --name:
    表示端点网关的新名称。
    --rip:
    表示要绑定到端点网关的保留 IP 的 ID。
    --subnet:
    子网的标识或名称。 仅当提供的保留 IP 为名称格式时,才需要此名称。
    --new-reserved-ip:
    表示以JSON格式或JSON文件形式的新保留IP配置。RESERVED_IP_JSON|@RESERVED_IP_JSON_FILE
    --sg:
    表示安全组的ID。

    若未指定 -sg,则 VPC 默认安全组将绑定至端点网关。

    --resource-group-id:
    表示资源组的 ID。 该选项与 --resource-group-name 互斥。
    --resource-group-name:
    表示资源组的名称。 该选项与 --resource-group-id 互斥。
    --output:
    指示输出格式。 仅支持 JSON。
    -q, --quiet:
    抑制冗余输出。

    有关更多信息和命令示例,请参阅 VPC CLI 参考 文档。

使用API创建本地访问端点网关

要使用 API 创建本地访问端点网关,请按照以下步骤操作:

  1. 设置 您的API环境

  2. 将以下值存储在变量中,以便在API命令中使用:

    • ResourceGroupId- 首先获取资源组,然后填充变量:

      export ResourceGroupId=<your_resourcegroup_id>
      
    • VpcId- 使用命令 list vpc (带前置变量),然后根据提供的ID填充该变量:

      export VpcId=<your_VPC_id>
      
    • TargetCrn- 服务 IBM Cloud 实例的名称(或CRN),您需要在此实例中设置端点网关。 您可以使用 ibmcloud is endpoint-gateway-targets 命令列出符合条件可设置为端点网关目标的服务 IBM Cloud 实例。

      export TargetCrn=<CRN of a target service>
      
    • SubnetID (可选)- 子网标识符。

      export SubnetID=<your_subnet_id>
      
  3. 启动所有变量后,选择以下操作之一:

    • 为特定虚拟私有云(VPC)创建端点网关:

      curl -X POST -sH "Authorization:${iam_token}" \
      "$vpc_api_endpoint/v1/endpoint_gateways?version=$api_version&generation=2" \
      -d {
      "name": endpoint-gateway-1",
      "vpc": {"id":"'$VpcId'"},
      "target": {
      "crn": "$TargetCrn",
      "resource_type": "provider_cloud_service"
      },
      "security_groups": [
      {"id": "'$sg'"}
      ]
      }'
      

      创建用于连接私有路径服务的端点网关时,请确保 '"resource type" = "private_path_service_gateway"'。

      在为服务实例创建端点网关并分配保留IP地址后,您必须将VPC网络中的IP地址绑定到该端点网关。 有关详细信息,请参阅 《绑定和解除绑定保留的IP地址》。 这些绑定IP地址成为访问映射到端点网关的服务的虚拟私有端点(VPE)。

    • 创建一个关联了保留IP地址的端点网关:

      curl -X POST -sH "Authorization:${iam_token}" \
      "$vpc_api_endpoint/v1/endpoint_gateways?version=$api_version&generation=2" \
      -d {
      "name": endpoint-gateway-1",
      "vpc": {"id":"'$VpcId'"},
      "target": {
      "crn": "$TargetCrn",
      "resource_type": "provider_cloud_service"
      },
      "security_groups": [
      {"id": "'$sg'"}
      ],
      "ips": [
      {"subnet": { "id": "$SubnetId" } }
      ],
      }'
      

      创建用于连接私有路径服务的端点网关时,请确保将“资源类型”设置为 private_path_service_gateway

为某个 IBM Cloud 服务创建端点网关后,该网关便会呈现与其关联的端点。 您可以通过多种方式编辑端点网关,例如绑定/解除绑定IP地址、更改资源组以及更新标签。 若需因任何原因更改服务端点,必须先删除端点网关,再重新创建。

使用Terraform创建本地访问端点网关

您可以使用Terraform创建端点网关。

要使用 Terraform,请下载 Terraform CLI 并配置 Provider IBM Cloud 插件。 有关更多信息,请参阅 《Terraform 入门指南》

以下示例创建一个 VPE 网关:

resource "ibm_is_virtual_endpoint_gateway" "vpe_iam" {
  name = "${var.name}-iam-vpe"
  vpc  = ibm_is_vpc.testacc_vpc.id

  target {
    resource_type = var.vpe_target_type
    crn           = var.vpe_target_crn
  }
  dns_resolution_binding_mode = "disabled"
}
resource "ibm_is_virtual_endpoint_gateway_resource_binding" "vpe_rb" {
  name = "${var.name}-rb-vpe"
  endpoint_gateway_id  = ibm_is_virtual_endpoint_gateway.vpe_iam.id

  target {
    crn           = var.vpe_rb_target
  }
}
data "ibm_is_virtual_endpoint_gateway" "vpe_iam" {
  name = ibm_is_virtual_endpoint_gateway.vpe_iam.name
}
data "ibm_is_virtual_endpoint_gateways" "vpe_iam" {
}
data ibm_is_virtual_endpoint_gateway_resource_bindings bindings {
  endpoint_gateway_id = ibm_is_virtual_endpoint_gateway.vpe_iam.id
}
data ibm_is_virtual_endpoint_gateway_resource_binding binding {
  endpoint_gateway_id = ibm_is_virtual_endpoint_gateway.vpe_iam.id
  endpoint_gateway_resource_binding_id = ibm_is_virtual_endpoint_gateway_resource_binding.vpe_rb.endpoint_gateway_resource_binding_id
}

创建本地访问端点网关后

若返回至「VPC 的虚拟私有端点网关」页面,您的端点网关将显示在表格中。 对于 IBM Cloud 服务,您的端点网关状态将从 Updating 变更为 Stable。 您可以单击“操作”菜单 ,:重命名、保留或绑定IP地址,解除IP绑定,或删除端点网关。