news 2026/5/8 21:53:34

7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

7.3 实战演练:监听镜像变更与监听应用定义的双模式工作流打造

1. 引言:两种 GitOps 模式之争

在 GitOps 实践中,有两种主流模式:

  1. 监听应用定义(App-of-Apps):Argo CD 监听 Git 中的应用定义变更,自动同步。
  2. 监听镜像变更(Image-based):Argo CD Image Updater 监听镜像仓库的新 Tag,自动更新 Git 并触发部署。

两种模式各有优劣,本节将通过实战对比,帮你选择最适合的场景。


2. 模式一:监听应用定义(传统 GitOps)

2.1 工作流

开发者提交代码 ↓ CI 构建镜像并推送 (myapp:v1.2.3) ↓ 开发者/CI 修改 Git 中的应用定义 (更新 image.tag) ↓ Argo CD 检测到 Git 变更 ↓ 自动同步到集群

2.2 实现步骤

步骤 1:CI 构建镜像

# .github/workflows/ci.yml-name:Build and Pushrun:|docker build -t myapp:${GITHUB_SHA} . docker push myapp:${GITHUB_SHA}

步骤 2:更新应用定义
有两种方式:

方式 A:CI 自动更新(推荐)

-name:Update Deploymentrun:|git clone https://github.com/org/deploy-repo.git cd deploy-repo # 使用 yq 或 sed 更新 values.yaml yq eval '.image.tag = "${GITHUB_SHA}"' -i apps/myapp/overlays/prod/values.yaml git commit -m "Update myapp to ${GITHUB_SHA}" git push

方式 B:开发者手动更新
开发者收到 CI 构建成功的通知后,手动修改 Git 中的应用定义。

步骤 3:Argo CD 自动同步
Argo CD 检测到 Git 变更,自动同步。

2.3 优缺点

优点

  • 完全符合 GitOps 原则(Git 是唯一事实来源)
  • 变更可审计(所有部署都有 Git 提交记录)
  • 支持手动审批(PR Review)

缺点

  • 需要 CI 系统有 Git 写权限(安全风险)
  • 流程稍显复杂(需要两步:构建 + 更新 Git)

3. 模式二:监听镜像变更(Image-based GitOps)

3.1 工作流

开发者提交代码 ↓ CI 构建镜像并推送 (myapp:v1.2.3) ↓ Argo CD Image Updater 检测到新镜像 ↓ 自动更新 Git 中的应用定义 ↓ Argo CD 检测到 Git 变更 ↓ 自动同步到集群

3.2 实现步骤

步骤 1:安装 Argo CD Image Updater

kubectl apply -n a
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 17:44:03

为什么你的PyTorch检测不到GPU?7步快速诊断与修复指南

第一章:为什么你的PyTorch检测不到GPU?在深度学习项目中,使用GPU可以显著加速模型训练过程。然而,许多开发者在配置PyTorch环境时会遇到无法检测到GPU的问题。这通常并非硬件故障,而是由驱动、库版本不匹配或安装配置错…

作者头像 李华
网站建设 2026/5/5 16:42:12

6.2 镜像安全:从签名到漏洞扫描,打造可信软件供应链

6.2 镜像安全:从签名到漏洞扫描,打造可信软件供应链 1. 引言:镜像是生产的“载体” 将“可信”的定义写进镜像:可追溯(来源确定)、可验证(签名验签)、可评估(SBOM+扫描)。 2. SBOM:先列清单,再谈风控 2.1 生成 SBOM(Syft) syft packages harbor.example.com/…

作者头像 李华
网站建设 2026/5/2 9:32:27

线程池参数设置不当导致系统崩溃?这5个坑你必须避开

第一章:线程池参数设置不当导致系统崩溃?这5个坑你必须避开 在高并发系统中,线程池是提升性能的关键组件。然而,若核心参数配置不合理,极易引发资源耗尽、响应延迟甚至服务雪崩。以下是开发者在实际项目中常踩的五个典…

作者头像 李华
网站建设 2026/5/7 13:28:43

空指针不再怕,Java字符串判空实战技巧全解析

第一章:Java字符串判空的核心概念与重要性 在Java开发中,字符串是最常用的数据类型之一。由于其频繁参与业务逻辑判断、数据校验和用户交互,对字符串进行判空操作成为保障程序健壮性的关键步骤。未正确处理null值或空字符串,极易引…

作者头像 李华