新聞中心
使用 Argo CD 的 UI 界面可視化管理 Flux 應(yīng)用?
作者:陽明 2023-10-08 07:59:25
云計算
云原生 Weave GitOps 改善了開發(fā)人員體驗,簡化了在 Kubernetes 上部署和管理云原生應(yīng)用程序的復(fù)雜性和認(rèn)知負(fù)擔(dān),使團(tuán)隊可以更快地開展工作,它是 Flux 的一個強(qiáng)大擴(kuò)展。

創(chuàng)新互聯(lián)公司主營牧野網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,牧野h5小程序定制開發(fā)搭建,牧野網(wǎng)站營銷推廣歡迎牧野等地區(qū)企業(yè)咨詢
Flux 項目原本提供了一個 Web UI 來管理 Flux 集群,但該項目已經(jīng)存檔,F(xiàn)luxCD 組織不再開發(fā),所以我們這里不再介紹了,如果你想使用 Web UI 來管理 Flux 集群,可以使用 Weaveworks 提供的 weave-gitops(https://github.com/weaveworks/weave-gitops) 項目,該下面為 Flux 提供了一個免費的開源 GUI。
weave gitops
Weave GitOps 改善了開發(fā)人員體驗,簡化了在 Kubernetes 上部署和管理云原生應(yīng)用程序的復(fù)雜性和認(rèn)知負(fù)擔(dān),使團(tuán)隊可以更快地開展工作,它是 Flux 的一個強(qiáng)大擴(kuò)展。
Weave GitOps 可以幫助應(yīng)用程序運(yùn)維人員輕松發(fā)現(xiàn)和解決問題 - 簡化和擴(kuò)展 GitOps 和持續(xù)交付的采用。UI 提供了引導(dǎo)式體驗,可幫助用戶輕松發(fā)現(xiàn) Flux 對象之間的關(guān)系并加深理解,同時提供對應(yīng)用程序部署的見解。
Weave GitOps 初了提供了一個開源的版本之外,還有一個企業(yè)版本,其 OSS 版本是一個簡單的開源開發(fā)者平臺,適合那些沒有 Kubernetes 專業(yè)知識但想要云原生應(yīng)用程序的人。它包括 UI 和許多其他功能,使團(tuán)隊超越簡單的 CI/CD 系統(tǒng)。體驗啟用 GitOps 并在集群中運(yùn)行應(yīng)用程序是多么容易。我們這里當(dāng)然是使用開源版本了。
Weave GitOps 提供了一個命令行界面,可幫助用戶創(chuàng)建和管理資源。gitops CLI 目前在 Mac(x86 和 Arm)和 Linux 上受支持,包括 Windows Subsystem for Linux (WSL)。
有多種方法可以安裝 gitops CLI:
$ curl --silent --location "https://github.com/weaveworks/weave-gitops/releases/download/v0.32.0/gitops-$(uname)-$(uname -m).tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/gitops /usr/local/bin
$ gitops version
Current Version: 0.32.0
GitCommit: 49a4249d8c205f14f0777c921cd69c04951e208f
BuildTime: 2023-09-13T17:23:13Z
Branch: releases/v0.32.0當(dāng)然如果是 Mac 用戶可以使用 Homebrew 進(jìn)行一鍵安裝:
brew tap weaveworks/tap
brew install weaveworks/tap/gitopsCLI 工具安裝完成后,接下來就可以來部署 Weave GitOps 了,我們將:
- 使用 GitOps CLI 工具生成 HelmRelease 和 HelmRepository 對象。
- 創(chuàng)建一些登錄憑據(jù)來訪問 Dashboard。
- 將生成的 yaml 提交到我們的基礎(chǔ)設(shè)施代碼庫。
- 觀察它們是否已同步到集群。
前面我們安裝 Flux 的基礎(chǔ)設(shè)施代碼倉庫為 http://gitlab.k8s.local/cnych/flux,現(xiàn)在我們 Clone 這個倉庫到本地:
$ git clone http://gitlab.k8s.local/cnych/flux
$ cd flux然后運(yùn)行以下命令創(chuàng)建 HelmRepository 和 HelmRelease 來部署 Weave GitOps:
PASSWORD="gitops321" # 設(shè)置登錄密碼
gitops create dashboard ww-gitops \
--password=$PASSWORD \
--export > ./clusters/my-cluster/weave-gitops-dashboard.yaml
該命令會存儲密碼的哈希值,這在演示和測試的時候相對安全,但我們強(qiáng)烈建議在生產(chǎn)系統(tǒng)中使用更安全的密鑰存儲方法(如 Flux 的 SOPS 集成)。
然后提交 weave-gitops-dashboard.yaml 并將其推送到 flux 基礎(chǔ)存儲庫中去:
git add -A && git commit -m "Add Weave GitOps Dashboard"
git push然后隔一會兒可以去檢測下是否已經(jīng)部署成功了:
$ kubectl get pods -n flux-system如果想要定制 Weave GitOps 的部署,可以通過配置 Helm Chart 的 Values 來實現(xiàn),可配置的參數(shù)可以參考文檔:https://docs.gitops.weave.works/docs/references/helm-reference/。
現(xiàn)在我們想要訪問 Weave GitOps 的 Web UI,可以通過 kubectl port-forward 命令來實現(xiàn):
kubectl port-forward svc/ww-gitops-weave-gitops -n flux-system 9001:9001然后我們就可以通過瀏覽器訪問 http://localhost:9001 來訪問 Weave GitOps 的 Web UI 了,輸入用戶名為 admin,密碼為前面配置的 PASSWORD 的值,即可登錄:
weave gitops
登錄后,可以將進(jìn)入 APPLICATIONS 視圖,該視圖可以快速了解部署的狀態(tài)并顯示來自 Kustomization 和 HelmRelease 對象的摘要信息。我們還可以使用右上角的切換開關(guān)應(yīng)用深色模式。
APPLICATIONS
讓我們來探索下 flux-system 這個基礎(chǔ)設(shè)施 Kustomization 對象,返回到應(yīng)用程序視圖,并點擊 flux-system 對象。
flux-system detail
可能需要一些時間來加載數(shù)據(jù)。一旦加載完成,應(yīng)該會得到一個類似上面截圖的結(jié)果。在這里,可以找到有關(guān)資源定義的關(guān)鍵信息。
- 它正在讀取哪個來源 Source。
- 最新應(yīng)用的提交。
- 正在部署的源存儲庫的確切路徑。
- Flux 將尋求調(diào)諧聲明狀態(tài)和實時狀態(tài)之間任何差異的時間間隔 Interval。例如,如果集群上應(yīng)用了 kubectl 補(bǔ)丁,它將被有效地恢復(fù)。如果該對象報告了較長的錯誤消息,您將能夠在此頁面上看到完整的錯誤消息。
在 UI 的左側(cè)菜單中,單擊 SOURCES 視圖,這將向你顯示 Flux 從何處提取其應(yīng)用程序定義(例如 Git 存儲庫)以及該同步的當(dāng)前狀態(tài)。Sources 顯示來自 GitRepository、HelmRepository、HelmChart 和 Bucket 對象的摘要信息。
源列表
Sources 表視圖顯示有關(guān)狀態(tài)的信息,以便可以查看 Flux 是否能夠從給定源成功拉取,以及最后檢測到哪個特定提交。它向你顯示諸如 INTERVAL 之類的關(guān)鍵信息,即 Flux 在指定源位置檢查更新的頻率。你還可以查看該來源是否經(jīng)過驗證。
除此之外還有其他的一些功能,比如 IMAGE AUTOMATION 頁面、POLICIES 也沒、NOTIFICATIONS 頁面等等。但是可以發(fā)現(xiàn)這個 UI 主要是用于展示的,我們并不能通過頁面去創(chuàng)建資源對象,所以我們還是推薦使用命令行來管理 Flux 集群。
Flamingo
Flamingo 是 Argo 的 Flux 子系統(tǒng)(FSA),F(xiàn)lamingo 的容器鏡像可以作為等效的 ArgoCD 版本的插件擴(kuò)展,與 Argo CD 一起可視化和管理 Flux 工作負(fù)載。
Loopback Reconciliation 是 Flamingo 的一項功能,有助于同步使用 GitOps 方法部署的應(yīng)用程序。當(dāng) Argo CD 用戶界面中啟用 FluxSubsystem 功能時,它會被激活。其工作原理如下:
- 在 Kustomization 或 Helm 模式下創(chuàng)建 Argo CD 應(yīng)用程序清單并將其部署到集群。
- Flamingo 將 Argo CD 應(yīng)用程序清單轉(zhuǎn)換為等效的 Flux 對象,可以是 Kustomization 對象,也可以是帶有 Source 的 HelmRelease 對象,具體取決于 Argo CD 清單中使用的模式。如果應(yīng)用程序中已存在 Flux 對象,F(xiàn)lamingo 將使用它們作為引用,而不是創(chuàng)建新對象。
- Flamingo 通過使用 Flux 對象的狀態(tài)作為所需狀態(tài)來同步或協(xié)調(diào) Argo CD 應(yīng)用程序的狀態(tài)與其 Flux 對應(yīng)項。為此,環(huán)回調(diào)諧機(jī)制繞過了 Argo CD 中的本機(jī)協(xié)調(diào)過程,而是依賴于 Flux 調(diào)諧。然后它使用 Flux 對象的結(jié)果向 Argo CD 報告。
Loopback Reconciliation 通過使應(yīng)用程序的狀態(tài)與 Flux 對象中定義的所需狀態(tài)保持同步,有助于確?;?GitOps 的部署的可靠性和一致性。
how to work
要安裝 Flamingo 比較簡單,我們可以通過 Flux 的 Kustomization 對象來部署,創(chuàng)建如下所示的資源對象:
# flamingo.yaml
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: fsa-demo
namespace: flux-system
spec:
interval: 30s
url: oci://ghcr.io/flux-subsystem-argo/flamingo/manifests
ref:
tag: latest
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: fsa-demo
namespace: flux-system
spec:
prune: true
interval: 2m
path: "./demo"
sourceRef:
kind: OCIRepository
name: fsa-demo
timeout: 3m然后直接應(yīng)用該資源對象即可:
$ kubectl apply -f flamingo.yaml
$ kubectl get ocirepository fsa-demo -n flux-system
NAME URL READY STATUS AGE
fsa-demo oci://ghcr.io/flux-subsystem-argo/flamingo/manifests True stored artifact for digest 'latest@sha256:e9df1250e9e9ae2931a6121b11f30f989cb20aaa4326659fd8ee5b6dd8ddec94' 72s
$ kubectl get kustomization fsa-demo -n flux-system
NAME AGE READY STATUS
fsa-demo 82s True Applied revision: latest@sha256:e9df1250e9e9ae2931a6121b11f30f989cb20aaa4326659fd8ee5b6dd8ddec94上面的資源對象會創(chuàng)建一個 argocd 的命名空間,并會部署 Argo CD 的所有組件:
$ kubectl get pods -n argocd
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 2m16s
argocd-applicationset-controller-c9b9899d6-t4gh6 1/1 Running 0 2m16s
argocd-dex-server-798cc6585d-dtc4k 1/1 Running 0 2m16s
argocd-notifications-controller-5b77dc9659-7t9cw 1/1 Running 0 2m16s
argocd-redis-b5d6bf5f5-6kdgc 1/1 Running 0 2m16s
argocd-repo-server-785445967d-xxrq7 1/1 Running 0 2m16s
argocd-server-758f648df4-8zhc5 1/1 Running 0 2m16sargocd 部署完成后,我們可以通過 kubectl port-forward 命令來訪問 Argo CD 的 Web UI:
$ kubectl -n argocd port-forward svc/argocd-server 8003:443然后我們就可以通過瀏覽器訪問 https://localhost:8003 來訪問 Argo CD 的 Web UI 了。
argocd
默認(rèn)情況下會有 2 個 FSA 應(yīng)用,每個應(yīng)用程序由 1 個 Flux 的 Kustomization 和 1 個 Flux 的 GitRepository 組成。
argocd app
如果你現(xiàn)有集群中已經(jīng)安裝了 Argo CD,那么我們可以使用下面的命令來升級現(xiàn)有的 Argo CD。如果已經(jīng)安裝了 Argo CD,可以使用來自 FSA 的鏡像替換現(xiàn)有安裝的鏡像。
kustomize build https://github.com/flux-subsystem-argo/flamingo//release?ref=${FSA_VERSION} \
| yq e '. | select(.kind=="Deployment" or .kind=="StatefulSet")' - \
| kubectl -n argocd apply -f -如果想要將現(xiàn)有的 Flux 應(yīng)用轉(zhuǎn)換成 FSA 應(yīng)用,可以使用 flamingo 的 CLI 命令來實現(xiàn),所以首先需要安裝 flamingo 命令行工具,前往 Flamingo CLI Release 頁面下載對應(yīng)的版本即可,然后解壓后將二進(jìn)制文件移動到 /usr/local/bin 目錄下即可:
$ flamingo --version
flamingo version 0.3.1CLI 工具安裝完成后,接下來我們就可以將現(xiàn)有的 Flux 應(yīng)用轉(zhuǎn)換成 FSA 應(yīng)用了,比如現(xiàn)在我們創(chuàng)建一個如下所示的 Flux Kustomization 對象:
cat << EOF | kubectl apply -f -
---
apiVersion: v1
kind: Namespace
metadata:
name: podinfo-kustomize
---
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: podinfo
namespace: podinfo-kustomize
spec:
interval: 10m
url: oci://ghcr.io/stefanprodan/manifests/podinfo
ref:
tag: latest
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: podinfo
namespace: podinfo-kustomize
spec:
interval: 10m
targetNamespace: podinfo-kustomize
prune: true
sourceRef:
kind: OCIRepository
name: podinfo
path: ./
EOF創(chuàng)建后我們可以使用下面的命令來生成一個 FSA 應(yīng)用:
flamingo generate-app \
--app-name=podinfo-ks \
-n podinfo-kustomize ks/podinfo創(chuàng)建完成后我們再去訪問 Argo CD 的 Web UI,可以看到已經(jīng)生成了一個 FSA 應(yīng)用:
argocd ui
這樣我們就可以通過 Argo CD 的 Web UI 界面來管理 Flux 的應(yīng)用了。
網(wǎng)站題目:使用ArgoCD的UI界面可視化管理Flux應(yīng)用?
URL標(biāo)題:http://www.dlmjj.cn/article/ccohcgd.html


咨詢
建站咨詢
