教學課程:使用 GitOps (Flux v2) 實作 CI/CD
在本教學課程中,您將使用 GitOps 搭配 Flux v2 和已啟用 Azure Arc 的 Kubernetes 或 Azure Kubernetes Service (AKS) 叢集來設定 CI/CD 解決方案。 使用範例 Azure 投票應用程式,您將:
- 建立已啟用 Azure Arc 的 Kubernetes 或 AKS 叢集。
- 將您的應用程式和 GitOps 存放庫連線至 Azure Repos 或 GitHub。
- 使用 Azure Pipelines 或 GitHub 實作 CI/CD 流程。
- 將您的 Azure Container Registry 連線至 Azure DevOps 和 Kubernetes。
- 建立環境變數群組或祕密。
- 部署
dev
和stage
環境。 - 測試應用程式環境。
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
必要條件
完成上一個教學課程,以了解如何為您的 CI/CD 環境部署 GitOps。
了解此功能的優點和結構。
確認您有:
- 連線的已啟用 Azure Arc 的 Kubernetes 叢集,名為 arc-cicd-cluster。
- 具有 AKS 整合或非 AKS 叢集驗證的已連線 Azure Container Registry。
安裝這些已啟用 Azure Arc 的 Kubernetes 和 Kubernetes 設定 CLI 延伸模組的最新版本:
az extension add --name connectedk8s az extension add --name k8s-configuration
若要將這些延伸模組更新為最新版本,請執行下列命令:
az extension update --name connectedk8s az extension update --name k8s-configuration
將 Azure Container Registry 連線至 Kubernetes
讓您的 Kubernetes 叢集能夠從 Azure Container Registry 提取映像。 如果是私人的,則需要驗證。
將 Azure Container Registry 連線至現有的 AKS 叢集
使用下列命令,將現有的 Azure Container Registry 與現有的 AKS 叢集整合:
az aks update -n arc-cicd-cluster -g myResourceGroup --attach-acr arc-demo-acr
建立映像提取密碼
若要將非 AKS 和本機叢集連線至您的 Azure Container Registry,請建立映像提取祕密。 Kubernetes 會使用映像提取祕密,來儲存驗證登錄所需的資訊。
使用下列 kubectl
命令建立映像提取祕密。 針對 dev
與 stage
命名空間重複相同步驟。
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<container-registry-name>.azurecr.io \
--docker-username=<service-principal-ID> \
--docker-password=<service-principal-password>
若要避免必須為每個 Pod 設定 imagePullSecret,請考慮將 imagePullSecret 新增至 dev
和 stage
命名空間中的服務帳戶。 如需詳細資訊,請參閱 Kubernetes 教學課程。
視您偏好的 CI/CD 協調器而定,您可以繼續進行 Azure DevOps 或 GitHub 的指示。
使用 Azure DevOps 來實作持續整合與持續傳遞
本教學課程假設您熟悉 Azure DevOps、Azure Repos 和 Pipelines,以及 Azure CLI。
請務必先完成下列步驟:
- 登入 Azure DevOps Services。
- 確認您擁有 Azure Repos 和 Azure Pipelines 的「組建管理員」和「專案管理員」權限。
將應用程式和 GitOps 存放庫匯入 Azure Repos
將應用程式存放庫和 GitOps 存放庫匯入 Azure Repos。 針對本教學課程,請使用下列範例存放庫:
arc-cicd-demo-src 應用程式存放庫
- URL:https://github.com/Azure/arc-cicd-demo-src
- 包含您將使用 GitOps 部署的 Azure 投票應用程式範例。
- 使用名稱
arc-cicd-demo-src
匯入存放庫
arc-cicd-demo-gitops GitOps 存放庫
- URL:https://github.com/Azure/arc-cicd-demo-gitops
- 作為裝載 Azure 投票應用程式的叢集資源的基礎。
- 使用名稱
arc-cicd-demo-gitops
匯入存放庫
深入了解匯入 Git 存放庫。
注意
針對應用程式和 GitOps 存放庫匯入和使用兩個不同的存放庫,可以改善安全性和簡單性。 可以個別調整應用程式和 GitOps 存放庫的權限和可見度。 例如,叢集管理員可能找不到應用程式程式碼中與叢集所需狀態相關的變更。 相反地,應用程式開發人員不需要知道每個環境的特定參數 - 一組提供參數涵蓋範圍的測試值可能就已足夠。
連線 GitOps 存放庫
若要持續部署您的應用程式,請使用 GitOps 將應用程式存放庫連線到您的叢集。 您的 arc-cicd-demo-gitops GitOps 存放庫包含基本資源,以讓您的應用程式在 arc-cicd-cluster 叢集上啟動並執行。
初始 GitOps 存放庫只包含一個資訊清單,其會建立與部署環境對應的開發和暫存命名空間。
您建立的 GitOps 連線會自動:
- 同步資訊清單目錄中的資訊清單。
- 更新叢集狀態。
CI/CD 工作流程會將額外的資訊清單填入資訊清單目錄,以部署應用程式。
建立新的 GitOps 連線,連至 Azure Repos 中您新匯入的 arc-cicd-demo-gitops 存放庫。
az k8s-configuration flux create \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --namespace flux-system \ --resource-group myResourceGroup \ -u https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \ --https-user <Azure Repos username> \ --https-key <Azure Repos PAT token> \ --scope cluster \ --cluster-type connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
提示
針對 AKS 叢集 (而非已啟用 Arc 的叢集),請使用
-cluster-type managedClusters
。在 Azure 入口網站中檢查部署狀態。
- 如果成功,您會看到叢集中同時建立
dev
和stage
命名空間。 - 您也可以確認在叢集的 Azure 入口網站頁面上,設定
cluster-config
會在 fGitOps
索引標籤上建立。
- 如果成功,您會看到叢集中同時建立
匯入 CI/CD 管線
既然您已同步 GitOps 連線,您必須匯入建立資訊清單的 CI/CD 管線。
應用程式存放庫包含一個 .pipeline
資料夾,其中包含用於 PR、CI 和 CD 的管線。 匯入並重新命名範例存放庫中提供的三個管線:
管線檔案名稱 | 描述 |
---|---|
.pipelines/az-vote-pr-pipeline.yaml |
應用程式 PR 管線,名為 arc-cicd-demo-src PR |
.pipelines/az-vote-ci-pipeline.yaml |
應用程式 CI 管線,名為 arc-cicd-demo-src CI |
.pipelines/az-vote-cd-pipeline.yaml |
應用程式 CD 管線,名為 arc-cicd-demo-src CD |
將 Azure Container Registry 連線至 Azure DevOps
在 CI 程序期間,您會將應用程式容器部署至登錄。 從建立 Azure 服務連線開始:
- 在 Azure DevOps 中,從專案設定頁面開啟 [服務連線] 頁面。 在 TFS 中,從頂端功能表列中的 [設定] 圖示開啟 [服務] 頁面。
- 選擇 [+ 新增服務連線],並選取您需要的服務連線類型。
- 填入服務連線的參數。 在此教學課程中:
- 將服務連線命名為 arc-demo-acr。
- 選取 myResourceGroup 作為資源群組。
- 選取 [授與所有管線的存取權限]。
- 此選項會授權 YAML 管線檔案進行服務連線。
- 選擇 [確定] 以建立連線。
設定 PR 服務連線
CD 管線會操作 GitOps 存放庫中的 PR。 它需要服務連線才能執行這項操作。 若要設定此連線:
- 在 Azure DevOps 中,從專案設定頁面開啟 [服務連線] 頁面。 在 TFS 中,從頂端功能表列中的 [設定] 圖示開啟 [服務] 頁面。
- 選擇 [+新增服務連線],然後選取
Generic
類型。 - 填入服務連線的參數。 在此教學課程中:
- 伺服器 URL
https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
- 將 [使用者名稱] 和 [密碼] 保留為空白。
- 將服務連線命名為 azdo-pr-connection。
- 伺服器 URL
- 選取 [授與所有管線的存取權限]。
- 此選項會授權 YAML 管線檔案進行服務連線。
- 選擇 [確定] 以建立連線。
安裝 GitOps 連接器
將 GitOps 連接器存放庫新增至 Helm 存放庫:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
將連接器安裝至叢集:
helm upgrade -i gitops-connector gitops-connector/gitops-connector \ --namespace flux-system \ --set gitRepositoryType=AZDO \ --set ciCdOrchestratorType=AZDO \ --set gitOpsOperatorType=FLUX \ --set azdoGitOpsRepoName=arc-cicd-demo-gitops \ --set azdoOrgUrl=https://dev.azure.com/<Your organization>/<Your project> \ --set gitOpsAppURL=https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \ --set orchestratorPAT=<Azure Repos PAT token>
注意
Azure Repos PAT token
應該具有Build: Read & execute
和Code: Full
權限。設定 Flux 以將通知傳送至 GitOps 連接器:
cat <<EOF | kubectl apply -f - apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Alert metadata: name: gitops-connector namespace: flux-system spec: eventSeverity: info eventSources: - kind: GitRepository name: cluster-config - kind: Kustomization name: cluster-config-cluster-config providerRef: name: gitops-connector --- apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Provider metadata: name: gitops-connector namespace: flux-system spec: type: generic address: http://gitops-connector:8080/gitopsphase EOF
如需安裝的詳細資料,請參閱 GitOps 連接器存放庫。
建立環境變數群組
應用程式存放庫變數群組
建立變數群組,名為 az-vote-app-dev。 設定下列值:
變數 | 值 |
---|---|
AZURE_SUBSCRIPTION | (您的 Azure 服務連線,其應該是來自本教學課程稍早的 arc-demo-acr) |
AZ_ACR_NAME | Azure ACR 名稱,例如 arc-demo-acr |
ENVIRONMENT_NAME | 開發 |
MANIFESTS_BRANCH | master |
MANIFESTS_REPO | arc-cicd-demo-gitops |
ORGANIZATION_NAME | Azure DevOps 組織的名稱 |
PROJECT_NAME | Azure DevOps 中 GitOps 專案的名稱 |
REPO_URL | GitOps 存放庫的完整 URL |
SRC_FOLDER | azure-vote |
TARGET_CLUSTER | arc-cicd-cluster |
TARGET_NAMESPACE | dev |
VOTE_APP_TITLE | 投票應用程式 |
AKS_RESOURCE_GROUP | AKS 資源群組。 自動化測試所需。 |
AKS_NAME | AKS 名稱。 自動化測試所需。 |
暫存環境變數群組
- 複製 az-vote-app-dev 變數群組。
- 將名稱變更為 az-vote-app-stage。
- 確保對應變數的下列值:
變數 | 值 |
---|---|
ENVIRONMENT_NAME | 階段 |
TARGET_NAMESPACE | stage |
您現在已準備好部署至 dev
和 stage
環境。
建立環境
在您的 Azure DevOps 專案中,建立 Dev
和 Stage
環境。 如需詳細資訊,請參閱建立環境並將其設為目標。
為組建服務提供更多權限
CD 管線會使用執行中組建的安全性權杖向 GitOps 存放庫進行驗證。 需要更多權限,管線才能建立新的分支、推送變更,以及建立提取要求。
- 從 Azure DevOps 專案主頁面移至
Project settings
。 - 選取
Repos/Repositories
。 - 選取
Security
。 - 針對
<Project Name> Build Service (<Organization Name>)
和Project Collection Build Service (<Organization Name>)
(如果未顯示,則在搜尋欄位中輸入),允許Contribute
、Contribute to pull requests
和Create branch
。 - 請前往
Pipelines/Settings
- 關閉
Protect access to repositories in YAML pipelines
選項
如需詳細資訊,請參閱
第一次部署開發環境
建立 CI 和 CD 管線之後,請執行 CI 管線以第一次部署應用程式。
CI 管線
在初始 CI 管線執行期間,您可能會在讀取服務連線名稱時收到資源授權錯誤。
- 驗證要存取的變數為 AZURE_SUBSCRIPTION。
- 授權使用。
- 重新執行管線。
CI 管線:
- 確保應用程式變更會通過部署的所有自動化品質檢查。
- 執行無法在 PR 管線中完成的任何額外驗證。
- 針對 GitOps,管線也會發佈 CD 管線將部署的認可成品。
- 驗證 Docker 映像已變更,並推送新的映像。
CD 管線
在初始 CD 管線執行期間,您需要提供 GitOps 存放庫的管線存取權。 提示您管線需要存取資源的權限時,選取 [檢視]。 然後,選取 [允許] 以授與權限,以針對管線目前和未來的執行使用 GitOps 存放庫。
成功的 CI 管線執行會觸發 CD 管線來完成部署程序。 您將以遞增方式部署到每個環境。
提示
如果 CD 管線未自動觸發:
- 確認名稱符合
.pipelines/az-vote-cd-pipeline.yaml
中的分支觸發程序- 此屬性應該是
arc-cicd-demo-src CI
。
- 此屬性應該是
- 重新執行 CI 管線。
產生 GitOps 存放庫的範本和資訊清單變更之後,CD 管線會建立認可、推送並建立 PR 以供核准。
尋找管線建立至 GitOps 存放庫的 PR。
確認對 GitOps 存放庫的變更。 您應該會看到:
- 高階 Helm 範本變更。
- 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。 Flux 會部署這些資訊清單。
如果一切看起來都順利,請核准並完成 PR。
幾分鐘後,Flux 會選取變更並開始部署。
在 [認可歷程記錄] 索引標籤上監視 Git 認可狀態。一旦其為
succeeded
,CD 管線就會開始自動化測試。使用
kubectl
將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:kubectl port-forward -n dev svc/azure-vote-front 8080:80
在瀏覽器中於
http://localhost:8080/
檢視 Azure 投票應用程式。為您的喜好投票,並準備好對應用程式進行一些變更。
設定環境核准
在應用程式部署時,您不僅會對程式碼或範本進行變更,還可能不慎讓叢集處於錯誤狀態。
如果開發環境在部署後顯示中斷,請使用環境核准,使其無法進入較新的環境。
- 在您的 Azure DevOps 專案中,移至需要保護的環境。
- 瀏覽至 [核准和檢查] 以取得資源。
- 選取 建立。
- 提供核准者和選用的訊息。
- 再次選取 [建立] 以完成新增手動核准檢查。
如需詳細資訊,請參閱定義核准和檢查教學課程。
下次 CD 管線執行時,管線會在 GitOps PR 建立之後暫停。 驗證變更已正確同步,並傳遞基本功能。 核准管線的檢查,讓變更流程流向下一個環境。
進行應用程式變更
使用代表叢集上狀態的範本和資訊清單的這組基準,您將對應用程式進行少量變更。
在 arc-cicd-demo-src 存放庫中,編輯
azure-vote/src/azure-vote-front/config_file.cfg
檔案。由於 "Cats vs Dogs" 沒有得到足夠的票數,請將其變更為 "Tabs vs Spaces",以提高投票計數。
認可新分支中的變更、推送它,然後建立提取要求。 這一系列步驟是開始 CI/CD 生命週期的一般開發人員流程。
PR 驗證管線
PR 管線是針對錯誤變更的第一道防線。 一般應用程式程式碼品質檢查包括 Linting 分析和靜態分析。 從 GitOps 的觀點來看,您也必須確保所產生要部署的基礎結構有相同品質。
應用程式的 Dockerfile 和 Helm 圖表可以以與應用程式類似的方式使用 Linting 分析。
Linting 分析期間發現的錯誤範圍從格式不正確的 YAML 檔案到最佳做法建議,例如設定應用程式的 CPU 和記憶體限制。
注意
若要在實際應用程式中從 Helm Linting 分析獲得最佳涵蓋範圍,您將必須替代與實際環境中所使用的值相當類似的值。
在管線執行期間發現的錯誤會出現在執行的測試結果區段中。 在這裡,您可以:
- 追蹤錯誤類型的實用統計資料。
- 尋找其偵測到的第一個認可。
- 堆疊追蹤樣式連結至造成錯誤的程式碼區段。
一旦管線執行完成,您就可以確保應用程式程式碼的品質,以及部署它的範本。 您現在可以核准並完成 PR。 CI 會在觸發 CD 管線之前再次執行,重新產生範本和資訊清單。
提示
在真實環境中,別忘了設定分支原則,以確保 PR 通過您的品質檢查。 如需詳細資訊,請參閱設定分支原則。
CD 程序核准
成功的 CI 管線執行會觸發 CD 管線來完成部署程序。 這次,管線會要求您核准每個部署環境。
- 核准部署至
dev
環境。 - 產生 GitOps 存放庫的範本和資訊清單變更之後,CD 管線會建立認可、推送並建立 PR 以供核准。
- 確認對 GitOps 存放庫的變更。 您應該會看到:
- 高階 Helm 範本變更。
- 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。
- 如果一切看起來都順利,請核准並完成 PR。
- 等待部署完成。
- 作為基本煙霧測試,瀏覽至應用程式頁面並驗證投票應用程式現在會顯示 Tabs vs Spaces。
- 使用
kubectl
將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:kubectl port-forward -n dev svc/azure-vote-front 8080:80
- 在瀏覽器中於
http://localhost:8080/
檢視 Azure 投票應用程式,並驗證投票選項已變更為 Tabs vs Spaces。
- 使用
- 針對
stage
環境重複步驟 1-7。
現在已完成部署。
如需本教學課程中所使用 CI/CD 工作流程中實作之所有步驟和技術的詳細概觀,請參閱 Azure DevOps GitOps 流程圖。
使用 GitHub 實作 CI/CD
本教學課程假設您熟悉 GitHub、GitHub Actions。
分支應用程式和 GitOps 存放庫
派生應用程式存放庫和 GitOps 存放庫。 針對本教學課程,請使用下列範例存放庫:
arc-cicd-demo-src 應用程式存放庫
- URL:https://github.com/Azure/arc-cicd-demo-src
- 包含您將使用 GitOps 部署的 Azure 投票應用程式範例。
arc-cicd-demo-gitops GitOps 存放庫
- URL:https://github.com/Azure/arc-cicd-demo-gitops
- 作為裝載 Azure 投票應用程式的叢集資源的基礎。
連線 GitOps 存放庫
若要持續部署您的應用程式,請使用 GitOps 將應用程式存放庫連線到您的叢集。 您的 arc-cicd-demo-gitops GitOps 存放庫包含基本資源,以讓您的應用程式在 arc-cicd-cluster 叢集上啟動並執行。
初始 GitOps 存放庫只包含一個資訊清單,其會建立與部署環境對應的開發和暫存命名空間。
您建立的 GitOps 連線會自動:
- 同步資訊清單目錄中的資訊清單。
- 更新叢集狀態。
CI/CD 工作流程會將額外的資訊清單填入資訊清單目錄,以部署應用程式。
在 GitHub 中建立新分支 arc-cicd-demo-gitops 存放庫的新 GitOps 連線。
az k8s-configuration flux create \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --namespace cluster-config \ --resource-group myResourceGroup \ -u https://github.com/<Your organization>/arc-cicd-demo-gitops.git \ --https-user <Azure Repos username> \ --https-key <Azure Repos PAT token> \ --scope cluster \ --cluster-type connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
在 Azure 入口網站中檢查部署狀態。
- 如果成功,您會看到叢集中同時建立
dev
和stage
命名空間。
- 如果成功,您會看到叢集中同時建立
安裝 GitOps 連接器
將 GitOps 連接器存放庫新增至 Helm 存放庫:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
將連接器安裝至叢集:
helm upgrade -i gitops-connector gitops-connector/gitops-connector \ --namespace flux-system \ --set gitRepositoryType=GITHUB \ --set ciCdOrchestratorType=GITHUB \ --set gitOpsOperatorType=FLUX \ --set gitHubGitOpsRepoName=arc-cicd-demo-src \ --set gitHubGitOpsManifestsRepoName=arc-cicd-demo-gitops \ --set gitHubOrgUrl=https://api.github.com/repos/<Your organization> \ --set gitOpsAppURL=https://github.com/<Your organization>/arc-cicd-demo-gitops/commit \ --set orchestratorPAT=<GitHub PAT token>
設定 Flux 以將通知傳送至 GitOps 連接器:
cat <<EOF | kubectl apply -f - apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Alert metadata: name: gitops-connector namespace: flux-system spec: eventSeverity: info eventSources: - kind: GitRepository name: cluster-config - kind: Kustomization name: cluster-config-cluster-config providerRef: name: gitops-connector --- apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Provider metadata: name: gitops-connector namespace: flux-system spec: type: generic address: http://gitops-connector:8080/gitopsphase EOF
如需安裝的詳細資料,請參閱 GitOps 連接器存放庫。
建立 GitHub 祕密
建立 GitHub 存放庫祕密
祕密 | 值 |
---|---|
AZURE_CREDENTIALS | 使用下列格式的 Azure 認證 {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"} |
AZ_ACR_NAME | Azure ACR 名稱,例如 arc-demo-acr |
MANIFESTS_BRANCH | master |
MANIFESTS_FOLDER | arc-cicd-cluster |
MANIFESTS_REPO | https://github.com/your-organization/arc-cicd-demo-gitops |
VOTE_APP_TITLE | 投票應用程式 |
AKS_RESOURCE_GROUP | AKS 資源群組。 自動化測試所需。 |
AKS_NAME | AKS 名稱。 自動化測試所需。 |
PAT | 對 GitOps 存放庫具有 PR 權限的 GitHub PAT 權杖 |
建立 GitHub 環境祕密
- 使用下列祕密建立
az-vote-app-dev
環境:
祕密 | 值 |
---|---|
ENVIRONMENT_NAME | 開發 |
TARGET_NAMESPACE | dev |
- 使用下列祕密建立
az-vote-app-stage
環境:
祕密 | 值 |
---|---|
ENVIRONMENT_NAME | 階段 |
TARGET_NAMESPACE | stage |
您現在已準備好部署至 dev
和 stage
環境。
CI/CD 開發工作流程
若要開始 CI/CD 開發工作流程,請變更原始程式碼。 在應用程式存放庫中,更新 .azure-vote/src/azure-vote-front/config_file.cfg
檔案中的值,並將變更推送至存放庫。
CI/CD 開發工作流程:
- 確保應用程式變更會通過部署的所有自動化品質檢查。
- 執行無法在 PR 管線中完成的任何額外驗證。
- 驗證 Docker 映像已變更,並推送新的映像。
- 發佈供下列 CD 暫存使用的成品 (Docker 映像標籤、資訊清單範本、Utils)。
- 將應用程式部署至開發環境。
- 產生 GitOps 存放庫的資訊清單。
- 建立 GitOps 存放庫的 PR 以進行核准。
尋找管線建立至 GitOps 存放庫的 PR。
確認對 GitOps 存放庫的變更。 您應該會看到:
- 高階 Helm 範本變更。
- 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。 Flux 會部署這些資訊清單。
如果一切看起來都順利,請核准並完成 PR。
幾分鐘後,Flux 會選取變更並開始部署。
在 [認可歷程記錄] 索引標籤上監視 Git 認可狀態。一旦其為
succeeded
,CD Stage
工作流程就會啟動。使用
kubectl
將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:kubectl port-forward -n dev svc/azure-vote-front 8080:80
在瀏覽器中於
http://localhost:8080/
檢視 Azure 投票應用程式。為您的喜好投票,並準備好對應用程式進行一些變更。
CD 暫存工作流程
CD 暫存工作流程會在 Flux 成功將應用程式部署至開發環境後自動啟動,並透過 GitOps 連接器通知 GitHub 動作。
CD 暫存工作流程:
- 針對開發環境執行應用程式煙霧測試
- 將應用程式部署至暫存環境。
- 產生 GitOps 存放庫的資訊清單
- 建立 GitOps 存放庫的 PR 以進行核准
一旦合併暫存環境的資訊清單 PR,且 Flux 成功套用所有變更之後,Git 認可狀態就會在 GitOps 存放庫中更新。 現在已完成部署。
如需本教學課程中所使用 CI/CD 工作流程中實作之所有步驟和技術的詳細概觀,請參閱 GitHub GitOps 流程圖。
清除資源
如果您不打算繼續使用此應用程式,請使用下列步驟刪除任何資源:
刪除 Azure Arc GitOps 設定連線:
az k8s-configuration flux delete \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --resource-group myResourceGroup \ -t connectedClusters --yes
刪除 GitOps 連接器:
helm uninstall gitops-connector -n flux-system kubectl delete alerts.notification.toolkit.fluxcd.io gitops-connector -n flux-system kubectl delete providers.notification.toolkit.fluxcd.io gitops-connector -n flux-system
下一步
在本教學課程中,您已設定完整的 CI/CD 工作流程,其會透過部署從應用程式開發實作 DevOps。 對應用程式的變更會自動觸發驗證和部署,並透過手動核准守護。
請前進到我們的概念性文章,以深入了解使用已啟用 Azure Arc 的 Kubernetes 的 GitOps 和設定。