[Report][AWS Modern Applications Online Series]Chạy containers phi máy chủ với Amazon EKS

Amazon Elastic Container Service for Kubernetes (Amazon EKS) giúp việc triển khai Kubernetes trên AWS trở nên đơn giản
2020.10.15

Ngày 15/10/2020 vừa rồi đã diễn ra sự kiện AWS Modern Applications Online Series. Link sự kiện: https://aws.amazon.com/vi/events/application/modern-applications/

Chủ để của session lần này là "Chạy containers phi máy chủ với Amazon EKS" Diễn giả: Hoang Trung Hieu, Solutions Architect, AWS

Containers đã trở thành một tiêu chuẩn mới về cách chúng ta đóng gói và triển khai ứng dụng. Tuy nhiên, việc kết hợp các containers của chúng ta với Kubernetes sẽ tạo ra một lớp phức tạp khác. Trong phiên này, hãy tìm hiểu cách Amazon Elastic Container Service for Kubernetes (Amazon EKS) giúp việc triển khai Kubernetes trên AWS trở nên đơn giản và có thể thay đổi quy mô, bao gồm cả việc kết nối mạng, bảo mật, giám sát và ghi nhật ký. Tìm hiểu cách tích hợp Amazon EKS và AWS Fargate, một công cụ điện toán phi máy chủ dành cho containers và triển khai containers trên một cụm Kubernetes mà không cần quản lý cơ sở hạ tầng cơ sở.

1. Containers và Kubernetes trong phát triển ứng dụng hiện đại

Container là 1 đơn vị phần mềm, có thể cài đặt, và chạy ở bất cứ đâu. Trong 1 container, chúng ta đóng gói mã chương trình ứng dụng của mình cùng với các thư viện phụ thuộc của nó. Khác với máy ảo, các container ảo hoá ở mức hệ điều hành. Điều này cho phép hệ thống chạy các container riêng biệt và chỉ chứa các ứng dụng và các thư viện cũng như các thành phần phụ thuộc của nó, làm cho container nhẹ nhàng hơn, nhanh và dễ di chuyển khi cần thiết. Container được coi là thế hệ tiếp theo của điện toán.

Một số lợi thế của container:

  • Làm cho các dịch vụ trở nên đơn giản để mô hình hoá
  • Ứng dụng và tất cả các thành phần phụ thuộc được đóng gói thành 1 docker image
  • Hộ trợ mọi ứng dụng và bất kì ngôn ngữ nào
  • Docker image là 1 cấu phần có thể lưu trữ theo phiên bản trong 1 kho lưu trữ giống như mã nguồn của bạn
  • Dễ dàng kiểm thử, triển khai

Việc sử dụng container đã trở thành 1 tiêu chuẩn trong phát triển ứng dụng hiện đại, và đặc biệt là tiêu chuẩn cho việc xây dựng các ứng dụng Microservices.

Giá trị sử dụng của container là chúng ta sẽ đảm bảo sự đồng nhất của một ứng dụng trong các môi trường khác nhau.

Thách thức nằm ở việc điều phối container. Kubernetes là bộ điều phối được sử dụng phổ biến nhất trên thị trường hiện nay. Kubernetes giúp điều phối các cụm máy chủ trên quy mô lớn một cách hiệu quả.

2. Tổng quan về Amazon Elastic Kubernetes Service (EKS)

Amazon EKS là 1 dịch vụ Kubernetes được quản lý hoàn toàn, giúp bạn dễ dàng chạy Kubernetes trên AWS mà không cần cài đặt.

  • Amazon EKS được thiết kế để hộ trợ các ứng dụng sản xuất cho khách hàng có quy mô khác nhau. Amazon EKS được xây dựng bằng cách tận dụng cơ sở hạ tầng toàn cầu của AWS, cam kết SLA 99,9% cho mỗi cluster
  • EKS làm việc với các công cụ có sẵn, thường xuyên được sử dụng. EKS được chứng nhận tuân thủ Kubernetes để bạn có thể hưởng tất cả các lợi ích của các công cụ mã nguồn mở từ cộng đồng.
  • AWS không chỉ cam kết làm cho Kubernetes tốt hơn trên AWS mà còn bất kì nơi nào bạn sử dụng EKS
  • EKS được tích hợp chặt chẽ với các dịch vụ AWS

Với EKS, khách hàng có thể chạy Microservices, xây dựng nền tảng như 1 dịch vụ cho khách hàng, di chuyển ứng dụng ở mọi quy mô, tận dụng sử dụng Machine Learning.

3. Giới thiệu về AWS Fargate

Mặc dù EKS có thể giúp bạn quản lý các ứng dụng của mình, nhưng bạn vẫn cần biết và quản lý các máy chủ của mình. Với Fargate, bạn không cần chọn các loại máy chủ phù hợp hoặc cấu hình các thành phần khác nhau của ứng dụng. Bạn chỉ cần xây dựng container image của mình, xác định cách thức và nơi bạn muốn nó chạy, và trả tiền cho các tài nguyên bạn thực sự cần.

Với AWS Fargate, bạn có thể sử dụng các pod hiện có của mình cùng tồn tại với Fargate, AWS sẽ cung cấp cho bạn tuỳ chọn làm việc với EKS.

4. Cách AWS Fargate làm việc với Amazon EKS

AWS Fargate profile là 1 tệp cấu hình để bạn chỉ định pod nào nên sử dụng Fargate. Với Fargate profile, bạn cho phép Amazon EKS quản lý việc triển khai vào Fargate hoặc các loại worker node khác nhau. Trong hình là 1 số thông số quan trọng của Fargate profile:

Sự kết hợp với AWS Fargate tạo ra sự linh hoạt trong cách bạn thiết kế các tài nguyên điện toán của mình.

Một số tuỳ chọn mà bạn có thể sử dụng với Amazon EKS:

  • Chỉ sử dụng các Worker nodes: Bạn có toàn quyền sở hữu hoặc quyền kiếm soát tài nguyên điện toán của mình
  • Chế độ hỗn hợp kết hợp data plane truyền thống và data plane không máy chủ
  • Sử dụng hoàn toàn với Fargate

Hãy cùng xem qua 1 quy trình triển khai cụ thể như sau:

Trong sơ đồ chúng ta có 1 cụm Kubernetes, có 1 nhóm Docker pod cũng như AWS Fargate. Trong ví dụ này chúng ta sẽ triển khai 1 pod vào AWS Fargate. Biểu đồ này cũng hiển thị các đối tượng Kubernetes gốc chẳng hạn như Webhook được sử dụng để cho phép các yêu cầu gọi Kubernetes API. Ngoài ra, cụm này cũng được cấu hình với 1 Fargate profile

  • Hãy tưởng tượng rằng bạn muốn triển khai 1 pod trong namespace "prod" với 1 nhãn cụ thể có stack là "blue".
  • Khi có yêu cầu, các Webhook đang chạy trên cụm sẽ thực hiện yêu cầu đó và sẽ gửi tới EKS câu hỏi là có yêu cầu nào trùng với namespace là "prod" với nhãn stack có value là "blue" không.
  • Khi EKS kiểm tra và khớp với 1 yêu cầu thì Webhook sẽ thay đổi ngay lập tức và sẽ nhập thông tin vào Fargate Scheduler
  • Sau khi thay đổi, Fargate Scheduler sẽ chỉ định các pod cho AWS Fargate
  • Và như vậy, bạn có pod của mình đang chạy trong Fargate

5. Demo

Ở phần Demo, diễn giả triển khai ứng dụng vào cụm Kubernetes sử dụng bộ cân bằng tải với ELB và kiểm soát truy cập chi tiết cho tài khoản dịch vụ. Nếu bạn có hứng thú hãy truy cập đường link của sự kiện và tìm tới session "Chạy containers phi máy chủ với Amazon EKS"

Cảm ơn bạn đã đọc blog Xin chào và hẹn gặp lại!