Triển khai hệ thống Amazon EKS đa môi trường (Dev/Prod) trên AWS bằng Terraform kết hợp quy trình tự động hoá CI/CD Jenkins Pipeline.
Dự án này giúp bạn dễ dàng xây dựng và quản lý cơ sở hạ tầng EKS Cluster kèm theo:
- VPC Networking (Public/Private Subnets, NAT Gateway)
- Security Groups và IAM Roles
- EKS Control Plane & Managed Worker Nodes
- Bastion Host cho phép SSH vào Worker Nodes
- Triển khai CI/CD pipeline với Jenkins
- Tích hợp GitHub Webhook cho tự động hoá build/deploy
AWS_EKS_Terraform/
├── /Environment/
│ ├── Dev/ # Terraform deploy môi trường DEV tại us-east-1
│ └── Prod/ # Terraform deploy môi trường PROD tại ap-southeast-1
├── /Global/
├── /Modules/
│ ├── aws_networking/ # Triển khai Networking (VPC, Subnet, Gateway, Route tables)
│ ├── aws_iam/ # Tạo các IAM roles và policies
│ ├── aws_eks/ # Triển khai EKS Cluster & Worker Nodes
│ └── aws_ec2/ # Bastion Host EC2 instance
└── README.md
providerterraform version
Bao gồm các thành phần mạng cơ bản:
aws_vpcaws_subnet
➡️ 2 Public Subnet và 2 Private Subnetaws_internet_gatewayaws_nat_gatewayaws_route_tables
➡️ 1 Public Route Table
➡️ 1 Private Route Tableaws_prefix_list
➡️ CIDR Block172.0.0.0/16và173.0.0.0/16aws_security_groups- Control Plane SG: Cho phép tất cả traffic từ VPC CIDR
- Worker Node SG: Cho phép tất cả traffic từ Prefix List
- Public SG: Chỉ IP máy tính cá nhân có quyền truy cập
IAM Roles & Policies cho:
AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnlyAmazonEKS_CNI_PolicyAmazonEBSCSIDriverPolicy
aws_eks_cluster: Khởi tạo EKS Clusteraws_worker_node: Tạo 2 Worker Node trong Private Subnetaws_addons: Cài các thành phần bổ sung (CoreDNS, Metrics Server, EBS Driver, ...)
aws_key_pair: Sinh SSH key để truy cập serveraws_ec2: Tạo 1 Bastion Host trong Public Subnet để kết nối vào Worker Node
| Environment | Region |
|---|---|
| Dev | us-east-1 |
| Prod | ap-southeast-1 |
terraform initterraform plan -var-file=dev.tfvars
terraform plan -var-file=prod.tfvarsterraform apply -var-file=dev.tfvars
terraform apply -var-file=prod.tfvars- Theo dõi các hành động Pull Request và Push để tự động kích hoạt pipeline.
- Github Credentials
- AWS Credentials
- Terraform Credentials
BRANCH_NAMEREGIONWORKING_DIRECTORY
-
Bảo mật
- Không commit
terraform.tfstatehoặc file key. - Quản lý state file bằng S3 và DynamoDB để đồng bộ và khoá state.
- Không commit
-
Chi phí AWS
- Hệ thống tạo ra tài nguyên AWS thật. Đảm bảo bạn kiểm soát tốt chi phí khi chạy lâu dài.
