Đồ án này trình bày cách triển khai web microservice bán hàng bằng một bộ công cụ và phương pháp DevOps.
Các công cụ chính bao gồm:
- Terraform: Công cụ Infrastructure as Code (IaC) để tạo cơ sở hạ tầng AWS như các phiên bản EC2 và cụm EKS.
- GitHub: Quản lý mã nguồn.
- Jenkins: Công cụ tự động hóa CI/CD.
- SonarQube: Công cụ phân tích chất lượng mã và cổng chất lượng.
- NPM: Công cụ xây dựng cho NodeJS.
- Aqua Trivy: Công cụ quét lỗ hổng bảo mật.
- Docker: Công cụ chứa để tạo hình ảnh.
- AWS EKS: Nền tảng quản lý vùng chứa.
- ArgoCD: Công cụ triển khai liên tục.
- Prometheus & Grafana: Công cụ giám sát và cảnh báo.
Quy trình triển khai bao gồm các bước chính sau:
- Developer thực hiện đẩy mã nguồn lên Git repository.
Jenkins đóng vai trò điều phối toàn bộ pipeline CI:
- Biên dịch và kiểm thử với Apache Maven.
- Phân tích mã nguồn tĩnh với SonarQube để đánh giá chất lượng mã và nợ kỹ thuật.
- Quét bảo mật:
- Trivy FS scan: Quét mã nguồn và thư viện.
- Trivy image scan: Quét lỗ hổng bảo mật trong Docker image.
- Cài đặt thư viện phụ thuộc thông qua NPM (nếu là ứng dụng Node.js).
- Đóng gói Docker: Xây dựng Docker image và đẩy lên Docker Registry.
- Quét bảo mật Docker Image: Trivy scan image.
- Sau khi pipeline chạy xong, Jenkins gửi thông báo qua email cho developer (thành công hoặc thất bại).
- Jenkins cập nhật repository GitOps chứa cấu hình triển khai.
- ArgoCD theo dõi GitOps repo, tự động đồng bộ trạng thái hệ thống với cụm Kubernetes trên AWS EKS.
Hệ thống được giám sát bởi:
- Prometheus: Thu thập và lưu trữ metrics.
- Grafana: Trực quan hóa dữ liệu và hiển thị dashboard theo thời gian thực.
- Git Checkout: Sao chép mã nguồn từ GitHub.
- Build Application: Thực hiện biên dịch và đóng gói ứng dụng.
- SonarQube Analysis: Thực hiện phân tích mã tĩnh.
- Quality Gate: Đảm bảo tiêu chuẩn chất lượng mã.
- Install NPM Dependencies: Cài đặt các gói NodeJS.
- Trivy Security Scan: Quét lỗ hổng bảo mật của dự án.
- Docker Build: Xây dựng hình ảnh Docker cho dự án.
- Push to Dockerhub: Gắn thẻ và đẩy image lên Dockerhub.
- Image Cleanup: Xóa hình ảnh khỏi máy chủ Jenkins để tiết kiệm dung lượng.
- Cleanup Workspace: Dọn dẹp không gian làm việc, xóa các tệp tin tạm.
- Checkout from Git: Kiểm tra mã nguồn từ GitHub.
- Update the Deployment Tags: Cập nhật các tag trong file
deployment.yaml. - Push the changed deployment file to GitHub:
Đẩy filedeployment.yamlđã thay đổi trở lại GitHub.
Cấu hình thông tin người dùng Git, thực hiệngit add,git commit, và sau đó đẩy thay đổi lên repository trên GitHub.
Xem chi tiết mã nguồn tại GitHub:
👉 https://github.com/tien22521469/devops-gitops
