設定您的 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 工作區的變數部分找到預設值。 建立下列資源:

開始之前

建立 Schematics 工作區

  1. 按一下群集部署目標的下列選項之一。 此動作會帶您到部署到 IBM Cloud 頁面,您可在此建立 Schematics 工作區。 完成該頁面的必填欄位,然後按一下下一步。

    部署到 Kubernetes 上 IBM Cloud

    部署至 OpenShift on IBM Cloud

    根據您選擇的選項,此儲存庫中的對應Terraform範本將自動匯入至新的 Schematics 工作區。

  2. 確認資訊,然後按一下建立。 Schematics 工作區已建立,並顯示 Schematics 工作區的「設定」頁面。

套用 Terraform 執行計畫

  1. 在 Schematics Settings( 設定)頁面的 Variables(變數 )區段中,輸入每個變數的值。 必填欄位沒有預設值。 您可以覆寫預設值。

    如果覆寫 sm_service_name 值,Terraform 執行計劃會使用現有資源,而不是建立新資源。

  2. gitlab_token 變數,輸入之前取得的個人存取權限。

  3. 在 ibmcloud_api_key 變數中,輸入之前取得的 IBM Cloud API 金鑰。

  4. 對於 registry_namespace 變數,請輸入容器註冊表命名空間值。 若要建立命名空間,請參閱 Container Registry 命名空間。

  5. 對於 kube_version 變數,在命令列上執行:ibmcloud ks versions,即可查看可用版本。

  6. 選用。 如果您已經有 Secrets Manager 範例,請輸入它的名稱作為 sm_service_name 變數。 否則,請勿變更此變數。

  7. 選用。 如果您要調整群集的大小或位置,您可以覆寫下列變數:datacenter, default_pool_size, machine_type, hardware, public_vlan_num,或 private_vlan_num (預設值為 dal12/us-south 資料中心)。

  8. 選用。 按一下產生計劃。 此動作會建立 Terraform 執行計畫,並檢查您的組態是否有語法錯誤。 在 Schematics 工作頁面中,您可以檢視日誌檔中的錯誤,以及 IBM Cloud 資源,這些資源必須建立、修改或刪除,才能達到 Terraform 模版的正確狀態。

  9. 輸入所有變數值,並對變更感到滿意後,按一下套用計劃以執行基礎結構程式碼。

    此步驟需耗費一定時間完成(通常為20至30分鐘,但可能更長),因其涉及建立新的 Kubernetes 或 OpenShift 叢集。

  10. 在 Schematics 工作頁面上,您可以透過展開工作名稱來檢視記錄。

  11. 套用計劃後,檢視 URL 到已產生的 IBM Cloud DevSecOps CI 工具鏈。 URL 位於日誌檔接近尾端,以 View the toolchain at: 開頭的一行。

若再次套用您的計畫,先前建立的 Kubernetes 或 OpenShift 叢集及其部署的任何應用程式將被刪除,並建立新的叢集。 但是,如果您覆寫預設群集名稱,則會使用該群集。

部署應用程式

按照以下步驟執行管道。

  1. 前往您新建立的 DevSecOps CI 工具鏈。
  2. 按一下 Git 以 compliance-app 開頭的磁磚。
  3. 若要啟動 pr-pipeline,請更新 README.md 檔案中的某些文字,然後針對 main 分支啟動 PR。
  4. 在目標分支欄位中,將分支名稱從 main 改為其他名稱。 例如,mybranch。
  5. 確保已選取「啟動包含這些變更的新合併請求」核取方塊。
  6. 按一下「確認變更」。
  7. 選用。 在「新合併請求」頁面,新增說明。
  8. 按一下建立合併請求。

ci-toolchain 中的 pr-pipeline 已被觸發。 完成這些步驟,確認管道正在執行:

  1. 回到您的 CI 工具鏈,然後按一下 Delivery Pipeline 您的 pr-pipeline 的磁磚。 在 pr-pipeline Dashboard 頁面上,您可以看到 pr-pipeline 正在執行。

  2. 若要檢視進度,請按一下 pr-pipeline 連結。

    pr-pipeline
    圖 1. pr-pipeline Dashboard

附註:

  1. 如果發現任何漏洞,那麼 code-pr-finish 步驟就會失敗。

  2. 若要找出漏洞,請前往 code-unit-tests > run-stage 檢視日誌。(截圖)

  3. 解決漏洞,然後啟動 pr-pipeline。

  4. 回到應用程式 repo 磁磚。

  5. 在導覽窗格中,按一下合併請求。

  6. 選擇 PR。

  7. 選用。 按一下 Approve 按鈕 (如果沒有,您會在 ci-pipeline 執行結束時看到錯誤)。

  8. 選擇「刪除來源分支」

  9. 按一下合併。

合併此 PR 會自動觸發 ci-pipeline。 若要驗證,請回到工具鏈中的 ci-pipeline 磁磚,並驗證管道是否正在執行。 按一下管道連結查看進度。

此步驟將應用程式部署到新建立的群集。 應用程式 URL 可在 ci-pipeline 的 deploy-dev > run-stage 步驟的記錄檔底部找到。

下一步

繼續 下一教學的「探索您的 CI 工具鏈」部分,並執行 CI-PR 和 CI 管道。 然後,繼續完成該教學中餘下的步驟,以部署安全的應用程式。

任何時候,您都可以按一下功能表圖示 Menu 圖示,然後選擇 Resource list(資源清單 ),以檢視使用本教學建立的所有資源。 您可以查看 Schematics 工作區、群集、IBM Cloud Object Storage 實例、Secrets Manager 服務、持續交付服務和工具鏈。