whiskyCavalier/cicd-image-security-gitops

GitHub: whiskyCavalier/cicd-image-security-gitops

该项目是一个集成 Trivy 镜像漏洞扫描与 ArgoCD GitOps 部署的安全左移 CI/CD pipeline 模板,确保仅有通过安全扫描的容器镜像才能进入生产环境。

Stars: 0 | Forks: 0

# 集成 Trivy 镜像安全扫描与 ArgoCD GitOps 部署的 CI/CD Pipeline ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-2088FF?logo=githubactions&logoColor=white) ![Trivy](https://img.shields.io/badge/Trivy-Vulnerability%20Scanning-1904DA) ![ArgoCD](https://img.shields.io/badge/ArgoCD-GitOps-EF7B4D?logo=argo&logoColor=white) 一个完整的**安全左移 CI/CD pipeline**:构建 → **Trivy 漏洞扫描(遇到 CRITICAL/HIGH CVE 时使构建失败)** → 推送 → 通过 ArgoCD 进行 GitOps 部署 —— 并针对目前尚无可用修复方案的 CVE,提供了一个有据可查、可审计的例外处理流程(经过审核、说明原因并设有时间限制 —— 绝不静默忽略)。 ## Pipeline 阶段 1. **构建** —— 多阶段 Dockerfile,最终镜像极简化 2. **扫描** —— 使用 Trivy 对构建好的镜像进行扫描;遇到 CRITICAL/HIGH 且没有有效、未过期的 allow-list 条目时阻断流程 3. **推送** —— 只有在扫描通过后才会执行;镜像使用 git SHA 打标签,绝不使用 `:latest` 4. **GitOps 部署触发** —— pipeline 的最后一步操作是执行 `git commit`,在由 GitOps 跟踪的 manifest 中更新镜像标签;**pipeline 永远不会直接操作集群** —— ArgoCD 的 reconciliation 循环才是实际执行部署的组件 ## 为什么 pipeline 永远不会直接操作集群 如果 CI pipeline 可以直接运行 `kubectl apply`,那么本作品集其余部分所强调的“GitOps repo 即唯一事实来源”这一特性就会悄无声息地失效 —— 可能会发生未反映在 git 中的部署。本 repo 的最后一个 CI 步骤始终是进行一次 git commit;而 ArgoCD 才是实际执行 apply 操作的组件。 参见 [docs/01-phase-0-planning.md](docs/01-phase-0-planning.md),ADR-001。 ## 文档 | 文档 | 内容 | |---|---| | [docs/01-phase-0-planning.md](docs/01-phase-0-planning.md) | Pipeline 阶段、fail-fast 策略、ADR | | [docs/02-phase-1-github-actions.md](docs/02-phase-1-github-actions.md) | GitHub Actions workflow | | [docs/03-phase-2-image-scanning.md](docs/03-phase-2-image-scanning.md) | Trivy 扫描策略 | | [docs/04-phase-3-gitops-deploy.md](docs/04-phase-3-gitops-deploy.md) | GitOps 部署触发机制 | | [docs/05-algorithms.md](docs/05-algorithms.md) | CVE 严重等级阻断逻辑(伪代码) | | [docs/06-runbook.md](docs/06-runbook.md) | 运维手册 | ## 架构图 参见 [`diagrams/cicd-pipeline-flow.mmd`](diagrams/cicd-pipeline-flow.mmd)。 ## 快速开始 ``` git clone https://github.com/whiskyCavalier/cicd-image-security-gitops.git cd cicd-image-security-gitops # 将 github-actions/build-scan-deploy.yml 接入到你的 app repo 的 .github/workflows/ 目录中 # 为 update-gitops-repo job 配置 GITOPS_PAT secret ``` ## 相关项目 这是一个包含 6 个项目的平台工程作品集的一部分:Kafka-on-Kubernetes GitOps、OpenShift 多租户、Kafka 混沌工程、跨区域容灾以及 observability-as-code。 ## 关键词 CI/CD pipeline、Trivy 漏洞扫描、容器镜像安全、安全左移、GitHub Actions、ArgoCD GitOps 部署、DevSecOps、Kubernetes 部署自动化、CVE 阻断策略、平台工程作品集项目。 ## 作者 **Arvind Vijay** ## 许可证 MIT —— 参见 [LICENSE](LICENSE)。
标签:ArgoCD, DevSecOps, GitOps, Web截图, 上游代理, 子域名突变, 容器安全, 自动化运维, 请求拦截