GitOps 与声明式部署

共 20 题
#

1. Argo CD 的控制循环如何将 Git 期望状态同步到集群(diff/sync)?

A Argo CD 只在首次部署时比对一次
B Argo CD 直接执行用户的任意脚本
C Argo CD 持续比较 Git 期望状态与集群实际状态,经 diff 后按策略 sync 收敛,并支持自愈与 prune ✓ 正确答案
D Argo CD 无法删除集群中多余资源
#

2. ArgoCD 的 App-of-Apps 与 ApplicationSet 如何管理大规模多环境应用?

A 大规模场景应手写每个 Application 以清晰可控
B App-of-Apps 分层组织应用,ApplicationSet 按参数批量生成 Application,二者配合适合多环境多集群 ✓ 正确答案
C ApplicationSet 只能用于单一应用
D App-of-Apps 与 ApplicationSet 互斥,不能同时使用
#

3. Flux 的多集群管理中 Kustomization、HelmRelease、多租户 RBAC 与 Image Automation

A Flux 只能管理单个集群
B Flux 的 RBAC 无法在多租户中生效
C Image Automation 与 GitOps 声明式理念冲突,应禁用
D Kustomization 同步目录、HelmRelease 部署 chart、RBAC 隔离租户、Image Automation 自动更新镜像 ✓ 正确答案
#

4. GitOps 在 pull 模式与 push 模式的取舍

A 两者完全等价,无差别
B pull 模式由集群内 Agent 主动拉取,凭据留在集群内更安全;push 模式由 CI 主动推送,实现简单但暴露面大 ✓ 正确答案
C pull 模式必须暴露集群端口
D GitOps 只能使用 push 模式
#

5. GitOps 删除同步与 Prune 中资源删除如何安全执行、orphan 资源识别与级联删除风险控制

A Prune 应无条件清理所有多余资源
B 删除资源无需任何预览
C 应通过 dry-run 预览、关键资源保护注解与依赖评估来安全执行删除,避免级联误删 ✓ 正确答案
D Prune 只在首次部署时发生
#

6. 渐进式发布与 GitOps 协同中金丝雀/蓝绿期间 Git 期望状态与实际流量状态的偏差如何管理

A Git 中的期望状态应实时反映中间流量权重
B Git 状态与流量状态必须完全一致
C 渐进式发布期间不应操作任何流量
D 用 Argo Rollouts/Flagger 在 Git 期望状态之上编排流量,先切新版本按指标放大再收敛到终态,回滚时切回旧版本 ✓ 正确答案
#

7. Flux 与 ArgoCD 在同步机制、通知与多集群管理上的差异?

A 两者完全一致
B Flux 不支持通知
C ArgoCD 不支持 webhook
D ArgoCD 偏向单控制面集中管理多集群且内置 UI,Flux 偏向分布式多集群且更轻量 ✓ 正确答案
#

8. GitOps 与 IaC 的协同中 Terraform 管理集群外基础设施、GitOps 管理集群内资源的边界如何划分

A 集群内资源也应全部用 Terraform 管理
B 两者不能同时使用
C Terraform 管集群外基础设施与集群创建,GitOps 管集群内资源的持续交付,两层面边界清晰 ✓ 正确答案
D GitOps 应负责创建 VPC 等基础设施
#

9. GitOps 中期望状态(desired state)如何定义并作为唯一事实来源?

A 期望状态是命令式脚本描述达到目标的过程
B 期望状态无法回滚
C 实际状态应优先于期望状态
D 期望状态用声明式 manifest 定义,Git 提供版本化、可审计与回滚能力,从而成为唯一事实来源 ✓ 正确答案
#

10. GitOps 如何获取集群实际状态并与期望状态做差异比对?

A 实际状态直接取 Git 中的 manifest 即可
B 差异比对无需归一化,可直接比较
C 控制器通过 API Server 读取 live 状态,做字段归一化后与期望状态 diff,据此标记 OutOfSync 并决定是否同步 ✓ 正确答案
D 控制器从不读取集群实际状态
#

11. GitOps 的"配置漂移"如何检测(Diff/自动同步),误同步如何防范?

A 通过定期 Diff 检测漂移,自动同步时配合 dry-run 预览、关键资源保护与审计来防止误同步 ✓ 正确答案
B 漂移无需检测,只需定期人工核对
C 自动同步会自动纠正一切,无需任何保护
D 漂移检测只针对首次部署
#

12. GitOps 的核心,即声明式、版本控制与自动同步如何结合?

A GitOps 的自动同步与声明式无关
B GitOps 只需要版本控制,无需声明式
C 声明式、版本控制与自动同步三者共同构成 GitOps 的核心 ✓ 正确答案
D GitOps 不使用 Git 作为事实来源
#

13. 大规模 GitOps 同步性能中 Webhook 触发与轮询的取舍、同步风暴与并发限流的治理

A 只用轮询即可,无需考虑负载
B Webhook 触发低延迟、轮询兜底,并对并发同步限流、防同步风暴,兼顾可靠性与性能 ✓ 正确答案
C 同步风暴无法治理
D 并发同步越多越好
#

14. GitOps 分支保护与变更审批中签名提交、PR 评审与自动同步之间的权限边界设计

A 变更审批应放在集群层,控制器直接改集群
B 自动同步可绕过 Git 审批直接变更
C 签名提交可省略
D 生产分支受保护,PR 评审与签名提交在 Git 层把关,控制器只负责按 Git 收敛而不绕过审批 ✓ 正确答案
#

15. Argo CD 的同步与回滚机制中 sync 策略、资源钩子(hooks)与回滚到历史版本的流程

A 回滚是直接删除集群资源
B Argo CD 不支持回滚
C 通过 sync 策略(prune/force)、sync hooks 编排同步,回滚时把 targetRevision 指回历史版本重新收敛 ✓ 正确答案
D sync hooks 只用于通知
#

16. GitOps 中 CI 的产物如何交付给 CD,即镜像 digest、清单生成与推送仓库的分工与安全边界

A CI 构建镜像并更新 Git 中的 manifest digest,CD 从 Git 读取并同步,CI 不直接操作生产 ✓ 正确答案
B CI 直接部署生产集群
C 镜像 digest 无需固定
D CD 负责构建镜像
#

17. GitOps 中密钥如何管理(SealedSecrets/SOPS/External Secrets)而不落入 Git?

A 密钥可直接明文写入 Git 便于管理
B 密钥只能由人工在集群内创建
C 用 SealedSecrets/SOPS 加密或 External Secrets 引用外部密钥源,保证密钥不落 Git,由集群内机制解密 ✓ 正确答案
D GitOps 无法管理密钥
#

18. GitOps 同步失败的排障中 manifest 校验失败、资源冲突、权限不足与网络问题如何区分定位

A 按 manifest 校验、资源冲突、权限不足、网络问题分类定位,分别检查渲染、事件/RBAC、连通性 ✓ 正确答案
B 所有失败都应直接重试
C 权限不足与网络问题无区别
D 同步失败无需看日志
#

19. GitOps 工具的 Provider/插件机制中 ArgoCD/Flux 如何通过插件与云 API 集成管理基础设施

A 插件机制让 GitOps 只能处理单一格式
B 插件与云 API 无关
C 通过 CMP 等插件接入自定义渲染器,并可对接云 API 扩展管理基础设施,扩大声明式边界 ✓ 正确答案
D Flux 不支持任何扩展
#

20. 多环境 GitOps 的仓库布局中环境目录(dev/staging/prod)、promotion 流程与并行版本如何处理

A 各环境应共用同一份 manifest 不做区分
B 环境间无需晋升流程
C 按环境分目录并用 overlay 复用公共基线,制品按 digest 逐环境晋升,版本可追溯可回滚 ✓ 正确答案
D 并行版本无法管理