練習 - 使用 GitOps 和 Flux 將範例應用程式部署至叢集
在此練習中,我們會使用 GitOps 和 Flux 將容器化 Linux 應用程式部署到已啟用 Arc 的 AKS 邊緣程式集叢集。
派生示範應用程式 GitHub 存放庫
如果您還沒有 GitHub 帳戶,請立即建立一個。
選取 [派生] 和 [建立分叉],即可瀏覽至 Azure Arc Jumpstart Apps 存放庫,並將其派生至您自己的 GitHub 帳戶。
瀏覽至您的帳戶存放庫並選取 azure-arc-jumpstart-apps 存放庫,以確認已成功建立分支。 存放庫 URL 應如下所示:
https://github.com/<your-github-username>/azure-arc-jumpstart-apps
部署應用程式
在 Azure 入口網站 中,瀏覽至已啟用 Arc 的 AKS 邊緣程式集叢集,然後選取 [設定] 下的 [GitOps]。 讓我們建立叢集層級設定和命名空間層級設定。
針對叢集層級設定,選取 [建立],並使用下列值:
屬性 輸入 基本概念 設定名稱 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 上,再建立命名空間層級設定 (如果合規性處於擱置狀態,則可以繼續建立下一個設定)。針對命名空間層級設定,選取 [建立],並使用下列值:
屬性 輸入 基本概念 設定名稱 config-helloarc
Namespace hello-arc
範圍 Namespace 類型 Flux v2 來源 來源種類 Git 存放庫 存放庫 URL <分支的 URL> 參考類型 分支 分行 main 存放庫類型 公開 同步處理間隔 1 同步處理逾時 10 Kustomizations Kustomizations 選取 [建立] 執行個體名稱 app
路徑 ./hello-arc/releases/app
同步處理間隔 10 同步處理逾時 10 剪除 已啟用 Force 未啟用 重新整理您的設定資料表,並等候設定安裝並符合規範。
在您的 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
若要檢視應用程式,請開啟瀏覽器並瀏覽至指派給
ingress-nginx-controller
服務的 EXTERNAL-IP 位址。 在上一個範例中,指派給服務的 IP 位址為 192.168.0.4。
更新應用程式
我們已設定 GitOps 和 Flux,以監看分支存放庫主要分支中的變更。 讓我們對應用程式進行變更,並查看 GitOps 的回應方式。
在 azure-arc-jumpstart-apps 存放庫的分支中,瀏覽至 hello-arc > 版本 > 應用程式 > hello-arc.yaml。
選取 [編輯],以對此 YAML 檔案進行變更。 將 replicaCount 變更為 5。 將值變更為 [部署至 AKS 邊緣程式集 GitOps!]。
選取 [認可變更...],然後 [認可變更],即可認可該變更。
使用
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 提取變更。
重新整理您的應用程式即可看到此變更反映為滾動更新。
清除 Azure 資源
在本課程模組的課程中,您已建立 Azure 資源。 如果您在未來不需要這些資源,請在 Azure Cloud Shell 中執行 az group delete 和 az 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 資源和服務主體。