設定您的 DevSecOps 基礎架構和 CI 工具鏈,以部署安全的應用程式
使用本教學,您可以使用基於 Terraform 的快速啟動模板,自動設定和配置 CI 和 CD 工具鏈的基礎架構。 此範本採用 DevSecOps 的合規性與安全性最佳實踐。 此範本 採用 IBM Cloud® Schematics 工作區,可自動建立所需基礎架構,以安全地將您的應用程式部署至 Kubernetes 或 Red Hat® OpenShift®。範本採用 DevSecOps 的 IBM Cloud® Continuous Delivery 工具鏈管道架構。 工具鏈已預先設定為持續交付,包括庫存整合、變更管理、證據收集和部署。
IBM Cloud Schematics 提供「Terraform 即服務」,讓您能使用高階 Scripting 語言來為 IBM Cloud 環境中想要具有的資源建立模型,及啟用「基礎架構即程式碼 (IaC)」。 Terraform 是由 HashiCorp 開發的開放原始碼軟體。 Terraform 可實現可預測且一致的資源配置,以快速建立複雜的多階雲端環境。
在本教程中,您將遵循三個簡單步驟來建立 Schematics 工作區、套用 Terraform 執行計畫,以及更新環境屬性值。 當您套用計劃時,Schematics 工作區會設定您的安全基礎架構。 此基礎架構可與您的團隊分享,並適用於 DevSecOps整合安全實務與軟體開發及作業生命週期的方法。 合併的目標是設定開發速度與安全平衡的優先順序。 CI 和 CD 工具鏈模板。
自動化基礎結構設定會建立資源,這些資源會使用 DevSecOps CI 和 CD 範本的預設值自動佈建。 您可以在 Schematics 工作區的變數部分找到預設值。 建立下列資源:
- 在 IBM Cloud® Kubernetes Service 或 Red Hat OpenShift 上的 IBM Cloud。
- 一個標準的 IBM Cloud Object Storage 實例和水桶。
- IBM Cloud® Secrets Manager. 請注意,只允許使用一個 Secrets Manager 範例。 如果您已經擁有 Secrets Manager 服務,請務必覆寫 步驟 2 中的
sm_service_name預設值。 - GPG 影像簽署金鑰。
- 功能完整的 DevSecOps CI 工具鏈,可透過 DevSecOps 的合規性與安全性最佳實務,建立、測試並部署 Node.js 應用程式範例。
開始之前
- 若要完成本教學,請使用「隨用隨付」或「訂閱 IBM Cloud」帳戶,其中您是所有者或擁有 完整的管理員存取權限。 如果您已有 IBM Cloud 帳戶,但需要升級,請參閱升級 您的 帳戶。
- 如果您想要在建立工具鏈或基礎架構後與這些元素互動,請安裝 IBM Cloud CLI。
- 取得 GitLab 個人存取權限。 輸入個人存取權標的名稱。 在與 CI 工具鏈相同的區域建立您的代幣。 請務必複製並儲存記憶體,因為您稍後需要它,而且無法再次存取。
- 建立 IBM Cloud API 金鑰。 請務必複製並儲存或下載 API 金鑰值,因為您稍後需要它,而且無法再次存取。
建立 Schematics 工作區
套用 Terraform 執行計畫
-
在 Schematics Settings( 設定)頁面的 Variables(變數 )區段中,輸入每個變數的值。 必填欄位沒有預設值。 您可以覆寫預設值。
如果覆寫
sm_service_name值,Terraform 執行計劃會使用現有資源,而不是建立新資源。 -
gitlab_token變數,輸入之前取得的個人存取權限。 -
在
ibmcloud_api_key變數中,輸入之前取得的 IBM Cloud API 金鑰。 -
對於
registry_namespace變數,請輸入容器註冊表命名空間值。 若要建立命名空間,請參閱 Container Registry 命名空間。 -
對於
kube_version變數,在命令列上執行:ibmcloud ks versions,即可查看可用版本。 -
選用。 如果您已經有 Secrets Manager 範例,請輸入它的名稱作為
sm_service_name變數。 否則,請勿變更此變數。 -
選用。 如果您要調整群集的大小或位置,您可以覆寫下列變數:
datacenter,default_pool_size,machine_type,hardware,public_vlan_num,或private_vlan_num(預設值為 dal12/us-south 資料中心)。 -
選用。 按一下產生計劃。 此動作會建立 Terraform 執行計畫,並檢查您的組態是否有語法錯誤。 在 Schematics 工作頁面中,您可以檢視日誌檔中的錯誤,以及 IBM Cloud 資源,這些資源必須建立、修改或刪除,才能達到 Terraform 模版的正確狀態。
-
輸入所有變數值,並對變更感到滿意後,按一下套用計劃以執行基礎結構程式碼。
此步驟需耗費一定時間完成(通常為20至30分鐘,但可能更長),因其涉及建立新的 Kubernetes 或 OpenShift 叢集。
-
在 Schematics 工作頁面上,您可以透過展開工作名稱來檢視記錄。
-
套用計劃後,檢視 URL 到已產生的 IBM Cloud DevSecOps CI 工具鏈。 URL 位於日誌檔接近尾端,以
View the toolchain at:開頭的一行。
若再次套用您的計畫,先前建立的 Kubernetes 或 OpenShift 叢集及其部署的任何應用程式將被刪除,並建立新的叢集。 但是,如果您覆寫預設群集名稱,則會使用該群集。
部署應用程式
按照以下步驟執行管道。
- 前往您新建立的 DevSecOps CI 工具鏈。
- 按一下 Git 以
compliance-app開頭的磁磚。 - 若要啟動 pr-pipeline,請更新
README.md檔案中的某些文字,然後針對main分支啟動 PR。 - 在目標分支欄位中,將分支名稱從
main改為其他名稱。 例如,mybranch。 - 確保已選取「啟動包含這些變更的新合併請求」核取方塊。
- 按一下「確認變更」。
- 選用。 在「新合併請求」頁面,新增說明。
- 按一下建立合併請求。
ci-toolchain 中的 pr-pipeline 已被觸發。 完成這些步驟,確認管道正在執行:
-
回到您的 CI 工具鏈,然後按一下 Delivery Pipeline 您的
pr-pipeline的磁磚。 在 pr-pipeline Dashboard 頁面上,您可以看到 pr-pipeline 正在執行。 -
若要檢視進度,請按一下
pr-pipeline連結。
圖 1. pr-pipeline Dashboard
附註:
-
如果發現任何漏洞,那麼 code-pr-finish 步驟就會失敗。
-
若要找出漏洞,請前往
code-unit-tests>run-stage檢視日誌。(截圖) -
解決漏洞,然後啟動 pr-pipeline。
-
回到應用程式 repo 磁磚。
-
在導覽窗格中,按一下合併請求。
-
選擇 PR。
-
選用。 按一下 Approve 按鈕 (如果沒有,您會在 ci-pipeline 執行結束時看到錯誤)。
-
選擇「刪除來源分支」
-
按一下合併。
合併此 PR 會自動觸發 ci-pipeline。 若要驗證,請回到工具鏈中的 ci-pipeline 磁磚,並驗證管道是否正在執行。 按一下管道連結查看進度。
此步驟將應用程式部署到新建立的群集。 應用程式 URL 可在 ci-pipeline 的 deploy-dev > run-stage 步驟的記錄檔底部找到。
下一步
繼續 下一教學的「探索您的 CI 工具鏈」部分,並執行 CI-PR 和 CI 管道。 然後,繼續完成該教學中餘下的步驟,以部署安全的應用程式。
任何時候,您都可以按一下功能表圖示 ,然後選擇 Resource list(資源清單 ),以檢視使用本教學建立的所有資源。 您可以查看 Schematics 工作區、群集、IBM Cloud Object Storage 實例、Secrets Manager 服務、持續交付服務和工具鏈。