gitops-workflow 是做什麼的?
使用 ArgoCD 和 Flux 實現 GitOps 工作流程,用於自動化、宣告式 Kubernetes 部署與持續調和。在實施 GitOps 實踐、自動化 Kubernetes 部署或設定宣告式基礎設施管理時使用。
概述
本指南提供使用 ArgoCD 和 Flux 設置 GitOps 工作流程的逐步說明,以實現 Kubernetes 叢集中的自動化部署與持續調和。
先決條件
- 有效的 Kubernetes 叢集(1.19 或更新版本)
kubectl配置為與您的叢集通訊- Git 儲存庫(GitHub、GitLab 或 Bitbucket)
- 對 Kubernetes 資源的基本了解
安裝 ArgoCD
-
建立
argocd命名空間:kubectl create namespace argocd -
安裝 ArgoCD:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -
存取 ArgoCD API 伺服器:
kubectl port-forward svc/argocd-server -n argocd 8080:443
安裝 Flux
-
使用
fluxCLI 安裝 Flux:flux install -
驗證安裝:
flux check --pre
使用 ArgoCD 配置應用程式
-
建立一個指向您的 Git 儲存庫的應用程式:
argocd app create my-app --repo https://github.com/your-org/your-repo.git --path apps/production --dest-server https://kubernetes.default.svc --dest-namespace production -
同步應用程式:
argocd app sync my-app
使用 Flux 配置應用程式
-
建立一個
GitRepository資源:apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: GitRepository metadata: name: my-app namespace: flux-system spec: interval: 1m url: https://github.com/your-org/your-repo.git ref: branch: main -
建立一個
Kustomization資源:apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 kind: Kustomization metadata: name: my-app namespace: flux-system spec: interval: 10m sourceRef: kind: GitRepository name: my-app path: ./apps/production prune: true
最佳實踐
- 使用私有 Git 儲存庫並配置 SSH 金鑰或令牌以進行安全存取。
- 為每個環境(開發、測試、生產)實施不同的分支。
- 使用 Helm 或 Kustomize 進行配置管理。
- 監控 ArgoCD 和 Flux 狀態以確保正常運作。
- 設定 Webhook 以實現自動觸發。
疑難排解
- 同步問題:檢查
argocd app get my-app或flux reconcile kustomization my-app的輸出。 - 權限錯誤:驗證 Git 存取憑證。
- 資源衝突:確保在 ArgoCD 和 Flux 中沒有重疊的資源。