Tổng Quan
Trong bài viết này, chúng ta sẽ cùng khám phá cách triển khai một hệ thống hoàn chỉnh trên Amazon Web Services (AWS) thông qua Command Line Interface (CLI) của AWS. Hệ thống này bao gồm các thành phần chính như:
- Application Load Balancer (ALB): Phân phối tải cho ứng dụng.
- Amazon ECS (Elastic Container Service): Quản lý các ứng dụng container hóa trên AWS.
- Amazon RDS (Relational Database Service): Dịch vụ cơ sở dữ liệu quan hệ quản lý.
- AWS Secrets Manager: Quản lý và bảo mật thông tin nhạy cảm.
Việc sử dụng AWS CLI không chỉ mang lại trải nghiệm thú vị mà còn giúp bạn làm quen với các lệnh và nguyên tắc hoạt động của các dịch vụ AWS.
Kiến Trúc Hệ Thống
Giới Thiệu Các Dịch Vụ AWS Sử Dụng
Amazon ECS (Elastic Container Service)
- Dịch vụ quản lý ứng dụng container hóa, cho phép triển khai và mở rộng các container Docker trên các máy chủ EC2.
Amazon RDS (Relational Database Service)
- Cung cấp khả năng triển khai và quản lý cơ sở dữ liệu quan hệ như PostgreSQL, MySQL,... Sẽ được sử dụng trong hệ thống của chúng ta.
Amazon ALB (Application Load Balancer)
- Phân phối tải cho các ứng dụng dựa trên nội dung yêu cầu HTTP/HTTPS để tăng tính hiệu quả và độ tin cậy.
AWS Secrets Manager
- Dịch vụ bảo mật giúp lưu trữ và quản lý các thông tin nhạy cảm như thông tin đăng nhập và khóa API.
Cài Đặt Và Cấu Hình AWS CLI
Tổng Quan
AWS CLI là công cụ giúp bạn tương tác với các dịch vụ AWS qua dòng lệnh. Điều này cho phép bạn thực hiện các tác vụ một cách dễ dàng và linh hoạt hơn.
Tra Cứu Lệnh AWS CLI
- Trên Terminal: Sử dụng từ khóa
help
hoặc?
để tìm kiếm lệnh. Ví dụ:aws s3 help
,aws s3 ?
. - Trên Web Browser: Trang tài liệu chính thức của AWS CLI cung cấp thông tin chi tiết và hướng dẫn.
Cài Đặt AWS CLI
Dưới đây là hướng dẫn cài đặt AWS CLI V2 trên hệ điều hành Linux:
bash
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
rm -rf awscliv2.zip aws/install
aws --version
Cấu Hình AWS CLI
Bạn cấu hình AWS CLI bằng lệnh sau:
bash
aws configure
Nhập các thông tin cần thiết:
- Access Key ID
- Secret Access Key
- Region
- Default output format
Tệp cấu hình sẽ được lưu trữ tại ~/.aws/config
và ~/.aws/credentials
.
Kiểm Tra Cấu Hình
Sử dụng lệnh sau để kiểm tra các thông số đã cấu hình:
bash
aws configure list
Cấu Hình Terminal
Công Cụ JQ
jq
là công cụ hữu ích cho việc xử lý dữ liệu JSON từ dòng lệnh. Cài đặt trên Ubuntu:
bash
sudo apt install jq -y
Công Cụ Tee
tee
cho phép bạn lần lượt đọc và ghi dữ liệu vào nhiều tệp. Cài đặt trên Ubuntu:
bash
sudo apt install tee -y
Biến Môi Trường
Sử dụng biến môi trường để lưu trữ các giá trị thường dùng:
bash
project=workshop2
region=ap-southeast-1
# ...
Tạo Instance Profile cho EC2
Tổng quan
AWS Instance Profile giúp gán IAM Role cho EC2 để truy cập các dịch vụ AWS một cách an toàn.
Quy Trình
- Tạo IAM Role:
bash
ecs_instance_role_name="$project-ecs-instance-role"
aws iam create-role \
...
- Gán policy cho IAM Role:
bash
aws iam attach-role-policy \
...
- Tạo IAM instance profile:
bash
aws iam create-instance-profile \
...
- Thêm Role vào Instance profile:
bash
aws iam add-role-to-instance-profile \
...
- Lấy thông tin Instance Profile:
bash
ecs_instance_profile_arn=$(aws iam get-instance-profile \
...
Tạo EC2 Keypair
Tổng quan
Key Pair bao gồm một khóa công khai và một khóa riêng tư, được sử dụng để xác thực khi kết nối tới một Amazon EC2 instance.
Quy trình
Tạo keypair bằng lệnh:
bash
aws ec2 create-key-pair \
...
Quyền Kết Nối
Cần thiết lập quyền cho tệp key riêng tư:
bash
chmod 400 key.pem
Tạo Elastic Container Registry
Tổng quan
Amazon ECR giúp quản lý và lưu trữ ảnh Docker container cho sử dụng với ECS, EKS hoặc các dịch vụ khác.
Quy trình
- Tạo ECR Repository:
bash
aws ecr create-repository \
...
- Xác thực vào ECR:
bash
aws ecr get-login-password \
...
- Tải Source Code:
bash
# Download source
- Tạo Docker image:
bash
docker build -t $ecr_name .
- Đặt tag cho image:
bash
docker tag ...
- Push image lên ECR:
bash
docker push ...
- Pull image từ ECR:
bash
docker pull ...
Tạo Mạng
Tổng quan
Mạng AWS VPC cho phép bạn tạo không gian mạng ảo cho các tài nguyên AWS.
Quy trình
- Tạo VPC:
bash
vpc_id=$(aws ec2 create-vpc \
...
- Tạo Subnet:
bash
# Tạo public và private subnet.
- Tạo Internet Gateway:
bash
gateway_id=$(aws ec2 create-internet-gateway \
...
- Tạo và kết nối Route Table:
bash
# Tạo route table cho public và private subnet.
Tạo Security Group
Tổng quan
Security Group hoạt động như một tường lửa ảo cho EC2.
Quy trình
- Tạo Security Group cho Instance:
bash
ecs_instance_sgr_id=$(aws ec2 create-security-group \
...
- Tạo Security Group cho RDS:
bash
rds_sgr_id=$(aws ec2 create-security-group \
...
- Tạo Security Group cho ALB:
bash
alb_sgr_id=$(aws ec2 create-security-group \
...
Kết thúc phần 1
Trong phần này, chúng ta đã chuẩn bị và cài đặt các dịch vụ cần thiết cho triển khai ứng dụng lên ECS trong phần tiếp theo. Chúng ta sẽ tập trung vào việc triển khai RDS, SecretsManager, ALB và ECS.
source: viblo