A modern ticket management system based on Spring Boot + Vue 3, demonstrating complete DevOps and CI/CD workflows.
Development: Dev CI
Production: Prod CI
This is a microservices architecture project with separated frontend and backend, showcasing complete DevOps practices from development to production:
- ๐๏ธ Modern Architecture: Spring Boot 3.5.6 + Vue 3 + TypeScript
- ๐ Containerized Deployment: Docker + Kubernetes + EKS
- ๐ CI/CD Pipeline: GitHub Actions + Kubernetes + ArgoCD
- ๐ Observability: Log monitoring + Health checks
- ๐ก๏ธ Security Best Practices: Principle of least privilege + Security scanning
- AWS CLI: Configured credentials
- kubectl: Kubernetes command line tool
- Terraform: Infrastructure as code tool
- Docker: Containerization tool
- Helm: Kubernetes package manager
# Clone project git clone <repository-url> cd play-cicd001 # Complete deployment (infrastructure + applications) ./scripts/deploy.sh # Access application # Frontend: http://<load-balancer-address>/ # Backend API: http://<load-balancer-address>/api/tickets
# Start backend (port: 8080) cd backend mvn spring-boot:run # Start frontend (port: 5173) cd frontend pnpm install && pnpm dev
Backend (Spring Boot)
- Java 17 + Spring Boot 3.5.6
- Maven build tool
- RESTful API design
- In-memory data storage (for demo)
- Health check endpoints
Frontend (Vue 3)
- Vue 3 + Composition API + TypeScript
- Vite 7.1.7 + pnpm
- Responsive UI design
- API service encapsulation
Infrastructure (AWS)
- Amazon EKS 1.34 (Kubernetes)
- 2x t3.medium worker nodes
- Network Load Balancer (NLB)
- NGINX Ingress Controller
- Amazon ECR (Container Registry)
- VPC + subnets + security groups
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
โ Frontend (Vue 3) โโโโโโ NGINX Ingress โโโโโโ Network Load Balancer โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ Backend (Spring) โโโโโโ K8s Services โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
- Infrastructure Deployment - Terraform + EKS Complete Deployment Guide
- CI/CD Pipeline - GitHub Actions + ArgoCD + Image Updater
- Automation Scripts - Deployment and Management Scripts Guide
- CI/CD Structure - Complete CI/CD Directory Structure Guide
- Project Description - Project Background and Architecture
- Frontend Development - Vue 3 Development Guide
- Project Plan - Development Milestones
- Kind Local Cluster - Local Development Environment
play-cicd001/
โโโ backend/ # Spring Boot backend application
โโโ frontend/ # Vue 3 frontend application
โโโ cicd/ # CI/CD configurations
โ โโโ docker/ # Docker build configurations
โ โโโ kubernetes/ # Kubernetes manifests (Kustomize)
โ โ โโโ base/ # Base configurations
โ โ โโโ overlays/ # Environment-specific configs
โ โ โ โโโ dev/ # Development environment
โ โ โ โโโ prod/ # Production environment
โ โ โโโ tools/ # K8s tool configurations
โ โโโ argocd/ # ArgoCD GitOps configurations
โ โ โโโ apps/ # ArgoCD Application definitions
โ โ โโโ project.yaml # ArgoCD Project configuration
โ โโโ github_action/ # GitHub Actions scripts
โโโ infra/ # Terraform infrastructure
โ โโโ modules/ # Terraform modules
โ โ โโโ vpc/ # VPC network configuration
โ โ โโโ ecr/ # ECR image repository
โ โโโ main.tf # Main configuration file
โ โโโ variables.tf # Variable definitions
โ โโโ outputs.tf # Output configuration
โโโ scripts/ # Automation scripts
โ โโโ deploy.sh # One-click deployment script
โ โโโ destroy.sh # One-click cleanup script
โ โโโ docker/ # Docker build scripts
โ โโโ k8s/ # Kubernetes management scripts
โ โโโ terraform/ # Terraform management scripts
โโโ .github/workflows/ # GitHub Actions workflows
โโโ docs/ # Project documentation
โ โโโ INFRASTRUCTURE.md # Terraform + EKS deployment guide
โ โโโ CICD.md # CI/CD complete workflow
โ โโโ SCRIPTS.md # Automation scripts guide
โ โโโ INSTRUCTION.md # Project background and architecture
โ โโโ plan.md # Development milestones
โโโ records.txt # Deployment records
โโโ CLAUDE.md # Claude Code configuration
โโโ cicd/README.md # CI/CD directory structure guide
# ๐ Deployment Management ./scripts/deploy.sh # Complete deployment (infrastructure + applications) ./scripts/deploy.sh --skip-infra # Deploy applications to existing cluster only ./scripts/deploy.sh --skip-apps # Deploy infrastructure only ./scripts/destroy.sh # One-click cleanup of all resources (save costs) # ๐๏ธ Infrastructure Management cd infra terraform init # Initialize Terraform terraform plan # Show execution plan terraform apply # Deploy infrastructure terraform destroy # Destroy infrastructure aws eks --region ap-northeast-1 update-kubeconfig --name tix-eks-fresh-magpie # Configure kubectl # โธ๏ธ Kubernetes Operations kubectl get pods -n ticket-dev # Check pod status kubectl get services -n ticket-dev # Check services kubectl get ingress -n ticket-dev # Check ingress kubectl logs -f deployment/backend-deployment -n ticket-dev # View backend logs kubectl logs -f deployment/frontend-deployment -n ticket-dev # View frontend logs # ๐ข ArgoCD Management argocd app list # List all applications argocd app get ticket-system-dev # Get application status argocd app sync ticket-system-dev # Manual sync application argocd app logs ticket-system-dev # View application sync logs argocd cluster list # List clusters kubectl get applications -n argocd # View ArgoCD application resources kubectl get appprojects -n argocd # View ArgoCD projects # ๐ ArgoCD Image Updater Debugging kubectl logs -n argocd -l app.kubernetes.io/name=argocd-image-updater -f # View Image Updater logs kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-image-updater # Check Image Updater status # ๐ ECR Credentials Management (ArgoCD Image Updater) ./scripts/setup-ecr-credentials.sh # Generate ECR credentials kubectl apply -k cicd/kubernetes/tools/argocd/ # Deploy ECR credentials to ArgoCD # ๐ณ Local Development cd backend && mvn spring-boot:run # Start backend (port: 8080) cd frontend && pnpm install && pnpm dev # Start frontend (port: 5173) # ๐จ Local Build docker build -f cicd/docker/backend/Dockerfile -t ticket-backend ./backend docker build -f cicd/docker/frontend/Dockerfile -t ticket-frontend ./frontend ./scripts/docker/build-frontend.sh production # Frontend production build ./scripts/docker/build-frontend.sh development # Frontend development build # ๐งช Testing cd backend && mvn test # Backend tests cd frontend && pnpm test # Frontend tests curl http://localhost:8080/api/tickets # API testing # ๐ Deployment Verification LB_URL=$(kubectl get ingress ticket-management-ingress -n ticket-dev -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') # Get load balancer address curl http://$LB_URL/api/tickets # Test production API curl -I http://$LB_URL/ # Test frontend page # ๐ฑ GitHub Actions Monitoring gh run list --repo uniquejava/play-cicd001 # View CI/CD run status gh run view <run-id> --repo uniquejava/play-cicd001 # View specific run details gh run rerun <run-id> --repo uniquejava/play-cicd001 # Rerun failed workflow
| Resource | Monthly Cost | Description |
|---|---|---|
| EKS Control Plane | ~73ใใซ | Kubernetes cluster management |
| EC2 Instances (2x t3.medium) | ~60ใใซ | Worker nodes |
| NAT Gateway | ~35ใใซ | Private subnet outbound gateway |
| EIP | ~3ใใซ.65 | Elastic IP address |
| Data Transfer | ~5ใใซ-10 | Traffic fees |
| Total | ~170ใใซ | Estimated monthly cost |
๐ก Cost Control: Run
./scripts/destroy.shwhen not using to avoid unnecessary charges.
- โ Ticket Management: Create, edit, delete tickets
- โ Status Tracking: Open โ In Progress โ Completed
- โ RESTful API: Standardized API interfaces
- โ Responsive Design: Multi-device support
- โ Real-time Updates: Frontend-backend data synchronization
- โ Containerization: Docker image building
- โ Microservices: Frontend-backend separated architecture
- โ Load Balancing: NGINX Ingress Controller
- โ Health Checks: Service status monitoring
- โ Auto-scaling: Kubernetes HPA (configurable)
- Code Commit โ GitHub repository
- Auto Build โ GitHub Actions CI
- Image Build โ Docker + ECR push
- Auto Deploy โ ArgoCD Image Updater
- Service Release โ Kubernetes cluster
main: Production branchdevelop: Development branchfeature/*: Feature development brancheshotfix/*: Emergency fix branches
Test commands are included in the "๐งช Testing" section of the "Common Commands" above.
- Least Privilege: IAM role permission minimization
- Network Isolation: VPC private subnet deployment
- Container Security: Non-root user execution
- Image Scanning: ECR automatic security scanning
- Secret Management: AWS Secrets Manager (extensible)
Run ./scripts/destroy.sh when not using the project to delete all AWS resources and avoid charges!
This project is licensed under the MIT License.
๐ Last Updated: 2025ๅนด10ๆ17ๆฅ