工具鏈疑難排解
使用工具鏈的一般問題可能包括工具整合配置或工具鏈範本問題。 在許多案例中,您可以藉由遵循一些簡單的步驟,從這些問題回復。
為什麼無法從使用不同地區中專用儲存庫的範本來建立工具鏈?
您使用的工具鏈範本會參照專用 Git Repos and Issue Tracking 儲存庫。
Git Repos and Issue Tracking 是地區特有的。 如果您嘗試從範本建立工具鏈,並將目標設為沒有專用儲存庫的地區,則 Git 整合設定會失敗。
當您將 Git Repos and Issue Tracking 儲存庫新增至特定地區中的工具鏈時,IBM ID 會對映至可讓您在該地區中存取 GitLab 的 GitLab 使用者名稱。 即使 GitLab 使用者名稱在所有地區中都相同,每個地區中的相關聯 GitLab 使用者都會不同,因為每個地區都有不同的 GitLab 安裝。 不會將其他地區中的 GitLab 使用者存取權自動授與工具鏈,即使 GitLab 使用者名稱相同也是一樣。
請將 Git Repos and Issue Tracking 儲存庫設為公用,因此從任何位置都可以進行存取,包括其他 IBM Cloud 地區。
如果儲存庫必須為專用,則儲存庫擁有者可以在來源儲存庫所在的 GitLab 伺服器上建立個人存取記號來授與其存取權。 在建立工具鏈期間,您只需要存取專用儲存庫,就可以複製內容。 可以建立具有到期日的個人存取記號,以限制其生命期限在一天之後到期。
在您有個人存取記號之後,可以建立 URL 以從其他地區存取儲存庫。 配置工具整合時,請在來源儲存庫 URL 欄位中,更新儲存庫 URL 以使用您的使用者名稱及存取記號。
https://user:XXXXXXX@us-south.git.cloud.ibm.com/group/node-hello-world
其中 user 是您的 GitLab 使用者名稱,XXXXXXX 是存取標記,group 是儲存 repo 的群組,node-hello-world 是 repo 名稱。
如果您的 GitLab 儲存庫不在 GitLab 群組內,則 group 的值會與您的使用者名稱相同。
我已配置工具鏈的工具整合,但為什麼並未配置它?
如果在設定處理程序期間發生錯誤,或工具鏈與工具之間的通訊未適當地完成,則配置會失敗。
在您新增及配置工具鏈的工具整合之後,會顯示錯誤訊息,指出設定失敗。
新增工具整合時,工具鏈會與工具整合所代表的工具進行通訊,來佈建任何必要資源,以及建立它們與工具鏈的關聯。 如果在設定處理程序期間發生錯誤,或工具鏈與工具之間的通訊未適當地完成,則工具整合會進入錯誤狀態。
您可以嘗試重新配置工具整合:
-
在其工具卡片上,將游標移至
Setup failed訊息上方,然後按一下重新配置。
重新配置工具整合 -
確定您使用的是有效的配置參數。 如果錯誤是由無效配置所造成,則會顯示錯誤訊息; 例如
The integration could not be set up. Check the settings and try again. Reason: Invalid api_key:fakeKey。 更新工具整合的設定,然後按一下儲存整合。 -
如果是通訊問題導致錯誤,請按一下儲存整合以重試。
為什麼無法使用 ibmcloud CLI 來刪除工具鏈?
目前,您無法使用 ibmcloud 資源 CLI 來刪除工具鏈。
我已嘗試從指令行使用 ibmcloud resource service-instance-delete 指令來刪除工具鏈,而且指令失敗並發生下列錯誤訊息:
Error Code: RC-ServiceBrokerErrorResponse Message: description : Toolchain delete must be performed from the toolchain dashboard
工具鏈是 Cloud 平台上您目前無法使用 ibmcloud resource CLI 刪除的特殊類型的資源。
若要刪除工具鏈,請執行下列動作:
- 從 IBM Cloud 控制台點擊選單圖示(
)> 平台自動化 > 工具鏈。 在「工具鏈」頁面上,按一下要刪除的工具鏈。
- 按一下「行動」功能表,然後選擇「刪除」。 刪除工具鏈會移除其所有工具整合,這樣可能會刪除那些整合所管理的資源。
- 鍵入工具鏈名稱,然後按一下刪除,來確認刪除作業。
您可以使用 IBM Cloud CLI Developer Tools (ibmcloud dev) 指令來刪除工具鏈。 安裝命令列介面(IBM Cloud CLI ) 後,您可透過命令列使用 指令 ibmcloud dev toolchain-delete 刪除工具鏈。
為什麼無法在 DevOps 儀表板中檢視工具鏈?
移至 DevOps 儀表板時,未顯示您的工具鏈。
您的工具鏈不會顯示在工具鏈清單中,除非您已選取正確的位置。DevOps Insights 此服務僅在三個地點提供:達拉斯、法蘭克福和倫敦。
在工具鏈頁面上,將位置變更為達拉斯、法蘭克福或倫敦,以顯示所有 DevOps Insights 整合工具鏈。
停用根金鑰時為何無法建立工具鏈?
當您嘗試建立工具鏈時,會顯示下列通知: The root key of the Key Management Service instance that was configured for the Continuous Delivery service in the selected resource group and region is disabled。
當您建立工具鏈時,必須使用已啟用加密的根金鑰來保護它。
使用下列其中一種方法來啟用根金鑰進行加密:
停用根金鑰時,為何無法檢視我在「工具鏈」頁面上建立的服務實例?
當您開啟工具鏈時,會顯示下列通知: The root key of the key management service instance that was used to encrypt this toolchain is disabled.
因為當您開啟工具鏈時,會解密檢視工具鏈服務實例所需的資訊,所以您必須確定已啟用加密的根金鑰。
使用下列其中一種方法來啟用根金鑰進行加密:
當我使用 Terraform 或 API 來配置工具整合時,為何配置會因 Could not find value for secret reference... 錯誤而失敗?
工具整合已配置密鑰的參照,但工具鏈找不到參照的密鑰或密鑰儲存庫。
當您使用 Terraform 或 API 來建立或更新工具整合時,配置失敗,並出現 Could not find value for secret reference... 錯誤訊息。
許多工具整合包括分類為密鑰的配置內容。 當您在 Terraform 資源或 API 呼叫中設定這些內容時,可以將它們設為 密鑰參照。 密鑰參照是特別格式化的字串,可識別密鑰在整合至工具鏈的密鑰儲存庫中的名稱及位置。 此錯誤指出工具鏈找不到所識別的密鑰,或密鑰儲存庫未整合至工具鏈。
如果密鑰參照 {vault:...} 字串中的一個以上區段不正確,或密鑰儲存庫中不存在指定群組、名稱或欄位的索引鍵,則依名稱的密鑰參照可能會發生錯誤。 如果密鑰 CRN 參照已刪除的密鑰,則 CRN 的密鑰參照可能會發生錯誤。
錯誤訊息包含無法解決的密鑰參照字串。
依名稱完成密鑰參照的下列作業:
- 請檢查密鑰儲存庫是否作為工具整合至工具鏈,以及工具整合是否正確配置為依服務實例名稱進行識別。 如果工具整合配置錯誤,請編輯工具整合以更正錯誤狀況,然後儲存配置。
- 檢查
{vault::...}密鑰參照的第一個區段是否符合密鑰儲存庫工具整合的名稱。 例如,密鑰參照{vault::my-secret-store.my-secret}預期工具鏈具有名為my-secret-store的密鑰儲存庫工具整合。 此值是工具整合的名稱,不是 Secret Store 服務實例的名稱。 - 如果密鑰儲存在 Key Protect中,請檢查
{vault::...}密鑰參照的第二個區段是否符合您要在 Key Protect 服務實例中使用的金鑰名稱。 例如,密鑰參照{vault::my-kms.my-key}預期在 Key Protect 服務實例中找到名為my-key的金鑰。 此服務實例已使用名為my-kms的 Key Protect 工具整合整合整合至工具鏈。 - 如果密鑰儲存在 Secrets Manager中,請檢查
{vault::...}密鑰參照的第二個區段及第三個區段是否符合您要在 Secrets Manager 服務實例中使用的密鑰群組及密鑰名稱。 例如,密鑰參照{vault::my-sm.my-group.my-key}預期在名為my-group的密鑰群組中找到名為my-key的密鑰。 此密鑰及密鑰群組儲存在 Secrets Manager 服務實例中,該服務實例使用名為my-sm的 Secrets Manager 工具整合來整合至工具鏈。 - 如果秘密儲存在 HashiCorp Vault 中,請檢查
{vault::...}秘密參考的第二段和第三段是否與 HashiCorp Vault 伺服器中的秘密和秘密欄位的名稱相符。 例如,秘密參考{vault::my-hcv.my-secret.my-field}期望在 HashiCorp Vault 伺服器中找到一個名為my-secret的秘密,並在該秘密中找到一個名為my-field的欄位。 此伺服器透過使用 HashiCorp Vault 工具整合至工具鏈,該工具整合的名稱為my-hcv。
按 CRN 完成密鑰參照的下列作業:
- 請檢查 Secret Store 是否作為工具整合至工具鏈,以及是否已正確配置工具整合以由服務實例 CRN 識別。 如果工具整合配置錯誤,請編輯工具整合以更正錯誤狀況,然後儲存配置。
- 請檢查工具整合中所配置 Secrets Manager 服務實例的 CRN 所參照的實例與失敗密鑰的 CRN 相同。
當我使用 Terraform 或 API 來配置工具整合時,為何配置會因 A problem was encountered while attempting to resolve secret reference... 錯誤而失敗?
工具整合已配置密鑰的參照,但工具鏈未獲授權從密鑰所在的密鑰儲存庫中擷取密鑰。
當您使用 Terraform 或 API 來建立或更新工具整合時,配置失敗,並出現 A problem was encountered while attempting to resolve secret reference... 錯誤訊息。
許多工具整合包括分類為密鑰的配置內容。 當您在 Terraform 資源或 API 呼叫中設定這些內容時,可以將它們設為 密鑰參照。 密鑰參照是特別格式化的字串,可識別密鑰在整合至工具鏈的密鑰儲存庫中的名稱及位置。 當使用如 Key Protect IBM Cloud 和 等機密儲存服務時,此錯誤表示工具 Secrets Manager 鏈雖能與機密儲存服務建立連線,但未獲授權從該服務中檢索機密。 通常,此問題發生是因為 IBM CloudIdentity and Access Management (IAM) 缺乏允許工具鏈從服務讀取機密資訊的服務間授權政策。
錯誤訊息包含無法解決的密鑰參照字串。
依名稱完成密鑰參照的下列作業:
- 檢查
{vault::...}密鑰參照的第一個區段。 此區段是工具鏈中密鑰儲存庫工具整合的名稱。 例如,{vault::my-kms.my-key}密鑰參照會識別名為my-kms的密鑰儲存庫工具整合。 - 檢查 Secret Store 工具整合配置,以確保
name參數符合 Secret Store 工具整合的名稱。 此外,請確定工具整合已正確配置成依服務實例名稱來識別,且已選取正確的 Key Protect 或 Secrets Manager 服務實例。 - 使用 IAM,將服務對服務授權原則從工具鏈新增至 Key Protect 或 Secrets Manager 服務實例。 在授權原則中,工具鏈是 來源 服務,而 Secret Store 是 目標 服務。 當您以 Key Protect為目標時,請確定原則授與
Viewer和ReaderPlus角色。 當您以 Secrets Manager為目標時,請確定原則授與Viewer和SecretsReader角色。
按 CRN 完成密鑰參照的下列作業:
- 請檢查 Secret Store 工具整合配置,以確定它已正確配置為由服務實例 CRN 識別。 此外,請確定 Secrets Manager 服務實例的 CRN 正確。
- 使用 IAM 將服務對服務授權原則從工具鏈新增至 Secrets Manager 服務實例。 在授權原則中,工具鏈是 來源 服務,而 Secrets Manager 實例是 目標 服務。 請確定原則授與
Viewer和SecretsReader角色。
如需服務對服務授權原則的相關資訊,請參閱 使用授權來授與服務之間的存取權。
如需如何使用 Terraform 將服務對服務授權原則從工具鏈配置到 Secret Store 服務實例的範例,請參閱 使用 Terraform 指定密鑰參照。
當我使用 Terraform 或 API 來配置 Key Protect、Secrets Manager或 App Configuration 工具整合時,配置為何失敗?
工具整合參照不存在的 Key Protect、Secrets Manager或 App Configuration 服務實例。
當您使用 Terraform 或 API 建立或更新、或 App ConfigurationKey Protect 工具整合時,Secrets Manager 設定會因 There was a problem with the provided service parameters, please check that they are valid 錯誤訊息而失敗。
工具整合設定中指定的服務實例名稱或 App Configuration 識別碼( Secrets ManagerKey Protect 如、或)無法被找到或存取。 如果您使用 Terraform 來管理服務實例和工具整合,則 Terraform 可能會嘗試建立或更新工具整合,然後再建立服務實例。
若您正在使用 Terraform,請檢查您的 Terraform 設定,確保工具整合資源(如 ibm_cd_toolchain_tool_keyprotect ibm_cd_toolchain_tool_secretsmanager,, 或 ibm_cd_toolchain_tool_appconfig )依賴於其所代表的資源( ibm_resource_instanceApp
Configuration 如 Secrets ManagerKey Protect,, 或 )。 您可以透過參照服務實例資源的屬性,或透過指定參照服務實例資源的 depends_on meta 引數,在工具整合資源內指定此相依關係。 您可以直接參照服務實例資源,或透過其他中間資源間接參照。 透過正確宣告資源之間的相依關係,您可以強制 Terraform 以正確的順序建立、更新及刪除資源。
如需 Terraform 資源之間的相依關係如何運作的範例,請參閱 使用 Terraform 指定密鑰參照。
如果您使用 API,請檢查您嘗試建立或更新之 Key Protect、Secrets Manager或 App Configuration 工具整合的配置參數。 請驗證您嘗試整合之服務實例的名稱或 ID 已正確地指定在工具整合的配置內。