HELM + Jenkins Jenkins+ Prometheus Prometheus+ Grafana Grafana + ReactJS+ NodeJS+ MongoDB+ AWS EKS+ ArgoCD

在 AWS EKS 上部署三层应用,实现 CI/CD、GitOps 与监控的完整 DevSecOps 流水线

Terraform 供基础设施,Jenkins 做 CI 构建镜像,ArgoCD 做 GitOps 部署,Prometheus/Grafana 负责监控

✓ 覆盖从基础设施到监控的端到端流程✓ GitOps 与私有 ECR 保证安全与 ✕ 详细步骤依赖外部 Medium 文章✕ 组件多,搭建与维护成本较高

方案简介

本方案是一个端到端的三层 Web 应用 DevSecOps 部署项目。应用层采用 ReactJS(前端)、NodeJS(后端)、MongoDB(数据库)的三层架构,整体部署在 AWS EKS(Elastic Kubernetes Service)之上。

方案不仅覆盖应用本身的部署,还构建了完整的 DevSecOps 工具链:

  • 使用 Terraform 和 AWS CLI 自动化创建 AWS 基础设施(含 EKS 集群与 Jenkins 服务器);
  • 使用 Jenkins 构建持续集成/持续交付流水线,配合 Sonarqube 进行代码质量扫描;
  • 使用私有 ECR 仓库安全存储容器镜像;
  • 使用 Helm 编排监控组件 Prometheus 与 Grafana,实现集群监控可视化;
  • 使用 ArgoCD 落地 GitOps 实践,实现以 Git 为唯一事实来源的声明式部署。

该项目适合希望学习如何在 Kubernetes 上完整实践「基础设施即代码 + CI/CD + GitOps + 监控」全链路的开发者与 DevOps 工程师,也可作为企业三层应用上云的参考架构模板。

亮点与能力

  • 三层 Web 应用(ReactJS + NodeJS + MongoDB)完整部署于 AWS EKS,确保数据持久化
  • Terraform + AWS CLI 实现基础设施即代码,自动化供给 Jenkins 服务器与 EKS 集群
  • Jenkins 流水线脚本自动化整个 CI/CD 流程
  • Sonarqube 参与代码质量检查
  • 私有 ECR 仓库实现安全的容器镜像管理
  • EKS 集群创建与负载均衡器(Load Balancer)配置
  • Helm charts 高效部署 Prometheus + Grafana 监控体系
  • ArgoCD 实践 GitOps 持续部署
  • IAM User 权限体系集成 AWS 资源

组成与分工

  • ReactJS:前端层,三层应用的 Web 界面
  • NodeJS:后端层,API 服务
  • MongoDB:数据层,应用数据库,方案关注数据持久化
  • AWS EKS:托管 Kubernetes 集群,承载三层应用运行
  • Terraform:基础设施即代码,自动化供给 Jenkins 服务器与 EKS 集群等 AWS 资源
  • AWS CLI:与 AWS 资源交互的命令行工具
  • Jenkins:CI/CD 引擎,运行流水线脚本自动化集成与部署
  • Sonarqube:代码质量扫描
  • Kubectl:Kubernetes 集群操作工具
  • 私有 ECR:安全的容器镜像仓库
  • Helm:Kubernetes 包管理器,用于部署监控栈
  • Prometheus:指标采集与监控
  • Grafana:监控数据可视化面板
  • ArgoCD:GitOps 持续部署控制器

前置要求

根据项目 High-Level Overview,开始前需要:

  • 一个 AWS 账号,并完成 IAM User 的创建与配置(供 Terraform、Jenkins 等 AWS 集成使用)
  • 本地或服务器上安装 AWS CLI
  • 安装 Terraform
  • 安装 Kubectl
  • 准备好 Jenkins Server(可使用仓库中 Jenkins-Server-TF 目录的 Terraform 脚本在 AWS 上创建)

项目还将用到 Helm、Sonarqube、ArgoCD 等工具,随流程在集群或服务器中安装。

使用与配置要点

  • 仓库结构导航Application-Code 存放三层应用前后端源码;Jenkins-Pipeline-Code 存放流水线脚本;Jenkins-Server-TF 存放 Jenkins 服务器 Terraform 脚本;Kubernetes-Manifests-Files 存放 K8s 部署清单,可按项目需求自行定制。
  • 验证成功:应用通过 EKS 上的 Load Balancer 对外提供服务;Grafana 面板展示 Prometheus 采集的监控数据;ArgoCD 同步状态表明部署与 Git 仓库一致。
  • 日常迭代:修改代码后由 Jenkins 流水线自动构建并推送镜像至私有 ECR,ArgoCD 依据 Git 变更自动同步到集群。

注意事项与常见问题

  • 本仓库 README 本身不包含完整的分步操作说明,详细流程托管在外部 Medium 综合指南中,实操前需阅读该指南。
  • Kubernetes manifests 需要根据自身项目需求理解和定制,不能直接照搬。
  • 镜像存储使用私有 ECR 仓库,部署时需确保集群与 Jenkins 具备相应的 IAM 拉取权限。
  • 项目采用 MIT License 开源,欢迎通过 pull request 或 issue 参与贡献。

优缺点

  • ✓ 覆盖从基础设施到监控的端到端流程
  • ✓ GitOps 与私有 ECR 保证安全与
  • ✕ 详细步骤依赖外部 Medium 文章
  • ✕ 组件多,搭建与维护成本较高

出处

本方案挖掘自开源项目 AmanPathak-DevOps/End-to-End-Kubernetes-Three-Tier-DevSecOps-Project,方案内容与实施命令均来自其 README 原文。

方案出处
AmanPathak-DevOps/End-to-End-Kubernetes-Three-Tier-DevSecOps-Project:End-to-end DevOps project deploying a three-tier React, Node.js, and MongoDB app
369 star End-to-end DevOps project deploying a three-tier React, Node.js, and MongoDB application on AWS EKS. Features Terraform-based IaC, Jenkins CI/CD pipelines, ArgoCD GitOps, Helm, and monitoring with Pro

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。