為「基礎架構即代碼」設定 CD 工具鏈
本教學是 3 部曲系列教學的第 3 部曲,您將透過使用完整的參考實作來學習 IBM Cloud® DevSecOps 最佳實作,此實作以服務形式提供,並由 IBM Cloud® Continuous Delivery. 在本教程系列的第 3 部分中,您將在 DevSecOps 中使用工具鏈模板進行持續部署 (CD),並採用與安全性和合規性相關的最佳實踐。
開始之前
在開始本教學系列的第 3 部分之前,請確保完成下列先決條件:
CD - 以 DevSecOps 作法部署安全的應用程式
DevSecOps CD 工具鏈只包含一個用於持續部署的管道。 它實現了以下最佳實踐:
- 變更管理自動化可協助開發人員、核准人員和稽核人員從法規遵從的角度追蹤部署。
- 從 CI 管道中收集的證據建立證據摘要。
- 在 Git Repos and Issue Tracking 基於變更管理儲存庫中建立變更請求,並將部署證據加入其中。
- 使用庫存儲存庫將建構的工件推廣到部署環境,例如暫存和 prod。
- 檢查 CR,如果所有檢查都通過,則自動核准。
- 如果 CR 獲得核准,或是緊急情況,工具鏈就會將映像從庫存中部署到生產中。
CD 工具鏈的導引設定概述
本教學中的任何方法都會帶您進入引導式設定體驗。 系統會引導您完成工具鏈設定程序,並向您提供建立工具鏈所需的建議組態選項。
進度指示器會顯示完成組態的步驟。 您可以使用進度指示器導覽到上一個步驟。 目前步驟的組態選項會顯示在頁面的主要區域。
若要進入下一步,請按一下繼續。 只有在現行步驟的配置完成且有效時,您才能進入下一步。 您可以按一下 Back(返回 )導航到上一個步驟。
某些步驟包括切換至進階組態切換。 預設情況下,這些步驟會為您提供所需的最低配置。 不過,需要更細緻控制的進階使用者可以按一下切換到進階組態切換鍵,以顯示底層整合的所有選項。
成功完成所有步驟後,按一下「摘要」步驟中的「建立」,即可建立工具鏈。
您隨時都可以回到導覽安裝程式中的先前步驟。 工具鏈安裝程式會保留後續步驟中的所有配置設定。
啟動 CD 工具鏈設定
使用下列選項之一啟動 CD 工具鏈設定:
設定 CD 工具鏈名稱和區域
檢閱工具鏈設定的預設資訊。 在 IBM Cloud 中,可透過工具鏈名稱來識別工具鏈。 在 IBM Cloud 中,確保在相同區域和資源群組的工具鏈中,工具鏈的名稱是唯一的。
在下拉式選單中選擇相關的 CI 工具鏈,以複製部分 CI 設定,協助設定此 CD 工具鏈。
警告:此動作可能會覆寫某些已輸入的值。
設定 CD 工具整合
如果您已在歡迎步驟中連結到現有的 CI 工具鏈,則會預先填入該工具鏈中使用的應用程式相關套件庫名稱。 檢閱儲存庫 URL,然後繼續進行後續步驟。
應用程式相關儲存庫
如果您要從頭建立 CD 工具鏈,請在建立 CI 工具鏈時設定這些套件庫,然後在此使用或連結至這些套件庫。
若要取得各自的 URL,請前往 CI Pipeline,選擇各自的工具卡。 用滑鼠右鍵按一下工具卡,然後選擇複製連結位址。
- 庫存:庫存儲存庫記錄 CI 和 CD 管道所建立的工件的詳細資訊。 例如:
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
- 問題:問題儲存庫記錄 CI 管道執行時發現的問題。 例如,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues
。 - 證據:所有屬於應用程式的原始合規性證據都收集在此。 例如,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence
。
工具鏈目前僅支援連結至現有的 IBM-hosted Git Repos and Issue Tracking 儲存庫。
庫存
Repository URL: 上一步中捕捉到的 CI 工具鏈中配置的庫存庫的 URL。
問題
Repository URL: URL 上一步中捕捉到的 CI 工具鏈中配置的問題儲存庫。
管線配置
管線配置儲存庫包含部署、測試及其他自訂作業所需的 YAML 檔案及 Script。
在本教程中,管道配置儲存庫與 DevSecOps CI 為 Infrastructure as Code ( IaC ) 定義的相同。 選擇使用現有部署組態儲存庫,並選擇用於 CI 工具鏈管道組態的儲存庫。
如需 Git repos 的詳細資訊,請參閱 設定您的 Git Repos and Issue Tracking。 如需自訂指令碼的詳細資訊,請參閱 自訂指令碼。
密碼
此工具鏈中的多個工具,以及可能在您的自訂腳本中,都需要秘密才能存取特權資源。 IBM Cloud API 金鑰就是這種秘密的範例。 將這些機密安全地儲存在 IBM 建議的機密管理工具中,例如 IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager 或 HashiCorp Vault。 機密管理工具可以整合到工具鏈中,這樣您就可以在 Tekton 管道中輕鬆引用機密。
本教學使用 IBM Cloud® Secrets Manager 作為秘密的保險庫。
證據儲存
證據儲存庫儲存管道執行的所有任務的證據。 此證據由管道在管道運行時收集。
選擇現有的證據儲存庫,最好是您設定持續整合 (CI) 工具鏈時建立的證據儲存庫。
最佳做法是使用 Cloud Object Storage 桶作為證據櫃來儲存管道執行期間收集到的所有證據和工件。
如需更多關於證據儲存的資訊,請參閱 證據。
證明
Repository URL: URL 上一步中捕捉到的 CI 工具鏈中配置的證據櫃儲存庫。
雲端 Object Storage 儲存區
若要使用此功能,您必須擁有一個 Cloud Object Storage 實例和一個水桶。 按一下 使用 Cloud Object Storage buckets 作為證據櫃來 建立 Cloud Object Storage 範例。 有關配置可充當合規性證據櫃的存儲桶的更多信息,請參閱 配置雲 Object Storage 用於存儲證據。
- Cloud Object Storage instance、Bucket name 和 Cloud Object Storage endpoint 欄位會自動填入。
- 輸入服務 ID API 金鑰
- 首選:按一下金鑰圖示,即可從保密庫匯入現有的金鑰。
- 可以複製並貼上現有的密鑰。
端點欄位是可選的。 在設定工具鏈或管道執行期間,選擇或提供端點。
部署目標
對於 DevSecOps for Terraform 用例,請選擇自訂部署選項。
自訂目標
此選項需要在管道部署腳本中使用的 IBM Cloud API 金鑰。 所提供的部署腳本使用 Schematics 將 Terraform 配置工件上傳到 Schematics 工作區,並使用 Schematics CLI plan
和 apply
命令在 IBM Cloud 上交付 Terraform 配置。
IBM Cloud API 金鑰
API 金鑰在數個任務中與 IBM Cloud CLI 工具互動:
- 首選:按一下金鑰圖示,從機密儲存庫匯入現有的金鑰。
- 複製並貼上現有的密鑰。
- 按一下 [ 新增 + ] 建立鑰匙。
將新產生的 API 金鑰儲存至秘笈庫。
變更要求管理
使用 IBM Cloud管理的 Git Repos and Issue Tracking 儲存庫來管理變更要求。 如需相關資訊,請參閱 自動化變更管理。
DevOps 洞察力工具鏈
從另一個工具鏈將現有的 DevOps insights 範例連結至此管道,這樣 CI 和 CD 工具鏈管道的所有建立、部署和測試記錄都會收集到同一個地方。
CD 工具鏈可以將部署記錄發佈到現有的 DevOps insights 範例。 若要啟用此功能,請在 DevOps insights toolchain ID 下拉選項中選擇包含現有 DevOps Insights 範例的工具鏈 ID。
選用工具
Slack
設定 Slack 工具,以接收有關您的 PR/CI Pipeline 事件的通知:
- Slack webhook
- 首選:按一下按鍵圖示,即可從保密庫匯入現有的 webhook。
- 複製並貼上現有的 webhook。
- Slack 頻道:將訊息發佈到現有的 Slack。
- Slack 團隊名稱:. slack.com 前的短語,在我們的團隊 URL。 例如,如果您的團隊 URL 是
https://team.slack.com
,團隊名稱就是 team。 - 自動 Slack 通知:透過選擇要接收通知的事件,自訂您的選擇。
您可以在建立工具鏈後加入 Slack 工具。
建立工具鏈後,在 CD 管道中使用 slack-notifications
環境屬性切換傳送通知(0 = 關閉,1 = 開啟)
安全及合規性
要將工具鏈與 Security and Compliance Center 整合,您必須提供下列資訊:
- Security and Compliance Center 資料收集器的名稱和證據櫃儲存庫名稱。
- 工具鏈類型的證據命名空間,即持續部署 (Continuous Deployment ) 或持續符合 (Continuous Compliance )。
使用 IBM Cloud Framework for Financial Services profile,DevSecOps 工具鏈。
閱讀更多關於 Security and Compliance Center 以及 工具整合 配置流程。
建立 CD 工具鏈
在摘要頁面上,按一下建立,等待工具鏈建立。
在建立管道後設定個別的工具鏈整合。
探索 CD 工具鏈
現在 CD 工具鏈已創建,點擊 cd-pipeline 卡即可開啟並執行 Promotion Pipeline。
執行推廣管道
在運行推廣管道之前,請確保 CI 管道 已成功運作。
Promotion Pipeline 會建立一個拉取請求,其中包含 Inventory Source Environment (例如:master) 分支上針對 Inventory Target Environment 分支 (例如:staging 或 prod) 的庫存內容。
- 在 cd-pipeline Dashboard 上,按一下執行管道,然後選擇 Manual Promotion Trigger。 按一下執行以啟動管道。
- 等待 Promotion Pipeline 執行完成,並檢查執行記錄。
- Promotion Pipeline 成功完成後,
promote
任務日誌會提供連結至 Inventory Repository 中的 pull request。 拉取請求名稱的格式為promote <Inventory Source Environment> to <Inventory Target Environment>
.
-
使用日誌中提供的鏈結,在瀏覽器中開啟取回要求。 完成下列區段中的詳細資料:
- 優先順序:(必須)Critical、High、Moderate、Low、Planning 之一。
- 變更請求受讓人:(必須)受讓人的電子郵件 ID。
- 附加說明:說明申請中的變更。
- 目的:對應用程式所做變更的目的。
- 影響說明: 應用程式行為或環境變更的影響。
- 取消計劃: 在部署失敗時取消的步驟。
-
完成 Pull Request 中的欄位,然後按一下儲存。
-
如果 CI 中的任何合規性檢查失敗,而您想要 繼續部署, 請將
EMERGENCY
標籤新增至 PR -
合併來自 Git Repos and Issue Tracking的取回要求。
在 CD 管道執行期間,CD 管道會使用拉取請求的詳細資訊在變更請求管理儲存庫中建立變更請求。
設定 CD Pipeline
Terraform 變數
在本教程中,指定要在生產環境中建立的金鑰保護實例名稱。
若要這樣做,請選擇 cd-pipeline 中的 Environment Properties(環境內容 ),然後按一下 Add(新增 )。
新增一個類型為 Text Value
且名稱為 TF_VAR_key_protect_instance
的屬性。 設定一個有意義的值,表示交付到生產環境,例如 key-protect-production-202210191453
。 此環境屬性的值會注入為 key_protect_instance
terraform 配置變數的值。
您還必須 IBM Cloud 適當的 ibmcloud_api_key
使用 IBM Cloud 進行驗證,如 設定 IBM Cloud Provider 外掛程式所述
新增一個類型為 Secure Value
且名稱為 TF_VAR_ibmcloud_api_key
的屬性。 設定值為用於 IBM Cloud 資源建立的 api 金鑰。
本教學中使用的範例期望 resource_group
來建立 KeyProtect 範例。 resource_group
預設名稱為 Default
。 如果這不適合您的帳戶,請取代 variables.tf
檔案中的預設 resource_group
變數,或透過設定 TF_VAR_resource_group
環境屬性為適當的資源群組名稱,指定要使用的
resource_group
變數值。
管道組態分支
在 CD Pipeline 環境屬性中,管道組態儲存庫的分支預設定義為 master
。 將本教學的分支變更為 main
。
若要這樣做,請在 cd-pipeline 中選擇「環境內容」,然後按一下 edit
,將值變更為 main
執行 CD 管線
以下列其中一種方式啟動 CD 輸送管道:
- 首選:手動觸發 CD 管線。
- 可選:在每次
Merge
庫中的動作後自動執行。 設定 Git Repos and Issue Tracking 觸發器可觸發自動 CD Pipeline,但預設為停用。
您也可以隨時手動觸發 CD 管道,但如果自上次成功部署後沒有任何變更,CD 管道會提早中止,因為沒有任何東西要部署。 您可以新增並使用 force-redeploy
變數,在沒有程式碼變更的情況下重新執行 CD。
一次成功的 CD 管線運行是這樣的:
成功執行 CD 管道後,您可以在資源清單中找到 KeyProtect 實例服務。