- Tác giả

- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
Tổng Hợp Các Dịch Vụ AWS Containers
Giới Thiệu
Containers giúp đóng gói ứng dụng cùng dependencies để chạy nhất quán trên mọi môi trường. Trên AWS, bộ dịch vụ container xoay quanh ba thành phần in‑scope: Amazon ECR (image registry), Amazon ECS (AWS‑native orchestrator), Amazon EKS (Managed Kubernetes). Bên cạnh đó, AWS Fargate là chế độ thực thi serverless cho ECS/EKS, giúp chạy container mà không cần quản lý EC2.
Bài viết này cung cấp cái nhìn tổng thể, so sánh chi tiết, hướng dẫn chọn dịch vụ phù hợp (decision guide), kiến trúc mẫu, cùng best practices về bảo mật, mạng, CI/CD, logging/monitoring và tối ưu chi phí.
Phân Loại Nhanh Theo Nhu Cầu
- Lưu trữ và quản trị container images: Amazon ECR
- Orchestration AWS‑native, đơn giản, tích hợp sâu AWS: Amazon ECS
- Kubernetes managed (chuẩn CNCF), portable, multi‑cloud/hybrid: Amazon EKS
- Chạy container serverless (không quản lý EC2/node): AWS Fargate (cho ECS/EKS)
Tổng Quan & So Sánh Nhanh
| Dịch vụ | Vai trò | Điểm mạnh | Lưu ý |
|---|---|---|---|
| ECR | Private container registry | Tích hợp IAM/KMS/scan, lifecycle policy | Tối ưu permissions/push/pull từ CI/CD |
| ECS | Orchestrator AWS‑native | Đơn giản, tight integration, chi phí hợp lý | Phụ thuộc AWS, không portable như K8s |
| EKS | Managed Kubernetes | Chuẩn K8s, ecosystem phong phú | Vận hành K8s phức tạp hơn ECS, chi phí cluster |
| Fargate | Serverless compute cho container | Không quản lý server, scale mượt | Giới hạn kernel/daemon; chi phí theo vCPU/GB |
1. Amazon ECR (Elastic Container Registry)
1.1 ECR Là Gì?
ECR là container registry private, tích hợp IAM/KMS, image scanning, lifecycle policy để quản lý vòng đời images, hỗ trợ replication multi‑Region.
1.2 Tính Năng Chính
- Private repositories, immutable tags, image scanning (enhanced scanner) và CVE report.
- Lifecycle policies: tự động xóa images cũ, tiết kiệm chi phí.
- Cross‑region replication; repository policy tinh chỉnh quyền truy cập.
1.3 Best Practices
- Bật image scanning; định kỳ quét và remediation.
- Lifecycle policy để dọn ảnh không dùng; hạn chế “latest” trôi nổi.
- Sử dụng OIDC/IAM roles cho CI/CD thay vì long‑lived credentials.
2. Amazon ECS (Elastic Container Service)
2.1 ECS Là Gì?
ECS là dịch vụ orchestrator do AWS quản lý, hỗ trợ EC2 launch type (tự quản lý cluster EC2) và Fargate launch type (serverless). ECS đơn giản hóa triển khai, scaling, và tích hợp IAM, CloudWatch, ALB/NLB, App Mesh.
2.2 Tính Năng Chính
- Service/Task model; Auto Scaling theo metrics; Capacity Providers.
- Triển khai Blue/Green qua CodeDeploy; rolling update; circuit breaker.
- Tích hợp Secrets Manager/SSM Parameter Store; CloudWatch Logs/Container Insights.
2.3 Ưu/nhược Điểm
- Ưu: Đơn giản, học nhanh, tích hợp sâu, vận hành nhẹ.
- Nhược: Lock‑in AWS; ít portable hơn Kubernetes.
2.4 Use Cases
- Microservices, API backends, batch/queue workers.
- Workloads ưu tiên sự đơn giản và tốc độ triển khai.
3. Amazon EKS (Elastic Kubernetes Service)
3.1 EKS Là Gì?
EKS cung cấp control plane Kubernetes managed; bạn chọn worker nodes: EC2 (managed node groups, self‑managed) hoặc Fargate. EKS phù hợp khi cần chuẩn Kubernetes, multi‑cloud portability, hoặc tận dụng hệ sinh thái K8s.
3.2 Tính Năng Chính
- Managed control plane; phiên bản K8s được AWS vận hành.
- Managed node groups; tự động cập nhật, scale; hỗ trợ Bottlerocket.
- Hỗ trợ IRSA (IAM Roles for Service Accounts) để cấp quyền tinh vi cho Pods.
- Tích hợp EKS add‑ons (VPC CNI, CoreDNS, kube‑proxy…), EKS Blueprints.
3.3 Ưu/nhược Điểm
- Ưu: Chuẩn K8s, linh hoạt, ecosystem phong phú, portable.
- Nhược: Độ phức tạp cao hơn ECS; chi phí control plane + node/ACU.
3.4 Use Cases
- Tổ chức đã quen K8s, cần portability/multi‑cloud/hybrid.
- Yêu cầu custom controllers/operators, service mesh, advanced scheduling.
4. AWS Fargate (Execution Mode)
4.1 Fargate Là Gì?
Fargate là serverless compute cho container trên ECS/EKS. Bạn chỉ khai báo vCPU/Memory/container image; AWS quản lý hạ tầng máy chủ. Phù hợp cho team muốn giảm tối đa vận hành cluster.
4.2 Ưu/nhược Điểm
- Ưu: Không quản lý EC2; scale mượt; isolation tốt.
- Nhược: Hạn chế daemonset/privileged workloads; chi phí theo tài nguyên khai báo; một số giới hạn networking/ephemeral storage.
4.3 Khi Nào Dùng?
- Workloads biến thiên khó dự đoán; muốn rút ngắn thời gian vận hành.
- Kết hợp với Spot/EC2 khi cần tối ưu chi phí/hard requirements riêng.
So Sánh Chi Tiết: ECS vs EKS vs Fargate
| Tiêu chí | ECS | EKS | Fargate (ECS/EKS) |
|---|---|---|---|
| Độ phức tạp | Thấp | Cao (K8s) | Thấp (no servers) |
| Tính portable | Thấp | Cao (K8s chuẩn) | Phụ thuộc ECS/EKS |
| Quản trị | Ít (AWS‑native) | Nhiều (K8s operations) | Rất ít (serverless) |
| Chi phí | EC2/Fargate + ALB/LB | Control plane + nodes + LB | vCPU/Memory per task/pod |
| Ecosystem | AWS services | Kubernetes ecosystem | Theo nền ECS/EKS |
| Use case | Nhanh, đơn giản | Advanced K8s features | Giảm vận hành, scale động |
Decision Guide (Hỏi‑Đáp Nhanh)
- Muốn đơn giản, tích hợp AWS, triển khai nhanh? → ECS.
- Đã có kỹ năng/stack Kubernetes, cần portable/ecosystem phong phú? → EKS.
- Không muốn quản lý servers, workload dao động nhiều? → Fargate (trên ECS/EKS).
- Cần registry private tích hợp IAM/KMS/scan? → ECR.
Kiến Trúc Mẫu
1) Microservices với ECS + Fargate
- API: Route 53 → ALB → ECS Service (Fargate). Mỗi service 1 task set.
- Config/Secrets: SSM Parameter Store/Secrets Manager.
- Observability: CloudWatch Logs/Container Insights; X‑Ray nếu cần tracing.
- CI/CD: CodePipeline/CodeBuild build/push ECR → deploy ECS (rolling/blue‑green).
2) Kubernetes trên EKS (Managed Node Groups)
- EKS Control Plane (managed) + Managed Node Groups (EC2/Bottlerocket).
- Ingress: ALB Ingress Controller (AWS Load Balancer Controller) → ALB.
- IRSA cấp quyền từng Pod; sử dụng Namespace/NetworkPolicy (Calico) để chia tách.
- Observability: CloudWatch Container Insights/Prometheus/Grafana; OpenTelemetry.
3) Private Services qua Service Mesh
- App Mesh/Linkerd/Istio (tùy nhu cầu) cho mTLS, traffic shaping, canary.
- Kết hợp Route 53 private hosted zone + NLB/Service discovery.
4) Batch/Async Workers
- SQS/Kinesis/EventBridge → ECS/EKS workers (Fargate/EC2).
- Autoscaling theo queue length/metrics; backoff/retry chiến lược.
Bảo Mật (Security)
- IAM tối thiểu cần thiết; tách role human/automation. ECS task role; EKS dùng IRSA.
- Secrets: AWS Secrets Manager/SSM Parameter Store; không hardcode secrets.
- Image Security: ECR image scanning; signed images (Notary v2/Sigstore theo hệ sinh thái).
- Network: VPC tách subnet tiers; SG chặt chẽ; VPC CNI tối ưu IP cho EKS; NetworkPolicy.
- Edge: WAF/Shield khi Internet‑facing; TLS via ACM; mTLS trong service mesh nếu cần.
Networking
- ECS/EKS on EC2: chủ động quản trị ENI, throughput, node sizing.
- Fargate: AWS quản mạng phía dưới; cấu hình security group/task ENI (awsvpc mode).
- Load balancing: ALB cho HTTP/HTTPS; NLB cho TCP/UDP/high throughput; gRPC hỗ trợ qua ALB/NLB tùy phiên bản.
- Service discovery: Cloud Map/Route 53; Ingress/Egress policies rõ ràng.
CI/CD Cho Containers
- Build: CodeBuild/GitHub Actions build image → push ECR.
- Deploy ECS: CodeDeploy blue/green (weighted target groups); hoặc rolling update.
- Deploy EKS: Argo CD/Flux (GitOps) hoặc CodePipeline + kubectl/Helm.
- Testing: canary/staged rollout; feature flags; contract tests cho microservices.
Logging, Monitoring, Tracing
- Logs: CloudWatch Logs (ECS/EKS), Fluent Bit/Fluentd ship tới S3/OpenSearch/Datadog.
- Metrics: CloudWatch Container Insights; Prometheus/Grafana cho EKS.
- Tracing: AWS X‑Ray hoặc OpenTelemetry Collector → X‑Ray/Jaeger/Tempo.
- Alarms: CloudWatch Alarms + SNS; SLO/SLA theo latency/error rate.
Triển Khai & Nâng Cấp
- ECS: Deployment Circuit Breaker, Min/Max healthy percent; kiểm soát task placement.
- EKS: Managed node groups upgrade theo lịch; test in staging; phiên bản K8s support window.
- Fargate: Chỉ định platform version phù hợp; kiểm tra giới hạn ephemeral storage/ENIs.
Tối Ưu Chi Phí
- Compute: Kết hợp Spot cho ECS/EKS on EC2; rightsizing node/task vCPU/Memory.
- Fargate: Tối ưu resource requests; scale‑to‑zero với event‑driven nơi phù hợp.
- ECR: Lifecycle policy dọn images cũ; multi‑arch nếu cần nhưng kiểm soát số biến thể.
- Load Balancer: Gộp rule trên ALB; chọn NLB khi cần throughput cao hơn/layer 4.
- Data transfer: Đưa CloudFront làm CDN; hạn chế egress giữa AZ/Region không cần thiết.
Bảng So Sánh Cụ Thể (Giống nhau & Khác nhau)
| Tiêu chí | ECR | ECS | EKS | Fargate |
|---|---|---|---|---|
| Loại | Registry | Orchestrator | Managed Kubernetes | Execution mode |
| Quản lý hạ tầng | N/A | EC2/Fargate | Control plane managed, nodes do bạn | Không cần server |
| Tích hợp IAM/KMS | Có | Sâu | Sâu (IRSA, LB Controller) | Theo ECS/EKS |
| Độ phức tạp | Thấp | Thấp‑Trung | Trung‑Cao | Thấp |
| Portability | N/A | Thấp | Cao (K8s) | Theo nền |
| Chi phí | Storage+requests | EC2/Fargate+LB | Control plane+nodes+LB | vCPU+RAM theo pod/task |
| Dùng khi | Lưu trữ image | AWS‑native đơn giản | Kubernetes ecosystem | Không muốn quản server |
Ví Dụ Nhanh
A) ECR Lifecycle Policy (giản lược)
{
"rules": [
{
"rulePriority": 1,
"description": "Keep last 30 images",
"selection": {
"tagStatus": "any",
"countType": "imageCountMoreThan",
"countNumber": 30
},
"action": { "type": "expire" }
}
]
}
B) ECS Task Definition (rút gọn)
{
"family": "orders-api",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "512",
"memory": "1024",
"containerDefinitions": [
{
"name": "app",
"image": "ACCOUNT_ID.dkr.ecr.ap-southeast-1.amazonaws.com/orders:1.2.3",
"portMappings": [{"containerPort": 8080, "protocol": "tcp"}],
"logConfiguration": {"logDriver": "awslogs", "options": {"awslogs-group": "/ecs/orders", "awslogs-region": "ap-southeast-1", "awslogs-stream-prefix": "app"}}
}
]
}
C) Kubernetes Deployment (rút gọn)
apiVersion: apps/v1
kind: Deployment
metadata:
name: orders-api
spec:
replicas: 3
selector:
matchLabels: { app: orders }
template:
metadata:
labels: { app: orders }
spec:
serviceAccountName: orders-sa # IRSA mapped
containers:
- name: app
image: ACCOUNT_ID.dkr.ecr.ap-southeast-1.amazonaws.com/orders:1.2.3
ports: [{ containerPort: 8080 }]
Mẹo Ôn Thi (AWS Certified – In‑scope)
- ECR: image scanning, lifecycle policy, IAM repository policy.
- ECS: launch types (EC2/Fargate), capacity providers, deployment strategies, service discovery.
- EKS: IRSA, managed node groups, ALB Ingress Controller, add‑ons, control plane managed.
- Fargate: serverless containers, giới hạn và pricing theo vCPU/Memory.
Checklist Áp Dụng Nhanh
- Thiết kế images nhỏ gọn; bật scanning; lifecycle policy ở ECR.
- Chọn ECS nếu muốn đơn giản; EKS nếu cần K8s ecosystem; Fargate nếu muốn no‑servers.
- Bảo mật: IAM tối thiểu; IRSA/ECS task role; Secrets Manager/SSM.
- Networking: SG/NACL chặt; ALB/NLB đúng loại; PrivateLink khi cần.
- Observability: Logs/metrics/tracing đầy đủ; alarms có hành động.
- Chi phí: kết hợp Spot/rightsizing; tối ưu LB/data transfer; dọn images cũ.
Kết Luận
AWS Containers cung cấp đầy đủ “khối Lego” để chạy ứng dụng container từ đơn giản đến phức tạp: ECR cho image registry; ECS cho orchestration AWS‑native; EKS cho Kubernetes chuẩn; Fargate để tránh quản lý server. Hãy chọn dựa trên kỹ năng đội ngũ, độ phức tạp hệ thống, yêu cầu portability, mức vận hành chấp nhận được và ngân sách. Kết hợp đúng dịch vụ, áp dụng best practices bảo mật/mạng/CI‑CD/quan sát và tối ưu chi phí sẽ giúp bạn vận hành container hiệu quả, an toàn và bền vững trên AWS.
