將服務端點與 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 使用專用端點。 若要建立專案,請搭配使用 ibmcloud ce project create 指令與 --endpoint=private 選項。

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

    請等待直到專案處於 active 狀態。 使用 CLI,您可以使用 ibmcloud ce project get 指令來確認專案狀態。

    如果您想要現有的 Code Engine 專案使用專用端點,請搭配使用 ibmcloud ce project select 指令與 --endpoint=private 選項。

    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. 建立只對專用端點可見的應用程式或函數。 搭配使用 ibmcloud ce application createibmcloud ce function create 指令與 --visibility=private 選項。 另外,您也可以使用主控台來建立或更新應用程式或函式,並設定 應用程式的可見性

    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,搭配使用 ibmcloud ce application get 指令與 --option url 選項。 在下面的範例中,因為 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