本篇文章详细介绍Rancher GitOps工作流程,包括Argo CD集成、应用自动同步、多集群部署、版本回滚等实战内容。风哥教程参考Rancher官方文档GitOps与持续交付相关章节。
目录大纲
Part01-基础概念与理论知识
1.1 GitOps工作原理与优势
GitOps是一种基于Git的持续交付方法,将Git仓库作为应用部署的唯一真实来源。当Git仓库中的配置发生变化时,GitOps工具自动检测并同步到目标集群。优势包括版本控制、审计追踪、自动化部署、快速回滚等。Rancher通过Argo CD实现GitOps能力,支持多集群统一管理。更多视频教程www.fgedu.net.cn
1.2 Argo CD架构与核心组件
Argo CD由多个核心组件组成:API Server提供REST API和Web UI,Application Controller监控Git仓库并同步应用状态,Repository Server处理Git仓库访问,Redis Server提供缓存服务。Argo CD支持多种同步策略:自动同步、手动同步、定时同步,支持多种资源类型:Deployment、Service、ConfigMap、Secret等。学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 Git仓库结构设计
建议采用多仓库策略:基础配置仓库存储集群级别资源,应用仓库存储应用配置。目录结构按环境划分:dev、test、prod。每个环境包含独立的Helm values文件。使用Git分支管理不同版本:main分支对应生产环境,dev分支对应开发环境。学习交流加群风哥QQ113257174
2.2 多环境部署策略
生产环境建议采用蓝绿部署或金丝雀发布策略。蓝绿部署维护两套完整环境,切换时切换流量。金丝雀发布逐步放量,先部署到少量Pod观察效果。使用Argo CD的ApplicationSet实现多集群统一部署,通过ClusterSelector选择目标集群。更多学习教程公众号风哥教程itpux_com
Part03-生产环境项目实施方案
3.1 Argo CD安装与配置
在Rancher集群中安装Argo CD。
# 创建命名空间 kubectl create namespace argocd # 添加Argo CD Helm仓库 helm repo add argo https://argoproj.github.io/argo-helm # 更新仓库 helm repo update
"argo" has been added to your repositories Hang tight while we grab the latest from your chart repository... ...Successfully got an update from the "argo" chart repository Update Complete. ⎈Happy Helming!⎈
NAME: argocd LAST DEPLOYED: Fri Apr 10 11:00:00 2026 NAMESPACE: argocd STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thank you for installing argo-cd! Release: argocd Chart: argo-cd Version: 5.51.6 Chart URL: https://github.com/argoproj/argo-helm To get the admin password: kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d To access Argo CD UI: kubectl port-forward svc/argocd-server -n argocd 8080:443fgedu123456789NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-server LoadBalancer 10.43.123.100 192.168.1.200 80:31234/TCP,443:31235/TCP 5mfrom Rancher视频:www.itpux.com
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 85.2M 100 85.2M 0 0 15.2M 0 0:00:05 0:00:05 --:--:-- 18.3M'admin' logged in successfully Context '192.168.1.200' updated3.2 Git仓库与应用配置
创建Git仓库并配置应用清单。
/Rancher/app/gitops/fgedu-app/base/deployment.yaml < /Rancher/app/gitops/fgedu-app/base/service.yaml < /Rancher/app/gitops/fgedu-app/overlays/prod/kustomization.yaml < /Rancher/app/gitops/fgedu-app/overlays/prod/replicas.yaml < Initialized empty Git repository in /Rancher/app/gitops/fgedu-app/.git/ [master (root-commit) 1234567] Initial commit: fgedu-nginx application 5 files changed, 87 insertions(+) create mode 100644 base/deployment.yaml create mode 100644 base/service.yaml create mode 100644 overlays/prod/kustomization.yaml create mode 100644 overlays/prod/replicas.yaml3.3 应用自动同步配置
在Argo CD中创建应用并配置自动同步。
application 'fgedu-nginx' createdName: fgedu-nginx Project: default Server: https://kubernetes.default.svc Repo: /Rancher/app/gitops/fgedu-app Target: HEAD Path: overlays/prod SyncWindow: Sync Allowed Sync Policy: Auto Sync Status: Synced to HEAD (1234567) Health Status: Healthy GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE apps Deployment fgedu-prod prod-fgedu-nginx Synced Healthy Deployment is available. Replicas: 5 Service fgedu-prod prod-fgedu-nginx-svc Synced Healthy Service is availableNAME READY STATUS RESTARTS AGE prod-fgedu-nginx-5d4f8b6c6-abc12 1/1 Running 0 2m prod-fgedu-nginx-5d4f8b6c6-def34 1/1 Running 0 2m prod-fgedu-nginx-5d4f8b6c6-ghi56 1/1 Running 0 2m prod-fgedu-nginx-5d4f8b6c6-jkl78 1/1 Running 0 2m prod-fgedu-nginx-5d4f8b6c6-mno90 1/1 Running 0 2mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE prod-fgedu-nginx-svc LoadBalancer 10.43.234.100 192.168.1.201 80:31236/TCP 3mPart04-生产案例与实战讲解
4.1 应用部署与同步实战
修改应用配置并验证自动同步。
/Rancher/app/gitops/fgedu-app/overlays/prod/replicas.yaml < [master 2345678] Update replicas to 8 1 file changed, 1 insertion(+), 1 deletion(-)Name: fgedu-nginx Project: default Server: https://kubernetes.default.svc Repo: /Rancher/app/gitops/fgedu-app Target: HEAD Path: overlays/prod SyncWindow: Sync Allowed Sync Policy: Auto Sync Status: Synced to HEAD (2345678) Health Status: Healthy GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE apps Deployment fgedu-prod prod-fgedu-nginx Synced Healthy Deployment is available. Replicas: 8 Service fgedu-prod prod-fgedu-nginx-svc Synced Healthy Service is availableNAME READY STATUS RESTARTS AGE prod-fgedu-nginx-5d4f8b6c6-abc12 1/1 Running 0 5m prod-fgedu-nginx-5d4f8b6c6-def34 1/1 Running 0 5m prod-fgedu-nginx-5d4f8b6c6-ghi56 1/1 Running 0 5m prod-fgedu-nginx-5d4f8b6c6-jkl78 1/1 Running 0 5m prod-fgedu-nginx-5d4f8b6c6-mno90 1/1 Running 0 5m prod-fgedu-nginx-5d4f8b6c6-pqr01 1/1 Running 0 1m prod-fgedu-nginx-5d4f8b6c6-stu23 1/1 Running 0 1m prod-fgedu-nginx-5d4f8b6c6-vwx45 1/1 Running 0 1m4.2 多集群应用分发实战
使用Argo CD ApplicationSet实现多集群应用分发。
/Rancher/app/gitops/appset.yaml < applicationset.argoproj.io/fgedu-appset createdNAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS fgedu-nginx local fgedu-prod default Synced Healthy Autocluster1-fgedu-nginx cluster1 fgedu-prod default Synced Healthy Auto cluster2-fgedu-nginx cluster2 fgedu-prod default Synced Healthy Auto NAME AGE fgedu-appset 5m4.3 版本回滚与故障处理
演示应用版本回滚操作。
ID DATE REVISION AUTHOR ORIGIN 0 2026-04-10 11:30:00 2345678 fgeduadmin Git 1 2026-04-10 11:00:00 1234567 fgeduadmin Gitapplication 'fgedu-nginx' rollback successfulName: fgedu-nginx Project: default Server: https://kubernetes.default.svc Repo: /Rancher/app/gitops/fgedu-app Target: HEAD Path: overlays/prod SyncWindow: Sync Allowed Sync Policy: Auto Sync Status: Synced to HEAD (1234567) Health Status: Healthy GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE apps Deployment fgedu-prod prod-fgedu-nginx Synced Healthy Deployment is available. Replicas: 5 Service fgedu-prod prod-fgedu-nginx-svc Synced Healthy Service is availableNAME READY STATUS RESTARTS AGE prod-fgedu-nginx-5d4f8b6c6-abc12 1/1 Running 0 10m prod-fgedu-nginx-5d4f8b6c6-def34 1/1 Running 0 10m prod-fgedu-nginx-5d4f8b6c6-ghi56 1/1 Running 0 10m prod-fgedu-nginx-5d4f8b6c6-jkl78 1/1 Running 0 10m prod-fgedu-nginx-5d4f8b6c6-mno90 1/1 Running 0 10mtime="2026-04-10T11:35:00Z" level=info msg="Starting sync operation" time="2026-04-10T11:35:01Z" level=info msg="Rolling back to revision 1234567" time="2026-04-10T11:35:02Z" level=info msg="Updating deployment prod-fgedu-nginx" time="2026-04-10T11:35:05Z" level=info msg="Deployment updated successfully" time="2026-04-10T11:35:06Z" level=info msg="Sync operation completed successfully"Part05-风哥经验总结与分享
5.1 生产环境最佳实践
1. 使用Git分支管理不同环境,避免配置冲突
2. 配置自动同步策略前先在测试环境验证
3. 使用Kustomize或Helm管理多环境配置
4. 配置健康检查和就绪探针,确保应用稳定
5. 设置资源限制,防止资源耗尽
6. 定期备份Argo CD配置和Git仓库
7. 监控同步状态,及时处理同步失败
8. 实施权限控制,限制应用修改权限5.2 常见问题与解决方案
1. 同步失败:检查Git仓库连接、配置文件语法、权限设置
2. 应用健康检查失败:验证应用配置、检查Pod日志、确认资源充足
3. 回滚失败:检查Git历史记录、确认目标版本存在
4. 多集群同步不一致:检查集群配置、验证网络连通性
5. 资源冲突:使用命名空间隔离、配置资源配额
6. 同步延迟:调整同步间隔、优化Git仓库性能
7. 权限错误:配置正确的RBAC权限、验证ServiceAccount
8. 配置漂移:启用自动修复、定期检查配置一致性本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
