IBM Cloud Docs
使用 DevSecOps 設定 Tekton 連續部署管線

使用 DevSecOps 設定 Tekton 連續部署管線

請完成下列步驟,以設定符合標準的 Tekton 連續部署管線。 配置選項會引導您完成建立工具鏈的步驟。

開始之前

CD 工具鏈的引導式設定概觀

檢視下列視訊指導教學,以取得設定處理程序的概觀:

圖 1 中的進度指示器會引導您完成工具鏈配置。 如果您需要回到前一個步驟,您可以使用進度指示器來導覽至前一個步驟。

DevSecOps 連續部署工具鏈歡迎使用頁面
圖 1. DevSecOps 連續部署工具鏈歡迎使用頁面

現行步驟的配置選項會顯示在頁面的主要區域中。

若要進入下一步,請按一下 繼續。 只有在現行步驟的配置完成且有效時,您才能進入下一步。 您可以按 上一步來導覽至前一個步驟。

部分步驟可能具有 切換至進階配置 切換。 這些步驟為您提供最低建議配置。 不過,需要細部控制的進階使用者可以按一下 切換至進階配置 切換,以查看基礎整合的所有選項。

DevSecOps 進階配置切換
圖 2. DevSec進階配置切換

順利完成所有步驟之後,請按一下 建立 以建立工具鏈。

您可以回到引導式安裝程式中的先前步驟。 工具鏈安裝程式會保留您已完成的所有配置。

啟動 CD 工具鏈設定

使用下列其中一個選項來啟動 CD 工具鏈配置:

  • 按一下 建立工具鏈

    建立工具鏈

  • 從 IBM Cloud 主控台,按一下 功能表 「功能表」圖示,然後選取 DevOps。 在「工具鏈」頁面上,按一下 建立工具鏈。 在「建立工具鏈」頁面上,按一下 CD-使用 DevSecOps 實務進行開發

設定工具鏈名稱及地區

DevSecOps CD 工具鏈名稱及地區
圖 3. DevSecOps CD 工具鏈名稱及地區

檢閱工具鏈設定的預設資訊。 工具鏈的名稱會在 IBM Cloud中識別它。 請確定工具鏈的名稱在 IBM Cloud中相同地區及資源群組的工具鏈內是唯一的。

工具鏈地區可能與叢集及登錄地區不同。

設定 CD 工具整合

本節涵蓋 CD 工具鏈使用的各種工具及服務整合的設定。 本節可能不會遵循 IBM Cloud 安裝程式想要您設定這些工具的順序。

如果您已使用 CI 管線工具鏈範本 來設定 CI 處理程序,請參閱 CI 工具鏈,並複製該工具鏈中使用的儲存庫名稱。

如果您想要從頭開始設定 CI 工具鏈,請在 CI 工具鏈建立期間配置這些儲存庫,然後在這裡使用它們。

應用程式相關儲存庫

  • 庫存: 在這個儲存庫中追蹤變更管理。 每一個成功的 CI 管線執行 CD 管線都會建立一個新的分支,命名為所建立的 CR 號碼,並在部署完成之後將它合併至主要。 例如: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory

  • 問題: 在建置和部署程序期間發生的突發事件問題會儲存在這裡。 例如: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues

  • 證明: 在這裡收集屬於應用程式的所有原始相符性證明。 例如: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence

  • 工具鏈: tekton 管線定義 (例如管線、觸發程式及接聽器) 儲存在此儲存庫中。 例如: https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain

從 Continuous Integration 工具鏈擷取儲存庫名稱之後,請繼續進行 Guided Setup,以開始建立連續部署工具鏈。 在設定處理程序期間,對於每一個儲存庫,您可以提供為 CI 工具鏈建立之現有 IBM管理的 Git Repos and Issue Tracking 儲存庫的 URL,或選擇建立新的儲存庫。 目前,工具鏈僅支援建立 Git Repos and Issue Tracking 儲存庫。 未來版本支援使用 GitHub、GitHub Enterprise (GHE) 及其他「SCM 提供者」來建立儲存庫。

庫存

工具鏈的預設行為是 使用現有庫存,以鏈結工具鏈的現有庫存儲存庫。 如前所述,工具鏈目前僅支援鏈結至現有 Git Repos and Issue Tracking 儲存庫。

DevSecOps 庫存儲存庫
圖 4. DevSec

問題

工具鏈的預設行為是 使用現有問題儲存庫,以鏈結工具鏈的現有問題儲存庫。 如前所述,工具鏈目前僅支援鏈結至現有 Git Repos and Issue Tracking 儲存庫。

DevSec發出儲存庫
圖 5. DevSecOps 問題儲存庫

管線配置

儲存庫包含自訂 Script,可在 CD Pipeline (.pipeline-config.yaml) 中執行管線作業。請參閱 hello-compliance-deployment 範例儲存庫,其中包含一些預設配置和 Script。

依預設,會從範例儲存庫設定 複製部署配置。 複製儲存庫時,您可以自訂管線執行的配置和 Script。

  • 新儲存庫名稱: 工具鏈建立作為部署配置儲存庫的 IBM所管理 Git Repos and Issue Tracking 儲存庫的名稱。 儲存庫的區域與工具鏈的區域仍然相同。 選擇新儲存庫的唯一名稱。

如果您具有來自現有連續部署工具鏈的部署配置儲存庫,請選取 切換至進階配置,以針對此管線配置相同的設定。

DevSecOps 管線配置
圖 6. DevSecOps 管線配置

密碼

此工具鏈中的數個工具需要密鑰才能存取特許資源。 IBM Cloud API 金鑰是此類密碼的範例。 所有密鑰都必須安全地儲存在密鑰儲存庫中,然後在工具鏈需要時參照。

使用 IBM Cloud,您可以選擇各種密鑰管理及資料保護供應項目,以協助您保護機密資料並集中化密鑰。 「密鑰」步驟指定將哪些密鑰儲存庫整合新增至工具鏈。 如 管理 IBM Cloud 密碼 中所述,使用提供的切換來新增或移除您需要的儲存庫整合。 本文件為您提供必備項目以及如何使用指定密鑰名稱清單 (也稱為提示) 的相關資訊。 透過使用範本中的提示,工具鏈可以自動移入預先配置的密鑰,而無需從連接至工具鏈的各種儲存庫整合中手動選取它們。

本文件使用 IBM Secrets Manager 作為密鑰的儲存庫。

DevSecOps 密碼選項
圖 7. DevSecOps 密碼選項

IBM Key Protect

使用 Key Protect 來安全地儲存並套用密鑰,例如屬於工具鏈一部分的 API 金鑰、映像檔簽章或 HashiCorp Vault 認證。 您必須先建立 Key Protect 服務實例,然後再進一步進行。 如果您已建立 Key Protect 服務實例,則可以在此步驟中鏈結相同的實例。

Key Protect
圖 8. Key Protect

  • 名稱: 工具鏈所建立 Key Protect 實例的名稱。 在工具鏈設定的各個階段期間,可以透過此名稱來存取此金鑰保護實例。
  • 地區: Key Protect 服務所在的地區。
  • 資源群組: Key Protect 服務所屬的資源群組。
  • 服務名稱: Key Protect 服務名稱。

為了符合使用 HashiCorp Vault 的最佳作法,此範本包括 Key Protect 工具整合,以安全地管理 HashiCorp Vault Role IDSecret ID。 透過將這些 HashiCorp Vault 密碼儲存在 Key Protect 中作為使用者建立工具鏈的必要條件,您可以保護對 HashiCorp Vault 的存取權,這是大部分消費者的預設密碼儲存庫。

IBM Cloud Secrets Manager

使用 Secrets Manager 來安全地儲存及套用密鑰,例如屬於工具鏈的 API 金鑰、映像檔簽章或 HashiCorp Vault 認證。 您必須先建立「Secrets Manager 服務實例」,然後再進一步進行。 如果您已建立「Secrets Manager 服務實例」作為必備項目,則可以在此步驟中鏈結相同的實例。

DevSecOps 密碼管理程式
圖 9. DevSecOps 密碼管理程式

  • 名稱: 工具鏈所建立 Secrets Manager 實例的名稱。 在工具鏈設定的不同階段期間,此 Secrets Manager 實例可以透過此名稱進行存取。
  • 區域: Secrets Manager 服務所在的區域。
  • 資源群組: Secrets Manager 服務所屬的資源群組。
  • 服務名稱: Secrets Manager 服務名稱。

HashiCorp Vault

使用 HashiCorp Vault 可安全地儲存工具鏈所需的密碼。 密碼範例是 API 金鑰、密碼或任何其他記號,可讓您存取機密性資訊。 您的工具鏈會儲存 HashiCorp Vault 密鑰的參照,而不是啟用進階功能 (例如密鑰輪替) 的文字密鑰值。

HashiCorp Vault
圖 10. HashiCorp Vault

  • 名稱: 此工具整合的名稱。 此名稱會顯示在工具鏈中。
  • 伺服器 URL: HashiCorp Vault 實例的伺服器 URL。 (例如,https://192.168.0.100:8200)
  • 整合 URL: 當您按一下 HashiCorp Vault Integration 磚時要導覽至的 URL。
  • 密鑰路徑: 密鑰儲存在 HashiCorp Vault 實例中的裝載路徑。
  • 鑑別方法: HashiCorp 儲存庫實例的鑑別方法。
  • 角色 ID: 您團隊的 AppRole 角色 ID
  • 密鑰 ID: 您團隊的 密鑰 ID

您可以使用 AppRole 鑑別方法來讀取密鑰值。

證明儲存體

會在此儲存庫中收集屬於應用程式的所有原始相符性證明。 此儲存庫選項僅用於評估目的。

工具鏈的預設行為是 使用現有證明櫃儲存庫 URL 欄位可以設為針對 CI 工具鏈建立/使用的「證明儲存庫 URL」。 如果您想要建立工具鏈的「證明 Docker」,請選擇 建立新的證明櫃儲存庫,這會將新的儲存庫建立為 IBM管理的 Git Repos and Issue Tracking 儲存庫。

不過,您應該收集並儲存 Cloud Object Storage 儲存區中的所有證明,如 Cloud Object Storage 儲存區 中所述進行配置。

DevSecOps 證明儲存
圖 11. DevSec

證明

雲端物件儲存體儲存區

Cloud Object Storage 儲存區切換
圖 12. COS 儲存區切換

Cloud Object Storage 用來儲存「合規管線」所產生的證明及構件。 如果您想要使用此特性,則必須具有 Cloud Object Storage 實例及「儲存區」。 如需相關資訊,請遵循 這裡 的步驟。

您可以將任何類型的 Cloud Object Storage 儲存區設為鎖定器,即使沒有保留原則也一樣。 管線目前不會檢查或施行設定。

如需說明,請參閱 Cloud Object Storage 說明文件

您需要提供下列資訊,管線才能到達儲存區:

  • Cloud Object Storage 端點
  • 儲存區名稱
  • 服務 API 金鑰

您可以稍後提供必要的 cos-bucket-namecos-endpoint,來設定 Cloud Object Storage 鎖定器。

若要取得 Cloud Object Storage 端點,請跳至 Cloud Object Storage 實例的頁面,並選取功能表中的 端點 區段。 複製符合儲存區 地區備援的公用、優先或直接端點。

DevSecOps Cloud Object Storage 端點功能表
圖 13. DevSecOps Cloud Object Storage 端點功能表

如果您決定不使用 Cloud Object Storage 作為證明櫃,則也可以在建立工具鏈之後,透過在「CI 管線」中設定 cos-bucket-namecos-endpoint 環境變數來設定必要值。

「管線儲存庫」包含 CI 及 CD 工具鏈的配置,因此可以在兩個工具鏈之間保持共用。 如果您想要對 CD 工具鏈 Tekton 定義使用個別管線定義,請使用 切換至進階配置 切換開關來複製儲存庫。

DevSecOps Tekton 管線
圖 14. DevSecOps Tekton 管線

部署

配置應用程式部署所在的目標 Kubernetes 叢集。 選擇您想要用作正式作業或暫置環境的目標 Kubernetes 叢集。 工具鏈會將建置應用程式映像檔部署至叢集,並執行驗收測試及其他相符性檢查。

IBM Cloud API 金鑰

API 金鑰用於在數個作業中與 ibmcloud CLI 工具互動。 如果您已建立叢集、用來存取叢集並將金鑰儲存在安全儲存庫中的 API (任何 Key Protect、Secrets Manager或 HashiCorp Vault),則您可以在此步驟中使用相同的必要條件。

- Option-1: An existing key can be imported from an existing Secret Provider intance created as prerequisites (Key Protect Instance, Secret Manager Instance or HashiCorp Vault) by clicking the key icon (Recommended)
- Option-2: An existing key can be copy & pasted (Not Recommended)
- Option-3: A new key can be created from here by clicking **New +**. Generate a new api-key if you don’t have one or copy an existing key to the field.The newly generated API key can be immediately saved to an existing Key Protect instance

按一下 金鑰 圖示,以使用「密鑰提供者」中的現有金鑰。

  • 提供者: 儲存 API 金鑰以存取叢集的「密鑰提供者」,如先前鏈結至工具鏈。 它可以是 Key Protect 實例、Secret Manager 實例或 HashiCorp Vault 實例。
  • 資源群組: Secrets Manager 提供者所屬的資源群組。
  • 密鑰名稱: 密鑰 (即 API 金鑰) 的名稱或別名。

填寫「API 金鑰」欄位時,會自動填寫登錄及叢集相關欄位。

DevSecOps Tekton 管線
圖 15. DevSecOps Tekton 管線

庫存目標和來源分支

  • 庫存來源環境: 您要從中升級應用程式的環境。 預設值: master

  • 庫存目標環境: 您要將應用程式部署至其中的環境。 預設值: prod

  • 目標區域: 應用程式部署至其中的目標區域 (選用)

  • 變更要求採購申請及問題的緊急標籤: 要用於緊急部署的變更要求上的標籤

變更要求管理

您可以選取 IBM Cloud 代管 Git Repos and Issue Tracking 儲存庫來管理變更要求。

變更要求
圖 16. 變更要求

Git Repos and Issue Tracking

  • 新儲存庫名稱: 要用於「變更要求管理」的 Git Repos and Issue Tracking 儲存庫名稱。

工具鏈的預設行為是 使用預設 Git Repos and Issue Tracking 變更要求管理儲存庫,以將新的「變更要求管理儲存庫」建立為 IBM管理的 Git Repos and Issue Tracking 儲存庫。 選擇新儲存庫的唯一名稱。

如果您有來自現有「CD 工具鏈」的現有「變更要求」儲存庫,請使用 切換至進階配置 切換來配置此管線的相同配置。

變更要求管理
圖 17. 變更要求管理

鏈結至現有的 DevOps Insights 工具鏈

在建立 CI 工具鏈期間,我們已建立 DevOps Insights 的實例。 同樣需要在 CD 工具鏈中參照。 在將每一個合規檢查證明發佈至其中之後,工具鏈會將部署記錄發佈至 DevOps 見解。 您可以從 CI 工具鏈鏈鏈鏈結 DevOps Insights 整合,方法是提供「整合 ID」,以在單一 DevOps Insight 實例中合併所有部署資料。

您可以從工具鏈的 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。

您也可以設定 DOI 互動的目標環境。 這是選用參數。 如果您提供此參數,則會使用它來取代庫存中的目標環境。

DevSec DevOps Insights 工具鏈
圖 18. DevSecOps DevOps Insights 工具鏈

選用工具

Slack

如果您想要接收 CD Pipeline 事件的相關通知,則可以在設定期間從工具鏈範本配置「Slack 工具」,也可以稍後新增「Slack 工具」。

若要讓 Slack 頻道接收來自工具的通知,您需要 Slack Webhook URL。 若要取得 Webhook URL,請參閱 Slack API 網站 的「送入 Webhook」區段。

DevSecOps Slack
圖 19. DevSecSlack

建立工具鏈之後,您可以使用 CD Pipeline 中的 slack-notifications Environment Property 來切換傳送通知 (0 = 關閉,1 = 開啟):

DevSecOps Slack 切換
圖 20. DevSecOps Slack 切換

一般 DevOps Insights 工具鏈

DevOps Insights 可以選擇性地併入所建立的工具鏈中,並在將每一個合規檢查證明發佈至其中之後。 工具鏈可以使用現有的 DevOps Insights 實例,將部署記錄發佈至見解。 您可以從 CI 工具鏈鏈鏈鏈結 DevOps Insights 整合,方法是提供「整合 ID」,以在單一 DevOps Insight 實例中合併所有部署資料。

DOI 工具鏈 ID
圖 21. DOI 工具鏈 ID

您可以從工具鏈的 URL 複製工具鏈 ID。 工具鏈的 URL 遵循下列型樣: https://cloud.ibm.com/devops/toolchains/<toolchain-ID>?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。

您也可以設定 DOI 互動的選用目標環境。 如果您提供此參數,則會使用它來取代庫存中的目標環境。

DevOps Insights

如果您要建立 DevOps Insights 的新實例以用於工具鏈,請使用此選項。 如果選取此選項,則不需要任何配置,且工具鏈會建立 DevOps Insight 的新實例。 CD 管線會自動使用工具鏈中包含的見解實例。

安全及合規性

若要將工具鏈與「安全及相符性服務」整合,您需要為「安全及相符性」資料收集器提供名稱及證明櫃儲存庫名稱。

DevSec安全與合規
圖 22. DevSec營運安全與合規

閱讀 Security and Compliance Center工具整合 配置程序的相關資訊。

專用工作者節點

專用工作者節點
圖 24. 專用工作者節點

「Delivery Pipeline 專用工作者節點」工具整合會與一個以上可以隔離執行 Delivery Pipeline 工作量的專用工作者節點連接。 如需相關資訊,請參閱 使用專用工作者節點

建立 CD 工具鏈

按一下 建立,並等待建立工具鏈。

DevSec作業摘要頁面
圖 25. DevSec作業摘要頁面

DevSec已建立 Ops CD 工具鏈
圖 26. DevSec已建立 CD 工具鏈

您可以在建立管線之後配置個別工具鏈整合。

探索 CD 工具鏈

執行促銷活動管線

  • 在執行「升級管線」之前,請確定已順利執行「CI 管線」。
  • 「升級管線」會在「庫存來源環境」(例如: 主要) 分支上以「庫存目標環境」分支 (例如: 暫置或正式作業) 為目標,建立具有庫存內容的「取回要求」。 會建立採購申請的中間分支,在合併採購申請之後可以捨棄該分支。

DevSecOps Promotion Pipeline
圖 27 DevSecOps Promotion Pipeline

Promotion Pipeline 順利完成之後,promote 作業會提供指向「庫存儲存庫」中 Pull Request 的鏈結。 取回要求名稱的格式為 promote <Inventory Source Environment> to <Inventory Target Environment>

  1. 使用日誌中提供的鏈結,在瀏覽器中開啟 Pull Request。 完成下列區段中的詳細資料:
    • 優先順序: (必要)「重要」、「高」、「中」、「低」、「規劃」之一
    • 變更要求受託人: (必要) 受託人的電子郵件 ID
    • 其他說明: 應用程式中的變更相關說明
    • 目的: 對應用程式所做變更的目的
    • 影響說明: 應用程式行為或環境變更的影響
    • 取消計劃: 部署失敗時取消的步驟
  2. 完成 Pull Requestsave 中的欄位。
  3. 如果 CI 中的任何相符性檢查失敗,且您想要繼續部署,請將 EMERGENCY 標籤新增至您的 PR
  4. 從 Git Repos and Issue Tracking合併 Pull Request

在 CD 管線執行期間,「CD 管線」會使用 Pull Request 的詳細資料,在「變更要求管理」儲存庫中建立「變更要求」。

執行 CD 管線

執行促銷活動管道

  1. 在執行 Promotion Pipeline 之前,請確定「CI 管線」已順利執行。
  2. 「促銷管道」會建立 Pull Request,其中含有「庫存來源環境」(例如: master) 分支的庫存內容,目標是「庫存目標環境」分支 (例如: stagingprod)。 會建立採購申請的中間分支,在合併採購申請之後可以捨棄該分支。

執行促銷活動管線
圖 28. 執行促銷活動管線

  1. Promotion Pipeline 順利完成之後,promote 作業會提供指向「庫存儲存庫」中先前所提及 Pull Request 的鏈結。 取回要求名稱的格式如下:
promote <Inventory Source Environment> to <Inventory Target Environment>
  1. 使用日誌中提供的鏈結,在瀏覽器中開啟 Pull Request。 如下所示完成各節:

    • 優先順序: (必要)「重要」、「高」、「中」、「低」、「規劃」之一
    • 變更要求受託人: (必要) 受託人的電子郵件 ID
    • 其他說明: 應用程式中的變更相關說明
    • 目的: 對應用程式所做變更的目的
    • 影響說明: 應用程式行為或環境變更的影響
    • 取消計劃: 部署失敗時取消的步驟
  2. 完成 Pull Request 中的欄位並儲存。

  3. 從 Git Repos and Issue Tracking合併 Pull Request

在「CD 管線」執行期間,「CD 管線」會使用 Pull Request 的詳細資料,在「變更要求管理」儲存庫中建立「變更要求」。

執行 CD 管線

您可以使用下列一種方式來啟動 CD 管線:

  • 手動觸發 CD 管線。
  • 在「庫存儲存庫」中的每個 Merge 動作之後自動執行。 合併之後,您必須手動觸發 CD Pipeline 的執行。 Git Repos and Issue Tracking 觸發程式已設定為觸發自動 CD Pipeline,但依預設已停用,可在第一次升級之後啟用。

DevSecOps CD 管線手動促銷
圖 29. DevSecOps CD 管線手動升級

DevSecOps CD 管線自動升級
圖 30. DevSecOps CD 管線自動升級

您也可以隨時手動觸發 CD Pipeline,但如果自前次成功部署以來沒有任何變更,則 CD pipeline 不會部署任何新的項目。

成功的 CD 管線執行看起來如下:

DevSecOps CD 管線成功
圖 31. DevSecOps CD 管線成功

CD 管線中作業的流程:

DevSecOps CD 作業
圖 32. DevSecCD 作業

順利執行 CD 管線之後,您可以找到在正式作業名稱空間上執行的範例應用程式。 您可以在 CD Pipeline 執行的 run stage substep of prod deployment 下找到應用程式 URL。 請使用該 URL 來檢查應用程式是否在執行中。

DevSec應用程式執行中
圖 33. DevSec執行中應用程式