將服務實體與應用程式、工作或功能工作量綁定
您可以使用服務綁定,將 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。
- 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
- 從「總覽」頁面,按一下服務綁定。
- 從「服務綁定」頁面,按一下「建立」以建立綁定。
- 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
- 選擇要綁定到服務實例的 Code Engine 應用程式或工作;例如,選擇
myapp應用程式。 - 指定與此綁定一起使用的服務存取秘訣。 服務存取密鑰用於儲存服務綁定所需的憑證。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,這些憑證與您選取的應用程式或工作無關。 如果目前不存在服務存取秘訣,則您要建立新的秘訣。 如果存在服務存取秘訣,若要為此綁定使用新服務憑證建立新服務存取秘訣,請選擇新秘訣。 完成下列步驟。
- 選擇服務實例憑證的角色。
- 展開「進階選項」。
- 若要 Code Engine 自動建立 IBM Cloud 服務實例的服務憑證,請選擇
Auto-generate。 - (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
- 按一下「新增」以建立服務綁定。
- 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 Code Engine 應用程式和工作之間所有已定義服務綁定的清單。
另外,您也可以從主控台中的特定 Code Engine 應用程式或工作頁面,建立和管理與特定應用程式和工作的服務綁定。 若要在應用程式或工作的上下文中使用服務綁定,請移至特定應用程式或工作的服務綁定索引標籤。
使用新的服務存取秘訣(與現有憑證)綁定服務實例
假設您要建立服務綁定,將服務實例與使用現有服務憑證的新服務存取秘訣綁定到應用程式或工作。 現有的服務憑證可能是由 Code Engine 自動產生,也可能是手動產生。 在本範例中,為 myjob 工作建立服務綁定,並使用現有服務憑證的新服務存取秘訣。
- 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
- 從「總覽」頁面,按一下服務綁定。
- 從「服務綁定」頁面,按一下「建立」以建立綁定。
- 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
- 選擇要綁定服務實體的 Code Engine 應用程式或工作;例如,選擇
myjob工作。 - 指定與此綁定一起使用的服務存取秘訣。 服務存取密鑰用於儲存服務綁定所需的憑證。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,這些憑證與您選取的應用程式或工作無關。 如果目前不存在服務存取秘訣,則您要建立新的秘訣。 如果存在服務存取秘訣,若要為此綁定使用新服務憑證建立新服務存取秘訣,請選擇新秘訣。 完成下列步驟。
- 選擇服務實例憑證的角色。
- 展開「進階選項」。
- 選擇要與此服務存取秘訣一起使用的服務憑證。
- (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
- 按一下「新增」以建立服務綁定。
- 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 Code Engine 應用程式和工作之間所有已定義服務綁定的清單。
另外,您也可以從主控台中的特定 Code Engine 應用程式或工作頁面,建立和管理與特定應用程式和工作的服務綁定。 若要在應用程式或工作的上下文中使用服務綁定,請移至特定應用程式或工作的服務綁定索引標籤。
將服務實例與現有的服務存取秘訣綁定
您可以在服務綁定中重複使用服務存取秘訣。 對於特定的 IBM Cloud 服務實例,您可以在不同的應用程式或工作中重複使用服務存取秘訣。 您不能在最初建立服務存取秘 密的相同應用程式或工作中重複使用該服務存取密碼。 由於服務憑證儲存於服務存取秘訣中,因此必須考慮以下幾點:
-
您可以使用相同的服務存取秘訣,將多個應用程式或工作綁定到相同的 IBM Cloud 服務實體。
-
服務存取秘訣不能在相同應用程式或工作的服務綁定中重複使用。 但是,您可以在不同的應用程式或工作中重複使用相同的服務存取秘訣。 由於服務存取秘訣與特定的 IBM Cloud 服務實例相關聯,因此如果您綁定到相同的服務實例,則只能在不同的應用程式或工作中重複使用服務存取秘訣。
讓我們建立服務綁定,將服務實例綁定到使用現有服務存取秘訣的工作。 例如,為 myjob 工作建立服務綁定,並選擇特定服務實例的現有服務存取秘訣。
- 專案進入 Active 狀態後,按一下 Code Engine 專案頁面上的專案名稱。
- 從「總覽」頁面,按一下服務綁定。
- 從「服務綁定」頁面,按一下「建立」以建立綁定。
- 選取您要與 Code Engine 應用程式或工作進行綁定的「IBM」服務執行個體。
- 選取您要與該服務實例建立綁定的「Code Engine」應用程式或工作。
- 您可以重複使用服務存取秘訣的現有憑證,以便將服務綁定到具有不同應用程式或作業的特定 IBM Cloud 服務實例。 在這種情況下,請選擇「現有密碼」。 請注意,您特定服務實例的任何先前定義的服務憑證都會列出,而這些憑證與您選擇的應用程式或工作無關。 完成下列步驟。
- 檢視現有的機密清單,並選擇要與此服務綁定一起使用的機密。
- (可選) 為服務綁定指定自訂前綴。 如果您沒有指定自訂前綴,Code Engine 會自動產生前綴。 前綴用於區分為此服務綁定建立的環境變數。
- 按一下「新增」以建立服務綁定。
- 現在您與應用程式或工作的服務綁定已從主控台建立,您可以從「服務綁定」頁面檢視服務實例與 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 工作量。
使用新憑證綁定服務實例
- 要將您的新服務實體綁定到 Code Engine 應用程式,並產生新的服務憑證,請使用
ibmcloud ce application bind指令。 - 若要將服務實體綁定到 Code Engine 工作,請使用
ibmcloud ce job bind指令。 - 若要將服務實體綁定到 Code Engine 函式,請使用
ibmcloud ce function bind指令。
若要建立用於這些步驟的應用程式,請執行下列指令。
ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
-
確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行
ibmcloud resource service-instances命令;例如ibmcloud resource service-instances輸出範例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
將您的服務實例綁定到 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 -
驗證憑證是否由使用
application get,或job get或function 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 [...]
將服務實體與特定角色綁定
- 要將您的新服務實體綁定到 Code Engine 應用程式,並產生新的服務憑證,請使用
ibmcloud ce application bind指令。 - 若要將服務實體綁定到 Code Engine 工作,請使用
ibmcloud ce job bind指令。 - 若要將服務實體綁定到 Code Engine 函式,請使用
ibmcloud ce function bind指令。
若要建立用於這些步驟的函式,請執行下列指令。
ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
-
確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行
ibmcloud resource service-instances命令;例如ibmcloud resource service-instances輸出範例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
將您的服務實例綁定到 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為此服務綁定所建立之新服務憑證的服務角色名稱。 有效值包括 Reader、Writer、Manager,或特定服務的角色。 如果未指定--role選項,則預設為Manager,如果不支援Manager,則預設為服務提供的第一個角色。 如果指定--service-credential,則忽略此選項。輸出範例
Binding service instance... Status: Done OK -
驗證憑證是否由使用
application get、job 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
-
確定您要綁定應用程式、工作或功能的服務實體名稱。 您可以透過執行
ibmcloud resource service-instances命令;例如ibmcloud resource service-instances輸出範例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
尋找服務實例的憑證。
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,找出資源群組中的所有服務金鑰。 -
使用現有憑證,將服務實例綁定到應用程式、工作或功能。 例如,以下
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要綁定的現有服務憑證的名稱。 -
驗證憑證是否由使用
application get,或job get或function 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 服務。
在您的應用程式與服務實例之間定義了服務綁定之後,只要應用程式和服務實例是活動的,或者您還沒有完成解除綁定的作業來移除服務綁定,服務綁定就會是活動的。 如果刪除服務實例,您需要手動刪除服務綁定。
從主控台解除服務實例的綁定
- 從 Code Engine Projects 頁面,進入您的專案。
- 從總覽頁面,按一下服務綁定,以檢視所有已定義服務綁定的清單。 或者,如果要從應用程式或工作的上下文管理服務綁定,請從總覽頁面按一下應用程式或工作,然後按一下應用程式或工作的名稱。 從特定應用程式或工作頁面,移至 Service bindings> 標籤。
- 從服務綁定清單中,刪除要從應用程式或工作中移除的綁定。 按一下動作圖示
> 刪除,以刪除服務綁定。
使用 CLI 解除綁定服務實例
-
使用
application get,job get或function 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 [...] -
使用
application unbind,job unbind或function unbind指令移除服務綁定。- 若要移除單一的綁定,請指定
--name和--binding選項。
ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME ``` * 若要解除綁定所有服務實體,請使用 `--all` 選項。 ```txt {: pre} ibmcloud ce job unbind --name JOB_NAME --all ``` - 若要移除單一的綁定,請指定