將服務實體與應用程式、工作或功能工作量綁定

您可以使用服務綁定,將 IBM Cloud 服務實例整合至 IBM Cloud® Code Engine 專案中的資源。

確定要綁定到 Code Engine 工作負載的服務實體,並確保已設定服務綁定的 存取權限 後,您就可以將服務實體綁定到 Code Engine 應用程式、工作或功能工作負載。

開始之前

必須先設定服務綁定的存取,才能將服務實體綁定到 Code Engine 應用程式、工作或功能工作負載。 根據您是否希望 Code Engine 自動為您建立和管理服務 ID,或是否希望使用由您管理的服務 ID,設定服務綁定的存取

當您使用服務綁定時,服務 ID、服務存取秘訣和服務憑證之間的關係是什麼?

在 Code Engine 中,服務綁定是應用程式、工作或功能工作量與另一個 IBM Cloud 服務之間的關係。Code Engine 使用服務 ID 來為特定的 IBM Cloud 服務實例建立憑證。 這些憑證是服務憑證,由您的 Code Engine 專案使用,以便與服務實體互動。 服務憑證儲存於服務存取秘訣中。 應用程式、作業或功能可以使用服務憑證存取服務存取秘訣,並用於與服務實體互動。

當您建立 IBM Cloud 服務實例時,您可以選擇為該服務實例建立服務憑證。 或者,當您建立服務綁定時,如果您設定了 服務綁定的存取,您可以選擇讓 Code Engine 自動為您建立服務實例憑證。

無論您是選擇 Code Engine 自動為您建立服務憑證,或是手動為特定服務實例建立服務憑證,您都必須指定服務憑證的 Identity and Access Management (IAM) 角色。 您指定的角色定義允許與特定服務實體和綁定的 Code Engine 應用程式、工作或功能互動。 例如,如果您從 Code Engine 建立服務綁定到 IBM Cloudant 服務實例,並且希望應用程式、工作或功能只能從 IBM Cloudant 資料庫讀取,請選擇 Reader 角色。

從主控台綁定服務實例到 Code Engine 應用程式或工作

您可以使用主控台建立服務綁定,將現有的服務實例綁定到 Code Engine 應用程式或工作。 若要為函式建立服務綁定,您必須 使用 CLI

使用新的服務存取秘訣(使用 Code Engine 自動產生的憑證)綁定服務實例

讓我們建立一個服務綁定,使用 Code Engine 自動產生的服務憑證,將服務實例綁定到應用程式或工作,並使用新的服務存取秘訣。 在此示例中,請從主控台為 myapp 應用程式建立服務綁定,並選擇 Code Engine 自動為 IBM Cloud 服務實例建立服務憑證。 在 Code Engine 自動建立服務憑證之前,請確保您已 設定 Code Engine 的存取權,以便自動建立和管理服務綁定的服務 ID

  1. 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
  2. 從「總覽」頁面,按一下服務綁定
  3. 從「服務綁定」頁面,按一下「建立」以建立綁定。
  4. 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
  5. 選擇要綁定到服務實例的 Code Engine 應用程式或工作;例如,選擇 myapp 應用程式。
  6. 指定與此綁定一起使用的服務存取秘訣。 服務存取密鑰用於儲存服務綁定所需的憑證。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,這些憑證與您選取的應用程式或工作無關。 如果目前不存在服務存取秘訣,則您要建立新的秘訣。 如果存在服務存取秘訣,若要為此綁定使用新服務憑證建立新服務存取秘訣,請選擇新秘訣。 完成下列步驟。
    1. 選擇服務實例憑證的角色
    2. 展開「進階選項」。
    3. 若要 Code Engine 自動建立 IBM Cloud 服務實例的服務憑證,請選擇 Auto-generate
    4. (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
  7. 按一下「新增」以建立服務綁定。
  8. 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 Code Engine 應用程式和工作之間所有已定義服務綁定的清單。

另外,您也可以從主控台中的特定 Code Engine 應用程式或工作頁面,建立和管理與特定應用程式和工作的服務綁定。 若要在應用程式或工作的上下文中使用服務綁定,請移至特定應用程式或工作的服務綁定索引標籤。

使用新的服務存取秘訣(與現有憑證)綁定服務實例

假設您要建立服務綁定,將服務實例與使用現有服務憑證的新服務存取秘訣綁定到應用程式或工作。 現有的服務憑證可能是由 Code Engine 自動產生,也可能是手動產生。 在本範例中,為 myjob 工作建立服務綁定,並使用現有服務憑證的新服務存取秘訣。

  1. 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
  2. 從「總覽」頁面,按一下服務綁定
  3. 從「服務綁定」頁面,按一下「建立」以建立綁定。
  4. 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
  5. 選擇要綁定服務實體的 Code Engine 應用程式或工作;例如,選擇 myjob 工作。
  6. 指定與此綁定一起使用的服務存取秘訣。 服務存取密鑰用於儲存服務綁定所需的憑證。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,這些憑證與您選取的應用程式或工作無關。 如果目前不存在服務存取秘訣,則您要建立新的秘訣。 如果存在服務存取秘訣,若要為此綁定使用新服務憑證建立新服務存取秘訣,請選擇新秘訣。 完成下列步驟。
    1. 選擇服務實例憑證的角色
    2. 展開「進階選項」。
    3. 選擇要與此服務存取秘訣一起使用的服務憑證。
    4. (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
  7. 按一下「新增」以建立服務綁定。
  8. 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 Code Engine 應用程式和工作之間所有已定義服務綁定的清單。

另外,您也可以從主控台中的特定 Code Engine 應用程式或工作頁面,建立和管理與特定應用程式和工作的服務綁定。 若要在應用程式或工作的上下文中使用服務綁定,請移至特定應用程式或工作的服務綁定索引標籤。

將服務實例與現有的服務存取秘訣綁定

您可以在服務綁定中重複使用服務存取秘訣。 對於特定的 IBM Cloud 服務實例,您可以在不同的應用程式或工作中重複使用服務存取秘訣。 您不能在最初建立服務存取秘 密的相同應用程式或工作中重複使用該服務存取密碼。 由於服務憑證儲存於服務存取秘訣中,因此必須考慮以下幾點:

  • 您可以使用相同的服務存取秘訣,將多個應用程式或工作綁定到相同的 IBM Cloud 服務實體。

  • 服務存取秘訣不能在相同應用程式或工作的服務綁定中重複使用。 但是,您可以在不同的應用程式或工作中重複使用相同的服務存取秘訣。 由於服務存取秘訣與特定的 IBM Cloud 服務實例相關聯,因此如果您綁定到相同的服務實例,則只能在不同的應用程式或工作中重複使用服務存取秘訣。

讓我們建立服務綁定,將服務實例綁定到使用現有服務存取秘訣的工作。 例如,為 myjob 工作建立服務綁定,並選擇特定服務實例的現有服務存取秘訣。

  1. 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
  2. 從「總覽」頁面,按一下服務綁定
  3. 從「服務綁定」頁面,按一下「建立」以建立綁定。
  4. 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
  5. 選取您要與該服務實例建立綁定的「Code Engine」應用程式或工作。
  6. 您可以重複使用服務存取秘訣的現有憑證,以便將服務綁定到具有不同應用程式或作業的特定 IBM Cloud 服務實例。 在這種情況下,請選擇「現有密碼」。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,而這些憑證與您選擇的應用程式或工作無關。 完成下列步驟。
    1. 檢視現有的機密清單,並選擇要與此服務綁定一起使用的機密。
    2. (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
  7. 按一下「新增」以建立服務綁定。
  8. 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 Code Engine 應用程式和工作之間所有已定義服務綁定的清單。

另外,您也可以從主控台中的特定 Code Engine 應用程式或工作頁面,建立和管理與特定應用程式和工作的服務綁定。 若要在應用程式或工作的上下文中使用服務綁定,請移至特定應用程式或工作的服務綁定索引標籤。

使用 CLI 將服務實體與 Code Engine 應用程式、工作或功能綁定

您可以使用 CLI 建立服務綁定,將現有的服務實例綁定到 Code Engine 應用程式、工作或功能。

開始之前

  • 建立並使用專案

  • 設定您的 Code Engine CLI 環境。

  • 建立要與 Code Engine 工作負載綁定的服務實體。

    例如,建立 IBM Cloud Object Storage 服務實例 (Lite 計劃):

    ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default
    
  • 建立 Code Engine 工作量。

使用新憑證綁定服務實例

若要建立用於這些步驟的應用程式,請執行下列指令。

ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
  1. 確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行 ibmcloud resource service-instances 命令;例如

    ibmcloud resource service-instances
    

    輸出範例

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. 將您的服務實例綁定到 Code Engine 應用程式、工作或功能,並產生具有預設服務角色的新服務憑證。 預設服務角色為 Manager,如果不支援 Manager,則為服務提供的第一個角色。 在以下範例中、application bind 命令將 my-object-storage 服務實例與名為 my-application 的應用程式綁定。 針對此綁定動作,會產生具有 Manager 角色的新服務憑證。

    ibmcloud ce application bind --name my-application --service-instance my-object-storage
    

    下表總結了本範例中與 application bind 指令使用的選項。 有關命令及其選項的詳細資訊,請參閱 ibmcloud ce application bind 指令。

    指令選項
    選項 說明
    --name 要綁定的應用程式的名稱。 這是必要值。
    --service-instance 指定要綁定應用程式的現有服務實例名稱。 這是必要值。

    輸出範例

    Binding service instance...
    Status: Done
    Waiting for application revision to become ready...
    The Configuration is still working to reflect the latest desired specification.
    Traffic is not yet migrated to the latest revision.
    Ingress has not yet been reconciled.
    Waiting for load balancer to be ready.
    OK
    
  3. 驗證憑證是否由使用 application get,或 job getfunction get 指令產生憑證。 在下面的示例中,驗證是否已建立上一個示例中建立的憑證。

    ibmcloud ce application get --name my-application
    

    輸出範例

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storag   Writer             CLOUD_OBJECT_STORAGE
    [...]
    

將服務實體與特定角色綁定

若要建立用於這些步驟的函式,請執行下列指令。

ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
  1. 確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行 ibmcloud resource service-instances 命令;例如

    ibmcloud resource service-instances
    

    輸出範例

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. 將您的服務實例綁定到 Code Engine 應用程式、工作或功能,並產生具有特定服務角色的新服務憑證。 如需 IAM 服務角色的詳細資訊,請參閱服務 存取角色。 在下面的示例中,function bind 命令使用 Writer 服務角色將 my-object-storage 服務實例綁定到呼叫 my-function 的函式。 針對此綁定動作,會產生具有 Writer 角色的新服務憑證。 透過指定 --prefix 選項,服務綁定所建立的環境變數會加上前綴。

    ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIX
    

    下表總結了本範例中與 function bind 指令使用的選項。 有關命令及其選項的詳細資訊,請參閱 ibmcloud ce function bind 指令。

    指令選項
    選項 說明
    --name 要連結的函數名稱。 這是必要值。
    --prefix 為此服務綁定所建立之環境變數的前綴。 例如,--prefix MYPREFIX 會將 MYPREFIX 前綴加入為此服務綁定建立的任何環境變數。 如需詳細資訊,請參閱 前綴方法
    --service-instance 指定要與函式綁定的現有服務實體名稱。 這是必要值。
    --role 為此服務綁定所建立之新服務憑證的服務角色名稱。 有效值包括 ReaderWriterManager,或特定服務的角色。 如果未指定 --role 選項,則預設為 Manager,如果不支援 Manager,則預設為服務提供的第一個角色。 如果指定 --service-credential,則忽略此選項。

    輸出範例

    Binding service instance...
    Status: Done
    OK
    
  3. 驗證憑證是否由使用 application getjob get 命令或 function get 指令。 在下面的示例中,驗證是否已建立上一個示例中建立的憑證。

    ibmcloud ce function get --name my-function
    

    輸出範例

    [...]
    Service Bindings:
    Name                                  ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-function-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             MYPREFIX                     30s
    [...]
    

使用現有憑證綁定服務實例

如果您已經為服務實例建立了憑證,並希望將其用於服務綁定,請新增 --service-credentials 選項。

若要建立用於這些步驟的工作,請執行下列指令。

ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
  1. 確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行 ibmcloud resource service-instances 命令;例如

    ibmcloud resource service-instances
    

    輸出範例

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. 尋找服務實例的憑證。

    ibmcloud resource service-keys --instance-name INSTANCENAME
    

    輸出範例

    Name                State    Created At
    my-cos-credential   active   Tue Mar  2 01:15:33 UTC 2021
    

    若要查看服務憑證的詳細資訊,請執行 ibmcloud resource service-key KEYNAME。 您可以執行 ibmcloud resource service-keys,找出資源群組中的所有服務金鑰。

  3. 使用現有憑證,將服務實例綁定到應用程式、工作或功能。 例如,以下 job bind 命令將 my-object-storage 服務實例與名為 my-cos-credential 的現有服務憑證綁定到名為 myjob 的現有工作。

    ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credential
    

    下表總結了本範例中與 job bind 指令使用的選項。 有關命令及其選項的詳細資訊,請參閱 ibmcloud ce job bind 指令。

    指令選項
    選項 說明
    --name 要綁定的工作名稱。 這是必要值。
    --service-instance 指定要與工作綁定的現有服務實例名稱。 這是必要值。
    --service-credential 要綁定的現有服務憑證的名稱。
  4. 驗證憑證是否由使用 application get,或 job getfunction get 指令產生憑證。 在下面的示例中,驗證是否已建立上一個示例中建立的憑證。

    ibmcloud ce job get --name myjob
    

    輸出範例

    [...]
    Service Bindings:
    Name                                 ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    myjob-ce-service-binding-abcde       abcde645-d3f9-407d-b964-6c3ae69abcde  my-object-storage  cloud-object-storage  my-cos-credential  CLOUD_OBJECT_STORAGE
    [...]
    

解除綁定服務實例

從應用程式、工作或功能工作負載解除服務實體的綁定,可移除現有的服務綁定。

當您解除(或移除)服務綁定時,您會刪除應用程式、工作或功能工作負載與服務存取秘訣的關聯,使工作負載無法再存取先前綁定的 IBM Cloud 服務。

在您的應用程式與服務實例之間定義了服務綁定之後,只要應用程式和服務實例是活動的,或者您還沒有完成解除綁定的作業來移除服務綁定,服務綁定就會是活動的。 如果刪除服務實例,您需要手動刪除服務綁定。

從主控台解除服務實例的綁定

  1. Code Engine Projects 頁面,進入您的專案。
  2. 從總覽頁面,按一下服務綁定,以檢視所有已定義服務綁定的清單。 或者,如果要從應用程式或工作的上下文管理服務綁定,請從總覽頁面按一下應用程式或工作,然後按一下應用程式或工作的名稱。 從特定應用程式或工作頁面,移至 Service bindings> 標籤。
  3. 從服務綁定清單中,刪除要從應用程式或工作中移除的綁定。 按一下動作圖示動作 > 刪除,以刪除服務綁定。

使用 CLI 解除綁定服務實例

  1. 使用 application get, job getfunction get 指令找到要移除的服務綁定;例如

    ibmcloud ce application get --name my-application
    

    輸出範例

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             CLOUD_OBJECT_STORAGE
    [...]
    
  2. 使用 application unbind, job unbindfunction unbind 指令移除服務綁定。

    • 若要移除單一的綁定,請指定 --name--binding 選項。
        ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME
        ```
    * 若要解除綁定所有服務實體,請使用 `--all` 選項。
    
    ```txt {: pre}
        ibmcloud ce job unbind --name JOB_NAME --all
        ```