練習 - 使用 GitOps 和 Flux 將範例應用程式部署至叢集

已完成

在此練習中,我們會使用 GitOps 和 Flux 將容器化 Linux 應用程式部署到已啟用 Arc 的 AKS 邊緣程式集叢集。

派生示範應用程式 GitHub 存放庫

如果您還沒有 GitHub 帳戶,請立即建立一個

  1. 選取 [派生] 和 [建立分叉],即可瀏覽至 Azure Arc Jumpstart Apps 存放庫,並將其派生至您自己的 GitHub 帳戶。

    Screenshot of Azure Arc Jumpstart Apps repository.

  2. 瀏覽至您的帳戶存放庫並選取 azure-arc-jumpstart-apps 存放庫,以確認已成功建立分支。 存放庫 URL 應如下所示:

    https://github.com/<your-github-username>/azure-arc-jumpstart-apps
    

部署應用程式

在 Azure 入口網站 中,瀏覽至已啟用 Arc 的 AKS 邊緣程式集叢集,然後選取 [設定] 下的 [GitOps]。 讓我們建立叢集層級設定和命名空間層級設定。

Screenshot of AKS Edge Essentials Kubernetes Azure Arc resource in Azure portal, with GitOps highlight.

  1. 針對叢集層級設定,選取 [建立],並使用下列值:

    屬性 輸入
    基本概念
    設定名稱 config-nginx
    Namespace ingress-nginx
    範圍 Cluster
    類型 Flux v2
    來源
    來源種類 Git 存放庫
    存放庫 URL <分支的 URL>
    參考類型 分支
    分行 main
    存放庫類型 公開
    同步處理間隔 1
    同步處理逾時 10
    Kustomizations
    Kustomizations 選取 [建立]
    執行個體名稱 nginx
    路徑 ./nginx/release
    同步處理間隔 10
    同步處理逾時 10
    剪除 已啟用
    Force 未啟用

    注意

    等到 config-nginx 已成功建立並顯示在您的 Azure 入口網站 GitOps 上,再建立命名空間層級設定 (如果合規性處於擱置狀態,則可以繼續建立下一個設定)。

  2. 針對命名空間層級設定,選取 [建立],並使用下列值:

    屬性 輸入
    基本概念
    設定名稱 config-helloarc
    Namespace hello-arc
    範圍 Namespace
    類型 Flux v2
    來源
    來源種類 Git 存放庫
    存放庫 URL <分支的 URL>
    參考類型 分支
    分行 main
    存放庫類型 公開
    同步處理間隔 1
    同步處理逾時 10
    Kustomizations
    Kustomizations 選取 [建立]
    執行個體名稱 app
    路徑 ./hello-arc/releases/app
    同步處理間隔 10
    同步處理逾時 10
    剪除 已啟用
    Force 未啟用
  3. 重新整理您的設定資料表,並等候設定安裝並符合規範。

    Screenshot of cluster-level and namespace-level configurations in Azure portal.

  4. 在您的 VM 中,使用 kubectl 來檢查服務是否正在執行:

    kubectl get svc -n ingress-nginx
    kubectl get pods -n hello-arc
    

    下列範例輸出顯示服務正在執行:

    PS C:\akseeLearn> kubectl get svc -n ingress-nginx
    NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
    ingress-nginx-controller             LoadBalancer   10.43.136.240   192.168.0.4   80:31838/TCP,443:30386/TCP   18m
    ingress-nginx-controller-admission   ClusterIP      10.43.11.51     <none>        443/TCP                      18m
    PS C:\akseeLearn> kubectl get pods -n hello-arc
    NAME                         READY   STATUS    RESTARTS   AGE
    hello-arc-7c66864f8d-662b7   1/1     Running   0          12m
    hello-arc-7c66864f8d-fdbkc   1/1     Running   0          12m
    hello-arc-7c66864f8d-prb2v   1/1     Running   0          12m
    
  5. 若要檢視應用程式,請開啟瀏覽器並瀏覽至指派給 ingress-nginx-controller 服務的 EXTERNAL-IP 位址。 在上一個範例中,指派給服務的 IP 位址為 192.168.0.4

    Screenshot of Windows VM with linux sample application running in the browser.

更新應用程式

我們已設定 GitOps 和 Flux,以監看分支存放庫主要分支中的變更。 讓我們對應用程式進行變更,並查看 GitOps 的回應方式。

  1. azure-arc-jumpstart-apps 存放庫的分支中,瀏覽至 hello-arc > 版本 > 應用程式 > hello-arc.yaml

  2. 選取 [編輯],以對此 YAML 檔案進行變更。 將 replicaCount 變更為 5。 將變更為 [部署至 AKS 邊緣程式集 GitOps!]

  3. 選取 [認可變更...],然後 [認可變更],即可認可該變更。

    Screenshot of application changes in the GitHub repository.

  4. 使用 kubectl 查看正在終止的舊 Pod 和即將上線的新 Pod:

    kubectl get pods -n hello-arc -w
    

    下列範例輸出顯示正在終止的舊 Pod 和即將上線的新 Pod:

    PS C:\akseeLearn> kubectl get pods -n hello-arc -w
    NAME                         READY   STATUS    RESTARTS   AGE
    hello-arc-699dff9888-5mcjs   1/1     Running   0          19m
    hello-arc-699dff9888-qrsfw   1/1     Running   0          19m
    hello-arc-699dff9888-xm82r   1/1     Running   0          19m
    hello-arc-699dff9888-mpdxt   0/1     Pending   0          0s
    hello-arc-699dff9888-mpdxt   0/1     Pending   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Pending   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Pending   0          0s
    hello-arc-699dff9888-mpdxt   0/1     ContainerCreating   0          0s
    hello-arc-699dff9888-cvkgf   0/1     ContainerCreating   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Running             0          1s
    hello-arc-699dff9888-mpdxt   0/1     Running             0          1s
    hello-arc-699dff9888-mpdxt   1/1     Running             0          2s
    hello-arc-699dff9888-cvkgf   1/1     Running             0          2s
    

    注意

    因為我們在建立設定時將同步間隔設定為 1 分鐘,Flux會每分鐘從 GitHub 提取變更。

  5. 重新整理您的應用程式即可看到此變更反映為滾動更新。

    Screenshot of Windows VM with updated linux sample application running in the browser.

清除 Azure 資源

在本課程模組的課程中,您已建立 Azure 資源。 如果您在未來不需要這些資源,請在 Azure Cloud Shell 中執行 az group deleteaz ad sp delete 命令,即可刪除資源群組:

az group delete --name "aksedge-training" --force-deletion-types Microsoft.Compute/virtualMachines
az ad sp delete --id "<your-service-principal-ID>"

重要

為了避免產生不必要的費用,您必須移除您在此課程模組中使用的 Azure 資源和服務主體。