IBM Cloud Docs
将服务端点与 Code Engine 配合使用

将服务端点与 Code Engine 配合使用

所有 IBM Cloud® Code Engine 项目都提供与 IBM Cloud® 服务端点的集成。 这种支持使您能够从传统基础架构连接到 Code Engine 工作负载,并保持在 IBM Cloud 网络内。

您可以控制 Code Engine 工作负载的可视性,并指定是向公共端点还是专用端点公开应用程序或功能。 通过服务端点访问为 visibility = private 配置的应用程序或功能。 通过服务端点访问的应用程序或函数不会离开 IBM 网络并停留在 IBM Cloud 网络中。

公共端点

公共端点提供与公用网络上的部署的连接。 在供应时,公共端点是所有部署的缺省选项。 环境需要具有因特网访问权才能连接到部署。

专用端点

在专用网络上使用服务端点的部署会获得无法从公用因特网访问的端点。 所有流量都将路由到专用于 Code Engine 部署的硬件,并保留在 IBM Cloud 专用网络上。 所有进出此端点的流量都是免费的,并且不会因流量保留在 IBM Cloud中而产生费用。 环境访问 IBM Cloud 专用网络后,就不需要互联网连接来连接部署。

具有专用端点的 Code Engine 应用程序部署可从专用网络中的任何帐户访问,并且对每个实例的访问需要认证。 要将此访问限制为特定 IP 地址、IP 地址范围、IBM Cloud 服务或 VPC,请配置 基于上下文的限制规则

使用服务端点安全地管理 Code Engine 资源

  1. 指定 Code Engine 项目以使用专用端点。 您可以配置 Code Engine 项目以仅将专用端点与 CLI 配合使用。 要创建项目,请使用带有 --endpoint=private 选项的 ibmcloud ce project create 命令。

    ibmcloud ce project create --name myproject --endpoint=private
    

    等待项目处于 active 状态。 通过 CLI,您可以使用 ibmcloud ce project get 命令来确认项目状态。

    如果希望现有 Code Engine 项目使用专用端点,请使用带有 --endpoint=private 选项的 ibmcloud ce project select 命令。

    ibmcloud ce project select --name myproject --endpoint=private
    

    对于 project createproject select 命令,如果未显式指定 --endpoint 选项,那么行为由系统确定。 如果 IBM Cloud CLI 已连接到 private.cloud.ibm.com,那么 Code Engine 项目的行为就像 --endpointprivate 一样。 如果 IBM Cloud CLI 已连接到 cloud.ibm.com,那么 Code Engine 项目的行为就像 --endpointpublic 一样。

  2. 如果您没有创建新项目,而是选择了现有项目,并且希望应用程序只对私有端点可见,请确认现有项目支持具有私有可见性的应用程序。 使用 ibmcloud ce project get 命令来验证 Application Private Visibility Supported 的输出是否设置为 true。 如果值为 false,请 联系 IBM 支持人员 以在现有项目中启用此功能。

    ibmcloud ce project get -n myproject
    

    示例输出

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active
    Enabled:                                   true
    Application Private Visibility Supported:  false
    Selected:                                  true
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
    
    Quotas:
    Category                                  Used  Limit
    App revisions                             1     60
    Apps                                      1     20
    Build runs                                1     100
    Builds                                    2     100
    Configmaps                                2     100
    CPU                                       0     64
    Ephemeral storage                         0     256G
    Instances (active)                        0     250
    Instances (total)                         0     2500
    Job runs                                  0     100
    Jobs                                      0     100
    Memory                                    0     256G
    Secrets                                   6     100
    Subscriptions (cron)                      0     100
    Subscriptions (IBM Cloud Object Storage)  0     100
    Subscriptions (Kafka)                     0     100
    
  3. 创建仅对专用端点可视的应用程序或函数。 使用带有 --visibility=private 选项的 ibmcloud ce application createibmcloud ce function create 命令。 您也可以使用控制台创建或更新应用程序或函数,并设置 应用程序的可见性

    ibmcloud ce application create -n myapp --visibility=private
    

使用服务端点安全访问应用程序

  1. 从 Code Engine 项目中,确认已使用 visibility=private 设置配置应用程序。 请参阅 使用专用端点部署应用程序

  2. 读取 Code Engine 应用程序暴露于专用网络的 URL。 URL 的格式如下:<app>.<uuid>.private.<region>.codeengine.appdomain.cloud

    • 从 Code Engine 控制台,转到应用程序的“域映射”选项卡,查看应用程序及其可用 URL 的可见性。

    • Code Engine CLI,使用带有 --option url 选项的 ibmcloud ce application get 命令。 在下面的示例中,由于 myapp 的可见性设置为 visibility=private,因此使用此命令指定 --option url 会将 URL 输出到专用网络。

      ibmcloud ce application get -n myapp -output url
      

      示例输出

      http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
      
  3. 从 IBM Cloud 专用网络调用应用程序(例如,从 IBM Cloud Shell 调用应用程序)。

    myapp 应用程序是一个简单的 Hello World 应用程序。 使用 cURL, 执行 myapp 应用程序时,将返回 Hello World。 例如,从 IBM Cloud Shell 运行

    curl http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    

使用服务端点安全地访问功能

  1. 从 Code Engine 项目中,确认已使用 visibility=private 设置配置函数。 请参阅 使用专用端点部署函数

  2. 读取暴露于专用网络的 Code Engine 函数的 URL。 URL 的格式如下:<function>.<uuid>.private.<region>.codeengine.appdomain.cloud

    • 从 Code Engine 控制台,转至函数的 域映射 选项卡以查看函数及其可用 URL 的可视性。

    • Code Engine CLI,使用 ibmcloud ce function get 命令。 在下面的示例中,由于 myfunction 的可见性设置为 visibility=private,因此该命令会将 URL 输出到专用网络。

      ibmcloud ce function get -n myfunction
      

      示例输出

      http://myfunction.1abc23def19.private.us-south.codeengine.appdomain.cloud