使用以下工具設定 Tekton 持續整合管道 DevSecOps

透過本教學課程,您可以設定 Tekton 持續整合 (CI) 管道並建立合規性的工具鏈。

開始之前

(*) Kubernetes 集群:僅在設定過程中需要 - 可在建立工具鏈後變更。 不一定要建立專用群集,尤其是使用不同的部署目標 (如 CodeEngine )。 您可以輸入 IBM Cloud API 金鑰,該金鑰能夠存取任何群集。

CI 管道使用 GaraSign 代碼簽署服務來簽署需要註冊和登入的建立工件。 GaraSign 使用內部 網路。IBM 可在 IBM 內存取此網路的共用工作人員擁有網路存取權。 IBM 可使用可存取 內部網路的共用工作者。9.X

  • 觀看以下視訊:

啟動 CI 工具鏈設置

這Continuous Delivery服務提供的範本可引導您完成工具鏈設定並以邏輯順序建立流程。 進度指示器顯示完成配置的步驟。 請依照下列步驟存取 CI 工具鏈的範本。

  1. 在IBM Cloud控制台中,點選選單圖示選單圖示>平台自動化>工具鏈
  2. 在工具鏈頁面上,按一下建立工具鏈
  3. 請參閱「基礎架構即代碼」。
  4. 點選 CI - 開發安全基礎設施即程式碼DevSecOps實踐瓦。

設定 CI 工具鏈設置

歡迎頁面總結了工具鏈的用途以及文件和相關材料的指針。

  1. 按一下啟動

  2. 進入一個工具鏈名稱在同一區域和資源組的工具鏈中IBM Cloud。

  3. 選擇地區 從下拉式清單中。

  4. 請從下拉式清單中選取一個資源群組

  5. 按一下繼續

    只有噹噹前步驟的配置完成且有效後,才能進入下一步。 您可以隨時點擊後退查看引導安裝程式中的先前步驟。 工具鏈安裝程式保留後續步驟中的所有設定設定。

    一些步驟包括切換到進階配置切換按鈕。 預設情況下,這些步驟為您提供最低配置。 但是,需要更細粒度控制的進階使用者可以點擊切換到進階配置切換以顯示底層整合的選項。

設定 CI 工具集成

檢查預設設定並在必要時提供使用者定義的配置以設定 CI 工具整合。 在設定過程中配置多個儲存庫。 您可以克隆範例儲存庫,也可以使用自己的儲存庫,但工具鏈僅支援連結到現有的Git Repos and Issue Tracking儲存庫。

應用程式

檢閱工具鏈設定的預設資訊:

  1. 您可以接受模板中提供的預設配置。
  2. 點擊「繼續

庫存

庫存儲存庫記錄 CI 工具鏈建置的工件的詳細資訊。

  1. 您可以接受模板中提供的預設配置。
  2. 按一下繼續

問題

問題儲存庫記錄 CI 管道運行時發現的問題。

  1. 您可以接受模板中提供的預設配置。
  2. 點擊「繼續

密碼

此工具鏈中的多個工具(可能還有您的可自訂腳本中)需要金鑰才能存取特權資源。 一個IBM Cloud API 金鑰就是此類秘密的範例。 將這些機密安全地儲存在機密管理工具中,例如 IBM Key Protect for IBM Cloud, IBM Cloud® Secrets ManagerHashiCorp Vault. 這 秘密管理工具 可以整合到工具鏈中,以便您可以輕鬆引用 Tekton 管道中的機密。

  1. 本教學使用IBM Cloud® Secrets Manager作為秘密的金庫。 這地區,資源組,和服務名稱欄位會根據可用選項自動填入。 按一下下拉指示器可查看其他選項。
  2. 輸入你的 Secrets Manager實例名稱
  3. 請從下拉式清單中選擇授權類型
  4. 按一下繼續

證據存儲

證據儲存庫儲存由證據產生的所有證據和工件DevSecOpsCI 管道。

  1. 切換IBM Cloud Object Storage存儲桶滑塊將所有證據存儲在IBM Cloud Object Storage可以在下一頁配置的儲存桶。
  2. 接受預設設定。
  3. 按一下繼續

雲Object Storage桶

您必須有 IBM Cloud Object Storage 的實例 和一個 水桶,才能作為合規證據櫃來使用。

  1. 雲Object Storage實例,桶名稱,和雲Object Storage終點欄位會自動填入。
  2. 輸入您的服務 ID API 金鑰
    • 首選:可以透過點選金鑰圖示從機密庫匯入現有金鑰。
    • 可以複製和貼上現有密鑰。
  3. 按一下繼續

「端點」欄位為選填項目。 建議在工具鏈設定期間或管道運作期間選擇或提供端點。

部署

配置庫存目標並Kubernetes部署應用程式的叢集:

  1. 預設應用程式名稱hello-compliance-app

  2. 輸入你的 IBM Cloud API金鑰。 API 金鑰用於與IBM Cloud CLI 工具可用於多個任務。

    • 首選:可以透過點選金鑰圖示從機密庫匯入現有金鑰。
    • 可以複製和貼上現有密鑰。
    • 可以透過點擊從此處建立新密鑰新+

    新產生的 API 金鑰可以立即儲存到機密庫中。

  3. 如果 API 金鑰有效且具有足夠的存取權限,則 Container Registry,Container Registry名稱空間,開發集群區域,資源組,叢集名稱,叢集命名空間會自動填充。 您可以更改這些欄位中的任何一個以符合您的配置。

  4. 按一下繼續

構件簽署

這些工件由工具鏈建置並記錄在清單中,並且必須在部署到生產之前進行簽署。 管道使用 Skopeo作為提供工件簽名功能的預設工具。 您可以使用現有的 GPG 金鑰或建立新的 GPG 金鑰對

  1. 輸入 GnuPG私鑰。 或者,您可以透過點擊建立新的 GPG 金鑰新的。 有關更多信息,請參閱 產生 GPG 金鑰
  2. 按一下繼續

DevOps Insights

IBM Cloud DevOps Insights 包含在工具鏈中。 查看每個部署和環境中每個建置的管道測試結果。

  1. 接受預設配置。
  2. 按一下繼續

選用工具

Slack

配置 鬆弛 接收有關拉取請求或 CI 管道事件的通知。 您也可以在建立工具鏈後新增 Slack 工具。

  1. 請輸入您的 Slack Webhook。 有關更多信息,請參閱 Slack webhook
  2. 輸入您的鬆弛通道發布訊息。
  3. 輸入鬆弛團隊名稱。 例如,如果您的團隊網址為 URL https://team.slack.com,則團隊名稱即為 team
  4. 選擇您想要接收通知的事件自動 Slack 通知
  5. 按一下繼續

常見的DevOps Insights工具鏈

DevOps Insights可以選擇將其包含在創建的工具鏈中,並在發布每個合規性檢查證據後。 此工具鏈可以使用現有的DevOps Insights執行個體將部署記錄發佈到見解。 你可以連結DevOps Insights透過提供整合 ID 從另一個工具鏈進行整合。

  1. 接受目前工具鏈
  2. 按一下繼續

您可以從工具鏈的 URL 複製工具鏈 ID。 工具鏈的 URL 遵循以下模式:https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south. 如果 URL 是:https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south,則工具鏈的 ID 是:aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. 只包含 ID,不包含完整的 URL。

您也可以設定目標環境DevOps Insights互動。 此參數是可選的,用於取代清單中的目標環境。

DevOps Insights

您可以建立一個實例DevOps Insights用於工具鏈。 如果不需要配置,CI 管道會自動使用工具鏈中包含的見解實例。

輸送管道私人工人

由工具鏈建立並記錄在庫中的工件必須使用 GaraSign, 來簽署,這是由 Garantir 提供的程式碼簽署服務,之後才能將映像部署到生產中。 若要啟用 GaraSign 工件簽署,您必須擁有 TaaS 私人工作者和 IBM CISO 簽署憑證。

Delivery Pipeline私人工人 工具整合與一個或多個可以獨立運行交付管道工作負載的私有工作人員連接。

SonarQube

配置SonarQube作為工具鏈的靜態程式碼分析工具。 SonarQube 提供原始碼整體性能及品質的概觀,並強調顯示在新程式碼中找到的問題。 靜態程式碼分析工具能偵測多種程式語言中的棘手錯誤,例如空指標解參照、邏輯錯誤及資源洩漏。

  1. 接受預設設定
  2. 按一下繼續

建立 CI 工具鏈

  1. 在「摘要」頁面上,按一下「建立」。
  2. 等待工具鏈創建。 這可能需要幾分鐘。

探索 CI 工具鏈

現在,CD 工具鏈已使用兩個管道創建,如螢幕截圖所示。 點選 ci-pipeline 打開並運行促銷管道。

DevSecOps持續整合工具鏈
DevSecOps 持續整合工具鏈

運行 PR-CI 管道

要開始 ci-pr pipeline,您需要在應用程式儲存庫中建立合併請求。

  1. 在 CI 工具鏈頁面中,按一下 pr pipeline 瓦。 預設情況下,它是使用名稱建立的 compliance-app-<timestamp>

  2. 從 master 分支建立一個分支。

  3. 更新應用程式中的程式碼或新增自述文件,然後儲存變更。

  4. 提交合併請求

  5. 在 CI 工具鏈頁面上,按一下 pr-管道瓦。 驗證 ci-pr pipeline 由合併請求的建立觸發。

  6. 請等待「ci-pr pipeline」的執行完成。 應用程式儲存庫中對應的合併請求位於 Pending 狀態直到 PR 管道的所有階段成功完成。

  7. PR 管道運行成功後,點擊管道可瀏覽已完成的眾多步驟並查看頁面。 若要編輯並重新提交合併請求,請依照步驟 3 至步驟 7 進行操作。

    DevSecOps PR 管道成功
    DevSecOps PR 管道成功

簡化管道中的任務流程

在裡面DevSecOpsPR管道流程任務、實用任務皆省略。 例如,狀態檢查更新GitHub,憑證獲取等。 在裡面DevSecOps世界上,左移是一種預防和發現缺陷、安全漏洞等問題的做法。 如圖所示,左移還在軟體交付過程的早期執行合規性檢查。

DevSecOps PR 任務
DevSecOps PR 任務

  • 可以在程式碼/儲存庫上運行並且不需要建置的檢查。 應儘早運行該工件,以防止不合規的程式碼合併到儲存庫的主分支。 證據不是從公關管道收集的。 此管道的目標是將合規性檢查轉移到盡可能靠左的位置。
  • 所有檢查均在管道運作時完成。 即使前一項檢查失敗,管道也會繼續下一項檢查。 若要評估運作中是否出現任何故障,您需要檢查管道的最後一步,該步驟具有管道評估器。
  • 如果您嘗試合併緊急修復程序,並希望繞過合規性檢查。 向合併請求新增標籤以指示修復。 運行 CD 管道時必須提供相同的標籤。

運行 PR 管道

您可以透過以下任一種方式啟動 CI 管道:

  • 自動:在 PR 管道成功後,透過批准 PR 並將其合併到主分支。
  • 手動:若要手動觸發 CI 管道,請選擇交付管道卡,按一下運行管道,然後選擇手動觸發

在本教程中,將程式碼變更合併到應用程式儲存庫的主分支後,會觸發 CI 管道。

  1. CI工具鏈頁面,點擊 ci管道瓦。
  2. 點選跑步針對您的管道名稱。 觀察管道正在運作。 請等待管線執行程序完成。
  3. CI 管道運行成功後,請按一下管道以瀏覽已完成的步驟以查看螢幕截圖中所示的頁面。

運行 CI 管道

在本文檔中,在將程式碼變更合併到應用程式儲存庫的主分支後,會觸發 CI 管道。

  1. 在 CI 工具鏈頁面上,按一下 ci管道瓦。
  2. 觀察:管道運作正在運作。 請等待管線執行程序完成。

CI 管道運行成功後,您可以點擊管道任務來探索已完成的步驟。

DevSecOps CI 管道成功
DevSecOps CI 管道成功

簡化管道中的任務流程

在裡面DevSecOpsCI管道任務流程,實用任務省略。 例如,狀態檢查更新GitHub,憑證獲取等。 綠色任務正在輸出證據。

DevSecOps持續整合任務
5. 數位DevSecOps持續整合任務

從 CI 管道中的所有合規性檢查中收集證據,並將其儲存到工具鏈設定期間提供的證據鎖定儲存庫中。 CI 的證據儲存在 raw/ci/<pipeline-run-id>/*.json

證據已發布至DevOps Insights工具鏈內的實例。 您可以透過點擊導航DevOps Insights工具鏈中的工具卡。 您可以在品質儀表板頁面上查看收集的證據。

DevSecOps CI 證據
DevSecOps CI 證據

若要評估管道運作中是否有任何故障,您必須檢查管道的最後一步,該步驟具有管道評估器。

查看正在運行的應用程式

CI 管道成功運行後,範例應用程式將部署在您的Kubernetes集群,並且在 dev 命名空間中運行。

應用程式 URL 可在 CI 管道執行的 deploy-dev 任務的 run stage 步驟中的日誌末尾找到。 使用 URL 來驗證應用程式是否正在執行。

DevSecOps CI 範例應用程式
DevSecOps CI 範例應用程式

配置管道

要添加一個 commit-id 文字屬性。

  1. 按一下新增內容
  2. 選取文字內容

如果您手動觸發管道而沒有 commit-id,管道從應用程式的 master 分支獲取最新的提交 ID。

範例

提交 ID

新增觸發參數。

  1. 點選運行管道
  2. 選擇手動觸發
  3. 按一下執行