部署暫時環境以進行檢閱

已完成

對您的 Bicep 程式碼進行 Lint 分析可為您指出您的 Azure 部署是否可能成功。 您也會發現實際部署 Bicep 程式碼會很有幫助,以查看您的環境在合併提取要求之後的外觀,以及部署是否已完成。

在本單元中,您將了解如何從提取要求內將程式碼部署至暫存環境。

為何從提取要求內部署您的程式碼?

當您檢閱包含 Bicep 程式碼的提取要求時,將 Bicep 程式碼部署至實際的 Azure 環境是個很好的做法。 這樣做之後,您就有信心,您的變更將在到達生產環境時運作。 如果發生問題,您想要快速探索到該問題。 提取要求讓您有機會探索並醒目提示問題,因為您會收到檢閱者的立即意見反應。

您現在已習慣將變更部署至一或多個非生產環境的想法,例如「測試」、QA 和「預備」環境,再將其部署至生產環境。 在許多組織中,這些環境都是「長期存在」,這表示其會在變更推出時更新,而且環境通常不會遭到刪除。

相反地,「暫時環境」是您動態建立的環境,而且當其不再有用時,您就會將其刪除。 暫時環境旨在短期存在 (例如,只在檢閱您的變更時存在)。

當您部署提取要求的環境時,暫時環境是個不錯的選擇,因為您可能一次開啟許多個別的提取要求,代表不同類型的變更。 如果您有數個已開啟的提取要求,則共用長期存在的非生產環境表示一次只能預覽一個變更。

建立暫時環境

因為您太習慣建置 Azure 基礎結構即程式碼,而且您已投資建置 Bicep 檔案來部署資源,所以您可以重複使用這些相同的資產來部署暫時環境。 如有需要,您甚至可以一次部署多個暫時環境。 您只需要確定部署已足以「參數化」和「一般化」,讓您可以輕鬆地建立獨立環境。 例如,您必須確定某些 Azure 資源具有全域唯一的名稱,其不能與任何其他暫時或長期存在環境中的資源名稱相同。

暫時環境提供許多優點:

  • 您可以在不影響其他生產或非生產工作負載的隔離環境中安全地測試新功能。
  • 您可以在自己的分支中顯示變更,讓您輕鬆地向同事展示您的工作,或讓檢閱者可以存取這些變更。
  • 您可以讓多個小組成員同時測試個別的變更,即使這些變更不相容也一樣。
  • 因為其涉及定期執行 Bicep 檔案,所以暫時環境可協助您持續測試 Bicep 程式碼和其他指令碼的正確性和完整性。 因此,您可以更確信程式碼將在生產環境中完美地執行。

在本課程模組中,您將建立暫時環境,以協助您在提取要求內建立變更的信賴度。 檢閱提取要求的任何人員都可以存取暫時環境,包括任何新增項目和更新項目,再核准和合併提取要求。

部署

當您使用暫時環境時,最好為您小組建立的每個提取要求建立個別的 Azure 資源群組。 如果有個作者開啟兩個不同的提取要求,則每個要求都會具有自己的暫時環境。 這有助於讓每個變更彼此分開,並有助於避免混淆或意外覆寫資源。

圖表顯示針對每個提取要求建立的資源群組。

若要讓此方法能夠運作,您的提取要求驗證工作流程必須動態建立資源群組。 資源群組需要唯一的名稱,而且您也必須能夠輕鬆地找到資源群組來測試資源,並在提取要求關閉時將其刪除。 若要有效地處理資源群組名稱,您可以在資源群組名稱內使用提取要求號碼。 您會在下一個練習中了解如何做到這一點。

當您開始刪除暫時環境時,您的工作流程可以輕鬆找到整個資源群組並將其刪除。 暫時環境中,使用所有資源都會同時遭到刪除。

權限

建立資源群組需要訂用帳戶層級權限,而且通常需要將參與者角色指派給工作流程的工作負載身分識別。

針對暫時環境使用專用的 Azure 訂用帳戶,這是個很好的做法。 遵循此方法,您可以將存取權授與工作流程的工作負載身分識別和小組成員,而不會意外地提供其他環境的存取權。

重要

訂用帳戶範圍的參與者功能強大,因此您必須確保您足以控管工作流程的工作負載身分識別及其可部署的變更。 藉由針對暫時環境使用專用訂用帳戶,您可以降低其他環境的風險。

工作流程的身分識別

您的部署工作流程會使用工作負載身分識別和同盟認證,向 Azure 進行驗證。 使用提取要求驗證工作流程時,您必須設定同盟認證來使用提取要求。

在本課程模組的上一個練習中,您已執行命令來建立同盟認證。 原則字串如下所示:

repo:my-github-user/my-repo:pull_request

接近字串結尾的 pull_request 指定同盟認證使用提取要求驗證工作流程。

成本管理

當您動態建立暫時環境時,將有 Azure 成本可能增加的風險。 如果您的小組已開啟大量提取要求,您可以將大量昂貴的資源部署至 Azure。

提示

如果您的小組快速關閉提取要求,則不需顧慮增加的成本,因為暫時環境會在其對應的提取要求關閉時遭到刪除。

藉由使用專用的 Azure 訂用帳戶,您也可以輕鬆地監視暫時環境的成本。 您可以套用全訂用帳戶原則,限制暫時資源的 SKU,這可協助您避免成本超支。

此外,Azure 提供許多方法來協助您控制暫時環境的成本,包括:

  • Microsoft 成本管理可讓您設定訂閱的「預算」。 預算會觸發通知,以便您的小組知道成本接近您指定的閾值。
  • 許多 Azure 資源類型可為非生產工作負載提供較便宜或甚至免費的階層。 請考慮您是否可以使用這些定價層和 SKU。
  • Azure 開發/測試定價可供某些客戶用於其非生產訂用帳戶。
  • 資源標籤可協助您識別與每個暫時環境相關聯的資源,並計算每個暫時環境的成本。
  • 您可以建立自動化指令碼,以在定義的時段之後刪除暫時資源,或甚至,例如,在下班後的每一天晚上將其刪除。

您也可以考慮在暫時環境之間共用特定資源。 例如,您的 Bicep 程式碼可能會定義許多資源,其中一些資源成本很高,或需要很長的佈建時間。 您可以針對所有提取要求建立一個共用、長期存在的資源群組,以共用昂貴的資源,並針對其他資源建立個別的暫時資源群組。 不過,這種方法讓管理暫時環境變得困難且容易出錯,並讓這些環境足夠分開,才能在檢閱過程中有所幫助。 除非暫時環境的成本太高,否則最好避免使用這種方法。