CI/CD
CI/CD 把交付自动化:CI 保证质量,CD 保证发布。面试主线:流水线阶段、GitOps、与 K8s 的结合。
CI 与 CD
| 环节 | 内容 | 目标 |
|---|---|---|
| CI(持续集成) | 提交触发:测试 + 构建 + 扫描 | 每次提交可验证 |
| CD(持续交付/部署) | 自动发布到环境 | 快速可靠上线 |
流水线阶段:
代码提交 → 单元测试 → 代码扫描 → 构建镜像 → 镜像扫描
→ 推送制品库 → 部署测试环境 → 集成测试 → 部署生产(灰度)工具链
| 环节 | 工具 |
|---|---|
| CI 平台 | GitHub Actions、GitLab CI、Jenkins |
| 制品库 | Harbor、Artifactory(镜像/包) |
| 部署 | ArgoCD、Flux、Helm |
| 质量 | SonarQube(代码)、Trivy(镜像漏洞) |
Helm:K8s 应用打包(模板化 yaml,values 参数化)。发布 = helm install/upgrade。
GitOps
GitOps: Git 是唯一事实源, 控制器对账
- GitOps:Git 仓库是部署的唯一事实源,变更走 PR 审查,ArgoCD 自动同步到集群
- 收益:可审计(谁改了什么都在 Git)、可回滚(revert)、自动修复漂移
- 与 K8s 控制器模式一致:声明式 + 对账
发布流水线要点
| 要点 | 说明 |
|---|---|
| 每次提交跑 CI | 问题早发现,别攒着 |
| 构建一次发布多次 | 同一镜像从测试到生产(不可变) |
| 环境隔离 | 测试/预发/生产,配置不同(ConfigMap) |
| 门禁 | 测试不过、扫描有高危漏洞 → 阻断 |
| 快速反馈 | CI 10 分钟内完成(开发者才愿意等) |
面试追问
- CI 和 CD? CI 提交即验证(测试构建扫描),CD 自动发布。流水线是常态
- GitOps 是什么? Git 是事实源,ArgoCD 对账同步。PR 即发布审批,可审计可回滚
- Helm 干什么? K8s 应用打包:模板化 yaml + values 参数化
- 构建一次发布多次? 同一镜像走完环境(不可变):测试验证过的就是生产的
- CI 里做什么安全? 依赖/镜像漏洞扫描、密钥扫描(防提交 Secret)。门禁阻断