BÁO CÁO ĐỒ ÁN
ĐỀ TÀI : ĐỒ ÁN SỐ 50 TÌM HIỂU KUBERNETES , TRIỂN KHAI
MICROSERVICES VỚI DOCKER
GIẢNG VIÊN HƯỚNG DẪN : TRẦN THỊ BÍCH VÂN
SINH VIÊN THỰC HIỆN :
1. NGUYỄN ĐĂNG HIẾU - 2033181023
2. NGUYỄN THÀNH DƯƠNG - 2033181013
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN
1.1GIỚI THIỆU……………………………………………….
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
2.1 TÌM HIỂU VỀ KUBERNETES…………………………
2.2 TÌM HIỂU VỀ MICROSERVICES…………….………
2.3 TÌM HIỂU VỀ DOCKER………………………………
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG
3.1. GIỚI THIỆU MƠ HÌNH………………………………..
3.2 NÊU Ý TƯỞNG……..……………………………….…
CHƯƠNG 4:TRÌNH BÀY KẾT QUẢ
4.1 DEMO PHẦN MƠ HÌNH ĐÃ XÂY DỰNG……………
CHƯƠNG 1: TỔNG QUAN
•
Gần đây, nhiều ứng dụng đã thực hiện container hoá bằng cách sử dụng docker
và sử dụng nó như là mơi trường production ngày càng tăng. Trên môi trường
production, việc cấu trúc hệ thống chạy bằng container chỉ sử dụng docker là rất
khó khăn. Cho nên việc sử dụng một nền tảng Container orchestration engine như
là k8s thì khá phổ biến hiện nay.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• 2.1 TÌM HIỂU VỀ KUBERNETES
• Kubernetes hoặc k8s là một nền tảng mã nguồn mở tự động hoá việc quản lý, scaling
và triển khai ứng dụng dưới dạng container hay còn gọi là Container orchestration
engine. Nó loại bỏ rất nhiều các quy trình thủ công liên quan đến việc triển khai và mở
rộng các containerized applications.
• Kubernetes orchestration cho phép bạn xây dựng các dịch vụ ứng dụng mở rộng nhiều
containers. Nó lên lịch các containers đó trên một cụm, mở rộng các containers và quản
lý tình trạng của các containers theo thời gian.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Các tính năng của Kubernetes
• Khám phá dịch vụ cân bằng tải
• Quản lý cấu hình và bí mật
• Triển khai và cập nhật bí mật và cấu hình ứng dụng mà khơng cần xây dựng lại hình ảnh của bạn và khơng để lộ bí
mật trong cấu hình ngăn xếp của bạn.
• Đóng gói các thùng rác tự động
• Ngăn xếp kếp Ipv4 / Ipv6
• Phân bổ địa chỉ IPv4 và IPv6 cho các nhóm và dịch vụ
• Chia tỉ lệ ngang
• Được thiết kế để có thể mở rộng
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• 2.2 TÌM HIỂU VỀ MICROSERVICES:
• Microservice là một kiếu kiến trúc phần mềm. Các module trong phần mềm này được
chia thành các service rất nhỏ (microservice). Mỗi service sẽ được đặt trên một server
riêng -> dễ dàng để nâng cấp và scale ( quy mô) ứng dụng.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Các ưu điểm của Kiến trúc Microservices
• Dễ nâng cấp và scale up, scale down.
• Do tách biệt nên nếu một service bị lỗi, tồn bộ hệ thống vẫn hoạt động bình thường
• Các service nằm tách biệt nhau, chúng có thể được sử dụng các ngơn ngữ lập trình riêng,
database riêng
• Có thể áp dụng được các quy trình tự động hóa, như build, deploy, monitoring,...
• Khi chia nhỏ các service, team size sẽ giảm và mọi người sẽ làm việc hiệu quả hơn
• Giảm thiểu sự gia tăng phức tạp rối rắm hệ thống lớn.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Nhược điểm
• •
Các module giao tiếp qua mạng nên có thể tốc độ khơng cao bằng monolith.
• •
Việc đảm bảo tính đồng nhất trong dữ liệu sẽ trở nên phức tạp hơn
• •
Sử dụng nhiều service nên việc theo dõi, quản lý các service này sẽ phức tạp hơn
• •
Cần một đội ngũ thật ngon để thiết kế và triển khai bao gồm software architect xịn
• Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được hoặc thông điệp gửi
đến nhiều đích đến vào các thời điểm khác nhau.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• 2.3 TÌM HIỂU VỀ DOCKER
• Docker là một cơng cụ được thiết kế để giúp tạo, triển khai và chạy các ứng
dụng dễ dàng hơn bằng cách sử dụng các containers.
• Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng
dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị tiêu
chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, trong đó
có thư viện, cơng cụ hệ thống, mã và thời gian chạy.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• 2.3.1 Containers
• Container chỉ để lại dấu chân cực kỳ nhỏ. Chỉ cần ứng dụng của nó và các thùng, thư
viện mà nó yêu cầu để chạy. Khơng giống như các máy ảo có một bản sao hoàn
chỉnh của một hệ điều hành khách. Việc cách ly container được thực hiện ở cấp độ
hạt nhân mà khơng cần hệ điều hành khách.
• các thư viện có thể nằm trên các container. Giúp loại bỏ việc phải có 10 bản sao của
một thư viện trên máy chủ, nhằm tiết kiệm không gian.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Những ưu điểm của docker
• 1 .Dưới máy local – giả lập mơi trường server
• 2. Dùng một hệ điều hành mới và trải nghiệm ( Chỉ cần docker là đủ,
chẳng cần đến virtua studio nữa.)
• 3. Chia sẻ và lưu trứ – setup dự án cho nhóm
• 4. Chương trình test song song
• 5.Test app với hệ điều hành khác
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• 2.3.2 Cách thức hoạt động của Docker
• Docker hoạt động bằng cách cung cấp phương thức tiêu chuẩn để chạy
mã của bạn. Docker là hệ điều hành dành cho container. Cũng tương tự
như cách máy ảo ảo hóa (loại bỏ nhu cầu quản lý trực tiếp) phần cứng
máy chủ, các container sẽ ảo hóa hệ điều hành của máy chủ. Docker
được cài đặt trên từng máy chủ và cung cấp các lệnh đơn giản mà bạn
có thể sử dụng để dựng, khởi động hoặc dừng container.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Các thành phần trong Docker
• 1. The Docker daemon
• Một docker daemon là một thành phần server chạy trên một máy ảo và được ví như một server
• 2. The Docker client
• Docker client có thể được chạy trên cùng một host với daemon hoặc chạy trên một host khác và
kết nối với daemon bằng cách dùng CLI.
• 3. The Docker image
• Nó là một bản sao cho các thư viện hệ điều hành cũng như các ứng dụng liên quan trong OS đó.
Trong ngữ cảnh microservices mà được xây dựng trên nên tảng Spring Boot, Docker image có thể
được gói trong một distribution của Linux như Alpine, JRE8 và một Spring Boot microservice jar.
CHƯƠNG 2: TÌM HIỂU CHI TIẾT
• Các thành phần trong Docker
• 4. The Docker container
• là các instance của Docker image. Docker container sẽ sử dụng kernel của hệ điều
hành Linux và nó sẽ có hệ thống filesystem của nó cũng như các cấu hình network.
• 5. Dockerfile
• Là một file chứa các script có nhiệm vụ chỉ dẫn ra việc build như thế nào đối với
một Docker image. Về cơ bản nó là một file văn bản (text file) và có tên là
Dockerfile.
CHƯƠNG 3 XÂY DỰNG MƠ HÌNH
Order-service
CLIENT
API-gateway
registry
User-Service
CHƯƠNG 3 XÂY DỰNG MƠ HÌNH
• RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web
• API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng
dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác. API có thể trả về
dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.
• Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.
• •
GET (SELECT): Trả về một Resource hoặc một danh sách Resource.
• •
POST (CREATE): Tạo mới một Resource.
• •
PUT (UPDATE): Cập nhật thơng tin cho Resource.
• •
DELETE (DELETE): Xố một Resource.
CHƯƠNG 3 XÂY DỰNG MƠ HÌNH
• Giải thích sơ lượt về demo
• -
Tao ra 2 cái service đó là order-service và user-service
• -
Sử dụng kong getway để cung cấp api cho 2 service với bên ngồi
• -
Dùng registry để tao kết nối 2 service lại với nhau
CHƯƠNG 4 DEMO MƠ HÌNH
• Xây dựng đề mơ bao gồm các bước thực hiện như sau
• Bước 1 : xây dựng kong getway bằng file docker-compose.yml
• Bước 2: tạo container cho registry bằng file dockercompose.yml
• Bước 3: Dùng ngơn ngữ Golang tao 2 service
• Bước 4: đăng tải các lên dockerhub để chia sẽ và lưu trữ sau
này