1. 首页 > Rancher教程 > 正文

Rancher教程FG020-Rancher GitOps与应用自动同步实战

本篇文章详细介绍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:443
fgedu123456789
NAME            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   5m

from 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' updated

3.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.yaml

3.3 应用自动同步配置

在Argo CD中创建应用并配置自动同步。

application 'fgedu-nginx' created
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 (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 available
NAME                                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          2m
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
prod-fgedu-nginx-svc   LoadBalancer   10.43.234.100   192.168.1.201    80:31236/TCP   3m

Part04-生产案例与实战讲解

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 available
NAME                                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          1m

4.2 多集群应用分发实战

使用Argo CD ApplicationSet实现多集群应用分发。

/Rancher/app/gitops/appset.yaml <
applicationset.argoproj.io/fgedu-appset created
NAME                    CLUSTER         NAMESPACE   PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS
fgedu-nginx             local           fgedu-prod  default  Synced  Healthy  Auto        
cluster1-fgedu-nginx    cluster1        fgedu-prod  default  Synced  Healthy  Auto        
cluster2-fgedu-nginx    cluster2        fgedu-prod  default  Synced  Healthy  Auto        
NAME           AGE
fgedu-appset   5m

4.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  Git
application 'fgedu-nginx' rollback successful
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 (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 available
NAME                                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          10m
time="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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息