Share via


教學課程:使用 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。
  • 建立環境變數群組或秘密。
  • 部署 devstage 環境。
  • 測試應用程式環境。

如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

必要條件

  • 完成上一個教學課程,以了解如何為您的 CI/CD 環境部署 GitOps。

  • 了解此功能的優點和結構

  • 驗證您有:

  • 安裝這些已啟用 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 命令建立映像提取祕密。 針對 devstage 命名空間重複相同步驟。

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 新增至 devstage 命名空間中的服務帳戶。 如需詳細資訊,請參閱 Kubernetes 教學課程

視您偏好的 CI/CD 協調器而定,您可以繼續進行 Azure DevOps 或 GitHub 的指示。

使用 Azure DevOps 來實作持續整合與持續傳遞

本教學課程假設您熟悉 Azure DevOps、Azure Repos 和 Pipelines,以及 Azure CLI。

請務必先完成下列步驟:

將應用程式和 GitOps 存放庫匯入 Azure Repos

應用程式存放庫和 GitOps 存放匯入 Azure Repos。 在本教學課程中,請使用下列範例存放庫:

深入瞭解 如何匯入 Git 存放庫

注意

針對應用程式和 GitOps 存放庫匯入和使用兩個不同的存放庫可以改善安全性和簡單性。 可以個別調整應用程式和 GitOps 存放庫的權限和可見性。 例如,叢集管理員可能找不到應用程式程式碼中與叢集所需狀態相關的變更。 相反地,應用程式開發人員不需要知道每個環境的特定參數 - 一組提供參數涵蓋範圍的測試值可能就已足夠。

連線 GitOps 存放庫

若要持續部署您的應用程式,請使用 GitOps 將應用程式存放庫連線到您的叢集。 您的 arc-cicd-demo-gitops GitOps 存放庫包含基本資源,可讓您的應用程式在 arc-cicd-cluster 叢集啟動並執行。

初始 GitOps 存放庫只包含一個指令清單,該指令清單會建立對應至部署環境的開發和階段命名空間。

您建立的 GitOps 連線會自動:

  • 同步資訊清單目錄中的資訊清單。
  • 更新叢集狀態。

CI/CD 工作流程會將額外的指令清單填入指令清單目錄,以部署應用程式。

  1. 在 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

  2. 在 Azure 入口網站中檢查部署狀態。

    • 如果成功,您會看到叢集中同時建立 devstage 命名空間。
    • 您也可以確認在叢集的 [Azure 入口網站] 頁面上,cluster-config會在 fGitOps 索引標籤上建立設定。

匯入 CI/CD 管線

現在您已同步處理 GitOps 連線,您需要匯入建立指令清單的 CI/CD 管線。

應用程式存放庫包含一個 .pipeline 資料夾,其中包含用於PR、CI和CD的管線。 匯入並重新命名範例存放庫中提供的三個管線:

管線檔案名稱 描述
.pipelines/az-vote-pr-pipeline.yaml 應用程式提取要求管線,名為 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 服務連線開始:

  1. 在 Azure DevOps 中,從專案設定頁面開啟 [服務連線] 頁面。 在 TFS 中,從頂端功能表列中的 [設定] 圖示開啟 [服務] 頁面。
  2. 選擇 [+ 新增服務連線],並選取您需要的服務連線類型。
  3. 填入服務連線的參數。 在此教學課程中:
    • 將服務連線命名為 arc-demo-acr
    • 選取 myResourceGroup 作為資源群組。
  4. 選取 [授與所有管線的存取權限]
    • 此選項會授權 YAML 管線檔案進行服務連線。
  5. 選擇 [確定] 以建立連線。

設定PR服務連線

CD 管線會操作 GitOps 存放庫中的 PR。 它需要服務連線才能執行這項操作。 若要設定此連線:

  1. 在 Azure DevOps 中,從專案設定頁面開啟 [服務連線] 頁面。 在 TFS 中,從頂端功能表列中的 [設定] 圖示開啟 [服務] 頁面。
  2. 選擇 [+ 新增服務連線 ],然後選取 Generic [類型]。
  3. 填入服務連線的參數。 在此教學課程中:
    • 伺服器 URL https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
    • 將 [用戶名稱] 和 [密碼] 保留空白。
    • 將服務連線 命名為 azdo-pr-connection
  4. 選取 [授與所有管線的存取權限]
    • 此選項會授權 YAML 管線檔案進行服務連線。
  5. 選擇 [確定] 以建立連線。

安裝 GitOps 連線 or

  1. 將 GitOps 連線 or 存放庫新增至 Helm 存放庫:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. 將連接器安裝到叢集:

       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 & executeCode: Full 許可權。

  3. 設定 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 服務連線,其應該是來自本教學課程稍早的 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 名稱。 自動化測試所需的 。

暫存環境變數群組

  1. 複製 az-vote-app-dev 變數群組。
  2. 將名稱變更為 az-vote-app-stage
  3. 確保對應變數的下列值:
變數
ENVIRONMENT_NAME 階段
TARGET_NAMESPACE stage

您現在已準備好部署至 devstage 環境。

建立環境

在您的 Azure DevOps 專案中,建立 Dev 和環境 Stage 。 如需詳細資訊,請參閱 建立環境並設定目標

為建置服務提供更多許可權

CD 管線會使用執行中組建的安全性權杖向 GitOps 存放庫進行驗證。 需要更多權限,管線才能建立新的分支、推送變更,以及建立提取要求。

  1. 從 Azure DevOps 專案主頁面移至 Project settings
  2. 選取 Repos/Repositories
  3. 選取 Security
  4. <Project Name> Build Service (<Organization Name>)針對和的 Project Collection Build Service (<Organization Name>) (在搜尋欄位中輸入,如果未顯示,則為 ),允許ContributeContribute to pull requestsCreate branch
  5. 請前往 Pipelines/Settings
  6. 關閉 Protect access to repositories in YAML pipelines 選項

如需詳細資訊,請參閱

第一次部署開發環境

建立 CI 和 CD 管線之後,請執行 CI 管線以第一次部署應用程式。

CI 管線

在初始 CI 管線執行期間,您可能會在讀取服務連線名稱時收到資源授權錯誤。

  1. 驗證要存取的變數為 AZURE_SUBSCRIPTION。
  2. 授權使用。
  3. 重新執行管線。

CI 管線:

  • 確保應用程式變更會通過部署的所有自動化品質檢查。
  • 執行無法在提取要求管線中完成的任何額外驗證。
    • 針對 GitOps,管線也會發佈 CD 管線將部署的認可成品。
  • 驗證 Docker 映像已變更,並推送新的映像。

CD 管線

在初始 CD 管線執行期間,您必須將管線存取權授與 GitOps 存放庫。 當系統提示您管線需要存取資源的許可權時,請選取 [檢視 ]。 然後,選取 [允許] 以授與許可權,以針對管線目前和未來的執行使用 GitOps 存放庫。

成功的 CI 管線執行會觸發 CD 管線來完成部署程序。 您將以遞增方式部署到每個環境。

提示

如果 CD 管線未自動觸發:

  1. 驗證名稱符合 .pipelines/az-vote-cd-pipeline.yaml 中的分支觸發程序
    • 此屬性應該是 arc-cicd-demo-src CI
  2. 重新執行 CI 管線。

產生 GitOps 存放庫的範本和指令清單變更之後,CD 管線會建立認可、推送並建立 PR 以供核准。

  1. 尋找管線建立至 GitOps 存放庫的 PR。

  2. 確認 GitOps 存放庫的變更。 您應該會看到:

    • 高階 Helm 範本變更。
    • 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。 Flux 會部署這些資訊清單。
  3. 如果一切看起來都順利,請核准並完成提取要求。

  4. 幾分鐘後,Flux 會選取變更並開始部署。

  5. 在 [認可歷程記錄] 索引卷標上監視 Git 認可狀態。一旦是 succeeded,CD 管線就會開始自動化測試。

  6. 使用 kubectl 將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. 在瀏覽器中於 http://localhost:8080/ 檢視 Azure 投票應用程式。

  8. 為您的喜好投票,並準備好對應用程式進行一些變更。

設定環境核准

在應用程式部署時,您不僅會對程式碼或範本進行變更,還可能不慎讓叢集處於錯誤狀態。

如果開發環境在部署後顯示中斷,請使用環境核准,使其無法進入較新的環境。

  1. 在您的 Azure DevOps 專案中,移至需要保護的環境。
  2. 瀏覽至 [核准和檢查] 以取得資源。
  3. 選取 建立
  4. 提供核准者和選用的訊息。
  5. 再次選取 [建立] 以完成新增手動核准檢查。

如需詳細資訊,請參閱定義核准和檢查教學課程。

下次 CD 管線執行時,管線會在 GitOps 提取要求建立之後暫停。 驗證變更已正確同步,並傳遞基本功能。 核准管線的檢查,讓變更流程流向下一個環境。

進行應用程式變更

使用代表叢集上狀態的範本和資訊清單的這組基準,您將對應用程式進行少量變更。

  1. arc-cicd-demo-src 存放庫中,編輯 azure-vote/src/azure-vote-front/config_file.cfg 檔案。

  2. 由於「貓與狗」沒有得到足夠的選票,請將它變更為 "Tabs vs Spaces",以提高投票計數。

  3. 認可新分支中的變更、推送它,然後建立提取要求。 這個步驟序列是啟動 CI/CD 生命週期的一般開發人員流程。

提取要求驗證管線

提取要求管線是針對錯誤變更的第一道防線。 一般應用程式程式碼品質檢查包括 Linting 分析和靜態分析。 從 GitOps 的觀點來看,您也必須確保所產生要部署的基礎結構有相同品質。

應用程式的 Dockerfile 和 Helm 圖表可以以與應用程式類似的方式使用 Linting 分析。

Linting 期間發現的錯誤範圍從格式不正確的 YAML 檔案到最佳做法建議,例如設定應用程式的 CPU 和記憶體限制。

注意

若要在實際應用程式中從 Helm Linting 分析獲得最佳涵蓋範圍,您將必須替代與實際環境中所使用的值相當類似的值。

在管線執行期間發現的錯誤會出現在執行的測試結果區段中。 在這裡,您可以:

  • 追蹤錯誤類型的實用統計資料。
  • 尋找其偵測到的第一個認可。
  • 堆疊追蹤樣式連結至造成錯誤的程式碼區段。

管線執行完成後,您就已確保應用程式程式碼的品質和部署它的範本。 您現在可以核准並完成提取要求。 CI 會在觸發 CD 管線之前再次執行,重新產生範本和資訊清單。

提示

在真實環境中,別忘了設定分支原則,以確保提取要求通過您的品質檢查。 如需詳細資訊,請參閱 設定分支原則

CD 程序核准

成功的 CI 管線執行會觸發 CD 管線來完成部署程序。 這次,管線會要求您核准每個部署環境。

  1. 核准部署至 dev 環境。
  2. 產生 GitOps 存放庫的範本和指令清單變更之後,CD 管線會建立認可、推送並建立 PR 以供核准。
  3. 確認 GitOps 存放庫的變更。 您應該會看到:
    • 高階 Helm 範本變更。
    • 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。
  4. 如果一切看起來都順利,請核准並完成提取要求。
  5. 等待部署完成。
  6. 作為基本煙霧測試,瀏覽至應用程式頁面並驗證投票應用程式現在會顯示 Tabs vs Spaces。
    • 使用 kubectl 將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:kubectl port-forward -n dev svc/azure-vote-front 8080:80
    • 在瀏覽器中於 http://localhost:8080/ 檢視 Azure 投票應用程式,並驗證投票選項已變更為 Tabs vs Spaces。
  7. 針對 stage 環境重複步驟 1-7。

部署現已完成。

如需本教學課程中使用的 CI/CD 工作流程中實作之所有步驟和技術的詳細概觀,請參閱 Azure DevOps GitOps 流程圖

使用 GitHub 實作 CI/CD

本教學課程假設熟悉 GitHub、GitHub Actions。

分支應用程式和 GitOps 存放庫

生應用程式存放庫 和 GitOps 存放 。 在本教學課程中,請使用下列範例存放庫:

連線 GitOps 存放庫

若要持續部署您的應用程式,請使用 GitOps 將應用程式存放庫連線到您的叢集。 您的 arc-cicd-demo-gitops GitOps 存放庫包含基本資源,可讓您的應用程式在 arc-cicd-cluster 叢集啟動並執行。

初始 GitOps 存放庫只包含一個指令清單,該指令清單會建立對應至部署環境的開發和階段命名空間。

您建立的 GitOps 連線會自動:

  • 同步資訊清單目錄中的資訊清單。
  • 更新叢集狀態。

CI/CD 工作流程會將額外的指令清單填入指令清單目錄,以部署應用程式。

  1. 在 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
    
  2. 在 Azure 入口網站中檢查部署狀態。

    • 如果成功,您會看到叢集中同時建立 devstage 命名空間。

安裝 GitOps 連線 or

  1. 將 GitOps 連線 or 存放庫新增至 Helm 存放庫:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. 將連接器安裝到叢集:

       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>
    
  3. 設定 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 環境秘密

  1. 使用下列秘密建立 az-vote-app-dev 環境:
祕密
ENVIRONMENT_NAME 開發
TARGET_NAMESPACE dev
  1. 使用下列秘密建立 az-vote-app-stage 環境:
祕密
ENVIRONMENT_NAME 階段
TARGET_NAMESPACE stage

您現在已準備好部署至 devstage 環境。

CI/CD 開發人員工作流程

若要啟動 CI/CD 開發人員工作流程,請變更原始程式碼。 在應用程式存放庫中,更新檔案中的 .azure-vote/src/azure-vote-front/config_file.cfg 值,並將變更推送至存放庫。

CI/CD 開發人員工作流程:

  • 確保應用程式變更會通過部署的所有自動化品質檢查。
  • 執行無法在提取要求管線中完成的任何額外驗證。
  • 驗證 Docker 映像已變更,並推送新的映像。
  • 發佈成品(Docker 映射卷標、指令清單範本、Utils),供下列 CD 階段使用。
  • 將應用程式部署至開發環境。
    • 產生 GitOps 存放庫的指令清單。
    • 建立 GitOps 存放庫的 PR 以進行核准。
  1. 尋找管線建立至 GitOps 存放庫的 PR。

  2. 確認 GitOps 存放庫的變更。 您應該會看到:

    • 高階 Helm 範本變更。
    • 低階 Kubernetes 資訊清單,顯示所需狀態的基礎變更。 Flux 會部署這些資訊清單。
  3. 如果一切看起來都順利,請核准並完成提取要求。

  4. 幾分鐘後,Flux 會選取變更並開始部署。

  5. 在 [認可歷程記錄] 索引卷標上監視 Git 認可狀態。一旦為 succeeded,工作流程 CD Stage 就會啟動。

  6. 使用 kubectl 將連接埠轉送至本機,並使用下列命令確定應用程式正常運作:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. 在瀏覽器中於 http://localhost:8080/ 檢視 Azure 投票應用程式。

  8. 為您的喜好投票,並準備好對應用程式進行一些變更。

CD 階段工作流程

CD 階段工作流程會在 Flux 成功將應用程式部署至開發環境後自動啟動,並透過 GitOps 連線 or 通知 GitHub 動作。

CD 階段工作流程:

  • 針對開發環境執行應用程式煙霧測試
  • 將應用程式部署至階段環境。
    • 產生 GitOps 存放庫的指令清單
    • 建立 GitOps 存放庫的 PR 以進行核准

合併階段環境的指令清單 PR,且 Flux 成功套用所有變更之後,Git 認可狀態就會在 GitOps 存放庫中更新。 部署現已完成。

如需本教學課程中所使用 CI/CD 工作流程中實作之所有步驟和技術的詳細概觀,請參閱 GitHub GitOps 流程圖

清除資源

如果您不打算繼續使用此應用程式,請使用下列步驟刪除任何資源:

  1. 刪除 Azure Arc GitOps 設定連線:

    az k8s-configuration flux delete \
          --name cluster-config \
          --cluster-name arc-cicd-cluster \
          --resource-group myResourceGroup \
          -t connectedClusters --yes
    
  2. 刪除 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 和設定。