教學課程:使用 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 新增至 和 stage
命名空間中的dev
服務帳戶。 如需詳細資訊,請參閱 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 工作流程會將額外的指令清單填入指令清單目錄,以部署應用程式。
在 Azure Repos 中,建立新匯入 arc-cicd-demo-gitops 存放庫的新 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 |
名為 arc-cicd-demo-src PR 的應用程式 PR 管線 |
.pipelines/az-vote-ci-pipeline.yaml |
應用程式 CI 管線,名為 arc-cicd-demo-src CI |
.pipelines/az-vote-cd-pipeline.yaml |
名為 arc-cicd-demo-src CD 的應用程式 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 連線 or
將 GitOps 連線 or 存放庫新增至 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 連線 or 存放庫。
建立環境變數群組
應用程式存放庫變數群組
建立名為 az-vote-app-dev 的變數群組。 設定下列值:
變數 | 值 |
---|---|
AZURE_SUBSCRIPTION | (您的 Azure 服務 連線 ion,本教學課程稍早應為 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
檔案。由於「貓與狗」沒有得到足夠的選票,請將它變更為“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與Spaces。
- 使用
kubectl
將埠轉送至本機,並確定應用程式使用下列專案正常運作:kubectl port-forward -n dev svc/azure-vote-front 8080:80
- 在瀏覽器中
http://localhost:8080/
檢視 Azure 投票應用程式,並確認投票選項已變更為 Tabs 與 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 連線 or
將 GitOps 連線 or 存放庫新增至 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 連線 or 存放庫。
建立 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 映射已變更,並推送新的映像。
- 發佈成品(Docker 映射卷標、指令清單範本、Utils),供下列 CD 階段使用。
- 將應用程式部署至開發環境。
- 產生 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 連線 or 通知 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 連線 or:
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 和設定。