资讯动态

Argo CD 如何配置 Sync Windows 限制同步窗口并覆盖手动同步

发布时间:2026/9/13 9:12:01 来源:尧图企业网站定制
Argo CD 如何配置 Sync Windows 限制同步窗口并覆盖手动同步【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd当你需要“白天自动同步、维护时段禁止同步但保留紧急手动同步的入口”这类要求时Argo CD 的 Sync Windows 功能可以直接落地在AppProject上定义一个带 cron 计划的时间窗口窗口外或 deny 窗口内自动同步会被拒绝同时可以通过manualSync选项让手动同步不受窗口拦截。本文基于仓库文档 docs/user-guide/sync_windows.md 与各命令参考给出从创建窗口、开启手动同步覆盖到验证状态的完整操作路径。Sync Windows 的判定规则Sync Window 由三个要素定义类型kindallow或deny、cron 格式的schedule加duration以及一组选择器applications/namespaces/clusters。选择器支持通配符wildcards。判定逻辑按以下规则执行没有任何窗口匹配该 Application 时所有同步允许存在匹配的allow窗口时只有在allow窗口处于激活期间才允许同步存在匹配的deny窗口时窗口激活期间所有同步被拒绝激活的allow与激活的deny同时匹配时deny优先同步被拒绝。窗口与 Application 是多对多关系一个 Application 可能受多个窗口影响一个窗口也可以覆盖多个 Application。选择器可以通过 Application 名称、spec.destination.name/.server集群、spec.destination.namespace三种方式匹配多种选择器同时使用时默认是OR关系任一命中即生效需要AND语义时在 CLI 加--use-and-operator参见 argocd proj windows add 命令参考。窗口同时作用于手动同步和自动同步但支持对手动同步单独放行——这就是“覆盖手动同步”的机制。创建一个限制同步的 deny 窗口主路径用 CLI 创建。下面以PROJECT作为占位符替换为你的 AppProject 名称如default该示例在每天 22:00 起对全部应用禁止同步 1 小时argocd proj windows add PROJECT \ --kind deny \ --schedule 0 22 * * * \ --duration 1h \ --applications *常用参数完整列表见命令参考--kindallow或deny--schedulecron 格式计划如0 22 * * *--duration窗口持续时长如1h、30m、8h--applications/--namespaces/--clusters逗号分隔支持通配符例如--applications prod-*,website--time-zone窗口时区默认UTC--manual-sync创建时直接允许手动同步见下一节。可选路径直接在 AppProject 清单中声明同样的窗口也可以写在AppProject的spec.syncWindows字段里便于随清单管理。以下 YAML 取自文档示例包含一个带手动同步覆盖的allow窗口和一个deny窗口apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: default spec: syncWindows: - kind: allow schedule: 10 1 * * * duration: 1h applications: - *-prod manualSync: true - kind: deny schedule: 0 22 * * * timeZone: Europe/Amsterdam duration: 1h namespaces: - default完整的字段示例含syncOverrun、按clusters选择可参考 docs/operator-manual/project.yaml 中的syncWindows段落。允许手动同步覆盖窗口限制窗口默认同时拦截手动同步和自动同步。如果你只想阻止自动同步、保留手动操作入口需要为窗口开启手动同步覆盖。三种方式任选其一创建时通过argocd proj windows add加--manual-sync标志对已有窗口用命令开启/关闭argocd proj windows enable-manual-sync PROJECT ID argocd proj windows disable-manual-sync PROJECT IDID是窗口列表中的序号通过下一节的list命令获取在AppProject清单中为对应窗口设置manualSync: true。开启后窗口激活期间自动同步仍被拒绝但手动同步可以进行。UI 上窗口的状态面板会以颜色区分Red: sync denied、Orange: manual allowed、Green: sync allowed。验证窗口配置与同步状态用list命令确认窗口已生效示例输出取自文档各列值仅为文档示例argocd proj windows list PROJECTID STATUS KIND SCHEDULE DURATION APPLICATIONS NAMESPACES CLUSTERS MANUALSYNC SYNCOVERRUN TIMEZONE USEANDOPERATOR 0 Active allow * * * * * 1h - - prod1 Disabled Disabled UTC Disabled 1 Inactive deny * * * * 1 3h - default - Disabled Enabled UTC Disabled 2 Inactive allow 1 2 * * * 1h prod-* - - Enabled Disabled UTC Disabled 3 Active deny * * * * * 1h - default - Disabled Disabled UTC Disabled检查STATUSActive/Inactive是否符合预期时间以及MANUALSYNC列是否为Enabled。也可用argocd proj windows list PROJECT -o yaml查看 YAML 格式。再从 Application 维度确认窗口实际作用到了目标应用argocd app get APPAPP替换为应用名。文档示例输出中的SyncWindow和Assigned Windows两行反映了当前窗口状态以下为文档示例窗口值取决于你的配置Name: guestbook Project: default Server: in-cluster Namespace: default SyncWindow: Sync Denied Assigned Windows: deny:0 2 * * *:1h,allow:0 2 3 3 3:1h Sync Policy: Automated Sync Status: Synced to (5c2d89b) Health Status: HealthySyncWindow显示当前判定结果如Sync DeniedAssigned Windows列出命中的窗口可用于核对窗口是否按预期匹配到了该应用。修改与删除已有窗口所有字段都可以通过 CLI 或 UI 更新。注意applications、namespaces、clusters三个字段的更新是全量替换语义——更新时必须包含该字段当前的全部值否则已有值会被丢弃。例如把 namespaces 更新为三个值argocd proj windows update PROJECT ID --namespaces default,kube-system,prod1修改计划时间用--scheduleargocd proj windows update PROJECT ID --schedule 0 20 * * *不再需要的窗口直接删除ID同样从list命令获取argocd proj windows delete PROJECT ID限制与注意事项当allow与deny同时激活匹配时deny总是覆盖allow设计维护窗口时要考虑这一优先级多个选择器之间默认是OR需要“同时满足应用 集群”这类条件时显式加--use-and-operator--schedule是 cron 格式且--time-zone默认UTC跨时区集群要显式设置--time-zone清单中为timeZone避免窗口落在错误时刻若同步本身较长、可能超出窗口边界文档另提供了syncOverrun选项--sync-overrun/syncOverrun: true可用enable-sync-overrun/disable-sync-overrun命令调整允许已开始的同步在离开允许窗口后继续运行详见 sync windows 文档 的 Sync Overrun 一节。完成配置后用argocd proj windows list PROJECT确认窗口状态与MANUALSYNC列再用argocd app get APP确认目标应用出现预期的SyncWindow结果即代表限制与手动同步覆盖都已按预期生效。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价