IBM Cloud Docs
使用部署策略在 Virtual Private Cloud 上開發及部署應用程式

使用部署策略在 Virtual Private Cloud 上開發及部署應用程式

在本指導教學中,您將學習如何使用不同的部署策略來建立開放式工具鏈。 您還將學習如何在 IBM Cloud® Continuous Delivery 服務中實作工具鏈,以及如何使用工具鏈開發並部署簡單的 Web 應用程式 (app)。

本指導教學使用使用 IBM Cloud® Virtual Private Cloud (VPC) 作為部署目標的部署策略。 本指導教學中使用的工具鏈實作標準 DevOps 作法,例如程式碼掃描、驗收測試、Git 儲存庫,以及持續整合和持續交付功能。 建立虛擬機器及工具鏈之後,您可以變更應用程式的程式碼,並將變更推送至 Git Repos and Issue Tracking 儲存庫。 當您將變更推送至儲存庫時,Tekton 型 Delivery Pipeline 會自動建置並部署程式碼。

Tekton 是一個開放程式碼、供應商中立的 Kubernetes原生架構,可用來建置、測試及部署應用程式。 Tekton 提供一組共用元件,用於建置 持續整合持續交付 系統。 作為開放程式碼專案,Tekton 由 Continuous Delivery Foundation管理。 目標是透過提供管線、工作流程及其他建置區塊的產業規格,將持續交付現代化。 使用 Tekton,您可以透過摘錄基礎實作詳細資料,在雲端提供者或內部部署系統之間建置、測試及部署。 Tekton 管線內建在 Continuous Delivery中。 如需 IBM Cloud® Kubernetes Service的相關資訊,請參閱 IBM Cloud® Kubernetes Service

本指導教學中使用的範本與一組虛擬機器的「標準」方案搭配使用。

您可以使用部署策略,以受控制的方式在正式作業環境中更新應用程式。 使用部署策略可以提供下列好處:

  • 避免應用程式關閉。
  • 啟用新功能的正式作業測試,而不影響客戶。
  • 將正式作業問題的影響限制為使用者子集。
  • 如果發現問題,則啟用快速回復至舊版。

有許多可能的部署策略可用。 一般而言,它們取決於執行多個應用程式實例,以及管理如何更新各種實例。 您可以在 Continuous Delivery中預先配置下列一般部署策略:

基本
透過同步停止並更新所有執行中實例來部署新版次,導致關閉時間。 若要回復,您必須重新部署舊版,這會導致額外的關閉時間。 雖然此策略簡單、快速且執行時期資源需求較低,但它是風險最高且導致關閉時間。 對於必須高可用性的重要應用程式,不建議使用「基本」部署策略。
漸進式更新
與「基本」策略類似,此部署策略簡單、快速且執行時期資源需求較低。 不過,因為每一個執行中的實例都會個別關閉並更新,避免關閉時間,所以回復需要您重新部署舊版。 如果正式作業中應用程式的現行版本已中斷,則這種耗時的方法可能會導致問題。
藍綠部署 (blue-green deployment)
建立兩個個別的永久正式作業環境 (藍色和綠色),其中只有一個環境一次會接收資料流量。 現行發行一律會部署至閒置環境,並在部署完成之後將資料流量切換至該環境,而沒有關閉時間。 因為您只需要將資料流量切換至未變更的環境,所以回復不會導致關閉時間。 因為此策略需要兩個完整正式作業環境,所以資源需求較高。 不過,此策略會啟用強大的「開發人員」流程,例如在正式作業環境中測試新應用程式版本的能力,然後才容許客戶資料流量。 Blue-Green 部署也支援快速回復。
金絲雀版本發佈
與原始正式作業環境 (類似 Blue-Green) 平行部署新版本,無需關閉時間。 系統會管理傳送至已更新及原始實例的資料流量,以便在部署繼續進行時,新版本可供受控制的使用者子集使用。 在一段時間之後,傳送至新版本的資料流量會增加,直到所有資料流量都傳送到該處為止,此時您可以停止舊的正式作業環境。 若要在部署進行時快速回復,您可以將所有資料流量遞送至原始正式作業環境。 由於此策略僅在部署期間需要兩個完整正式作業環境,因此整體資源用量低於 Blue-Green 部署。 Canary 版本部署策略是從所部署軟體的舊版移至現行版本的最慢版本。 Canary 部署可讓組織在正式作業中並列測試兩個不同的軟體版本。

開始之前

開始本指導教學之前,請確定您已備妥下列資源:

  • 具有「標準」方案的 IBM Cloud 帳戶。 如需使用 IBM Cloud 帳戶的相關資訊,請參閱 設定 IBM Cloud 帳戶升級帳戶

  • 佈建的 VPC 基礎架構。 根據您要使用的部署策略類型,按下列其中一個鏈結,以建立 IBM Cloud® Schematics 工作區。 此工作區會產生並套用 Terraform 方案,以建立執行及存取應用程式所需的 VPC、虛擬伺服器實例及負載平衡器。

    「漸進式」按鈕的佈建 VPC Provision VPC for Blue-Green 按鈕 「佈建 Canary 的 VPC」按鈕

  • Continuous Delivery 服務的實例。

  • 選用。 一組密鑰,儲存在密鑰管理儲存庫中,並從單一位置集中管理。 如需選取密鑰管理及資料保護供應項目的相關資訊,請參閱 管理 IBM Cloud 密鑰。 如果您還沒有您選擇的密鑰管理儲存庫提供者實例,請建立一個實例。

建立工具鏈

在此步驟中,您將建立 使用部署策略將應用程式開發及部署至 VPC 工具鏈。 在工具鏈設定期間,會使用 SSH 金鑰來配置目標虛擬機器。 您可以稍後透過更新 Delivery Pipeline 配置來變更這些設定。 任何合併至目標 Git 儲存庫分支的程式碼都會自動建置、驗證及部署至虛擬機器。

若要建立 使用部署策略開發並部署應用程式至 VPC 工具鏈,請按一下

建立工具鏈

或者,從IBM Cloud控制台,點擊選單圖示漢堡圖示>平台自動化>工具鏈。 在工具鏈頁面上,按一下建立工具鏈。 在建立工具鏈頁面上,按一下使用多種部署策略開發應用程式並將其部署到 VPC

配置工具鏈名稱及地區

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

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

VPC 安全應用工具鏈名稱與區域
VM 安全應用工具鏈名稱與區域

選取部署策略

工具鏈會建立「持續部署管線」,以在 IBM Cloud® Kubernetes Service上部署應用程式 Docker 映像檔。 選擇要使用的部署策略。 根據您選擇的部署策略 (滾動、藍綠或金絲雀),您必須提供更多詳細資料。

  1. 按一下您要用於工具鏈的部署策略。

    部署策略
    部署策略

  2. 按一下繼續

配置應用程式原始碼儲存庫

在「應用程式」步驟中,依預設會顯示應用程式原始碼儲存庫的建議選項。 若要檢視基礎 Git 整合的所有可用選項,請按一下 進階選項。 依預設,工具鏈會使用預設範例,將範例應用程式複製為 IBM管理的 Git Repos and Issue Tracking 儲存庫。

VPC 安全應用程式儲存庫
VPC 安全應用程式儲存庫

您可以變更應用程式儲存庫的名稱。 儲存庫的地區仍與工具鏈的地區相同。

工具鏈範本提供使用 Maven 建置的範例 Java™ Spring 應用程式。 如果您要連結工具鏈的現有 Application repo,請選擇 Bring your own app,並指定 repo 的 URL。 工具鏈只支援連結至現有的 Git Repos and Issue Tracking repos。

依預設,應用程式儲存庫範本會複製到 Git Repos and Issue Tracking 組織。 若要變更組織,請啟用 進階選項 並指定儲存庫擁有者。

配置庫存儲存庫

庫存儲存庫會記錄持續整合工具鏈所建置構件的詳細資料。 您可以建立新的庫存儲存庫,它是 庫存儲存庫範本 的複本,或使用您在工具鏈之間共用的現有庫存儲存庫。

VPC 安全應用程式庫存儲存庫
VPC 安全應用程式庫存儲存庫

依預設,庫存儲存庫範本會複製到 Git Repos and Issue Tracking 組織。 若要變更組織,請選取 進階選項 並指定儲存庫擁有者。

安全儲存密鑰

此工具鏈內的數個工具需要密碼,例如 IBM Cloud API 金鑰。 您必須安全地將所有密鑰儲存在密鑰儲存庫中,並在工具鏈需要時參照它們。

使用 IBM Cloud,您可以從各種密鑰管理及資料保護供應項目中選擇,以協助您保護機密資料並集中化密鑰。 在「密鑰」步驟中,您可以指定要在工具鏈中新增或移除哪些密鑰儲存庫整合。 如需新增及移除儲存庫整合 (包括必要條件及使用提示) 的相關資訊,請參閱 管理 IBM Cloud 密碼

透過使用範本內的提示,工具鏈會自動移入預先配置的密鑰; 您不需要從附加至工具鏈的儲存庫整合中手動選取密鑰。

本指導教學使用 IBM Secrets Manager 作為密鑰儲存庫。

VPC 安全應用程式機密選項
VPC 安全應用程式機密選項

IBM Secrets Manager 可安全地儲存並套用密鑰,例如屬於工具鏈一部分的 API 金鑰、映像檔簽章或 HashiCorp 認證。

Secrets Manager選項
Secrets Manager選項

有關在 IBM Key Protect 或 HashiCorp, 管理機密的詳細資訊,請參閱 機密

配置部署目標

透過指定 VPC、Bastion Host、Load Balancer 及 Artifact Store 的詳細資料,來配置工具鏈的部署目標。 本指導教學使用 Blue-Green 部署策略。

部署目標藍綠策略
部署目標藍綠策略

配置 VPC 詳細資料

透過指定 VPC 及虛擬伺服器實例 (VSI) 的相關資訊來配置工具鏈。

當您選取要使用的部署策略時,您使用 IBM Cloud® Schematics 和 Terraform 來佈建 VPC 和 VSI。

  • Virtual Private Cloud 區域: 選取在其中佈建 VPC 的區域。
  • Virtual Private Cloud 名稱: 選取您使用 Terraform 範本佈建的 VPC。 選項包括所選取區域中所有可用的 VPC。
  • VPC 實例的使用者名稱: 指定您在佈建 VPC 實例時所配置的使用者名稱。 VPC 中的所有 VSI 都需要使用者名稱及 SSH 金鑰,才能登入並部署該實例。
  • Base64 編碼 VPC 實例的 SSH 金鑰: 針對您佈建 VPC 實例時所配置的公用 SSH 金鑰,以 base64-encoded 格式指定私密 SSH 金鑰。

配置防禦主機詳細資料

Terraform 範本也會建立 VSI,以用作防禦主機。 防禦主機提供一種安全方式來連接至 VPC 內的 VSI,以完成部署及維護作業。 「基本」主機會使用您在 VPC 詳細資料中配置的認證 (使用者名稱及 SSH 金鑰),透過 SSH 連接至 VSI。

工具鏈需要您登入 VPC 內的 VSI,以部署應用程式二進位檔、啟動及停止應用程式,以及下載協力廠商相依關係來執行應用程式。 所有這些作業都是透過搭配使用 SSH-Tunneling 與防禦主機來達成。 工具鏈會使用相同的認證來登入「防禦主機」用來連接至 VSI 的「防禦主機」。

  • 防禦主機: 選取由 Terraform 範本佈建為防禦主機的 VSI。

配置負載平衡器詳細資料

在 VPC 中的 VSI 上部署的範例應用程式會在埠 8080 上顯示簡式網頁。 若要使用 DNS 名稱讓應用程式可透過網際網路使用,並在執行應用程式的多個 VSI 之間負載平衡資料流量,Terraform 範本會佈建「應用程式負載平衡器」。 所有執行應用程式的 VSI 都會形成「負載平衡器」伺服器的後端儲存區。

工具鏈會使用「負載平衡器」及兩個後端儲存區的詳細資料,在藍綠部署處理程序期間配置並重新導向即時應用程式資料流量。 藍色後端儲存區和綠色後端儲存區包含相同的 VSI 數目。 在任何時間,只有其中一個儲存區主動提供即時資料流量,而另一個儲存區則透過執行較舊版本的應用程式保持閒置。 「負載平衡器」會交換或切換為每個部署提供即時資料流量的後端儲存區。 當藍色後端儲存區目前處於作用中狀態時,下一個部署會在綠色後端儲存區中的 VSI 上部署應用程式,並使其在藍色後端儲存區處於被動狀態時處於作用中狀態。

透過指定負載平衡器的相關資訊來配置工具鏈:

  • 負載平衡器名稱: 選取 Terraform 範本所佈建的應用程式負載平衡器。
  • 藍色後端儲存區名稱: 選取 Terraform 範本為負載平衡器佈建的藍色後端儲存區。
  • 綠色後端儲存區名稱: 選取 Terraform 範本為負載平衡器供應的綠色後端儲存區。

藍綠部署目標策略
藍綠部署目標策略

移入 deployment target 步驟的詳細資料之後,請繼續進行下一步。

配置構件儲存體

對來源所做的任何變更都會觸發持續整合管線。 當連續整合執行成功時,會建立建置或二進位構件並儲存在暫時性儲存體中,然後部署至目標 VSI。

VPC 工件存放
VPC 工件存放

您可以使用 IBM Cloud Object Storage,將暫時性建置構件儲存在工具鏈內。 持續整合管線會建置範例 Spring Java 應用程式的執行檔 .jar

VPC 工件儲存雲端物件儲存
VPC 工件儲存Cloud Object StorageCloud Object Storage

或者,如果您有自己的 Artifactory 實例,則可以使用 Artifactory。

新增選用工具整合

您可以將 IBM Cloud® DevOps Insights 工具整合新增至工具鏈,而不需要任何其他配置。

DevOps Insights 包含在已建立的工具鏈中。 您不需要提供 DevOps Insights的任何配置步驟。 連續整合管線會自動使用工具鏈中包含的 DevOps Insights 實例。DevOps Insights 會聚集程式碼、測試、建置及部署資料,以提供所有團隊及版本之速度及品質的可見性。

按一下繼續

完成工具鏈設定

在摘要頁面上,按一下建立。 會自動執行數個步驟來設定工具鏈。

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

Kubernetes安全應用工具鏈摘要
VPC 安全應用工具鏈摘要

探索您的新工具鏈

建立工具鏈之後,它會在圖表中顯示屬於工具鏈一部分的每一個工具整合。

探索管線

您可以探索管線,以瞭解工具鏈流程以及在每一個管線內執行的不同作業。 您剛建立的工具鏈包含三個管線:

  • 取回要求管線: 當開發人員合併從其開發分支到主要分支或儲存庫中任何其他分支的變更時執行。 取回要求管線會在「應用程式原始碼」上執行「單元測試」和「靜態掃描」。
  • 連續整合管線: 當您將變更合併至「應用程式原始碼」儲存庫的主要分支時執行。 持續整合管線會在「應用程式原始碼」、CIS 檢查及「資料清單 (BOM)」檢查上執行「單元測試」、「程式碼涵蓋面」及「靜態掃描」。 持續交付管線也會產生二進位建置構件,並將它們上傳至 IBM Cloud® Kubernetes Service,如工具鏈中所配置。 持續整合管線會產生建置構件的 meta 資料,並將它儲存在「庫存」儲存庫中。
  • 連續部署管線: 將建置構件部署至部署環境。 管線會執行性能檢查來驗證應用程式是否順利部署。 在連續整合管線順利完成之後,您必須手動觸發此管線。 視您選取的部署策略而定,會將更多觸發程式新增至持續交付管線。

執行取回要求及持續整合管線

若要啟動取回要求管線,請在應用程式儲存庫中建立合併要求:

  1. 在「工具鏈概觀」頁面上的 儲存庫 卡片上,按一下 compliance-app-<timestamp> 應用程式儲存庫。
  2. 從主要儲存庫中,建立分支。
  3. 更新範例節點應用程式或 Readme 檔中的部分程式碼,並儲存這些變更。
  4. 提交合併要求。
  5. 在「工具鏈概觀」頁面的 儲存庫 卡上,按一下 pr-pipeline 儲存庫,以啟動取回要求管線。 應用程式儲存庫中的對應合併要求會保持擱置狀態,直到取回要求管線的所有階段順利完成為止。
  6. 在取回要求管線執行成功之後,您可以選取它來探索已完成的步驟。

若要啟動持續整合管線,請在應用程式儲存庫中合併持續整合合併要求:

  1. 移至合併要求。
  2. 合併要求,以便將變更複製到應用程式儲存庫的主要分支。 持續整合管線會自動觸發。
  3. 在「持續整合工具鏈概觀」頁面上的 儲存庫 卡上,按一下 ci-pipeline 儲存庫,以啟動持續整合管線。
  4. 在連續整合管線執行成功之後,您可以按一下管線執行,以探索已完成的步驟。

持續整合管道成功
持續整合管道成功

若要評估管線執行中是否有任何失敗,請檢查管線的最終步驟,其具有管線評估器。

探索持續交付管線

拉取要求和連續整合管線在所有部署策略中都是常見的。 持續交付管線設計及實作變更是根據您先前在本指導教學中選取的部署策略。

本指導教學示範 Blue-Green 部署策略如何使用範例應用程式來運作。

探索 Blue-Green 部署

本指導教學中使用的藍綠部署策略示範如何搭配使用部署策略與 Continuous Delivery 服務,以在 VPC 上執行正式作業工作負載。 持續交付管線為藍綠部署提供三個觸發程式。 您可以使用下列任何方式來啟動持續交付管線:

  • 手動觸發持續交付管線。
  • 在「庫存」儲存庫中的每一個 Merge 動作之後,自動觸發持續交付管線。 合併之後,您必須手動觸發持續交付管線執行。
  • 在藍色與綠色部署之間切換,以進行自動化回復。

藍綠部署的持續交付管道觸發器
藍綠部署的持續交付管道觸發器

本指導教學顯示 Blue-Green 部署策略如何使用範例應用程式來運作。

  1. 從持續交付管線執行手動觸發程式,以部署應用程式的第一個版本。

    持續交付管道手動運行
    持續交付管道手動運行

  2. 在持續交付管道的 release 步驟中找到應用程式 URL,然後按一下 URL 以驗證應用程式是否正在執行。

    App URL location
    App URL location

  3. 更新應用程式碼並確定變更。 對於範例應用程式,請更新歡迎使用訊息:

    a. 在「工具鏈概觀」頁面上的 儲存庫 卡片上,按一下範例應用程式儲存庫。

    b. 更新 utils.js 檔案中的歡迎使用訊息。

    c. 請等待持續整合管線執行順利完成。

  4. 從持續交付管線執行手動觸發程式,並等待持續交付管線順利完成執行。

  5. 再次檢查應用程式 URL,確認已部署更新的應用程式。 這兩個應用程式版本都同步執行。 所有網路資料流量都流向已更新的應用程式。

  6. 從持續交付管線執行 switch-blue-green 觸發程式來測試回復。 等待切換觸發程式管線執行順利完成。

    連續交付管道切換成功觸發
    連續交付管道切換成功觸發

  7. 再次檢查應用程式 URL,確認是否顯示先前版本的應用程式。

您可以多次執行切換觸發程式,以在應用程式的舊版與最新版本之間替代。

正在尋求協助嗎?

IBM Cloud 的 AI 助手,它由 IBM 的 watsonx 驅動,旨在幫助您瞭解在 IBM Cloud 工作,並利用可用產品和服務目錄來建立解決方案。 請參閱 取得 AI 助理的協助

如需其他支援選項,請參閱 取得 Continuous Delivery的協助及支援