Quản lý và điều phối

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Thiết kế và triển khai hệ thống phát triển phần mềm tự động và an toàn theo mô hình DevSecOps (Trang 69 - 74)

2.6 Container hóa và quản lý hạ tang container

2.6.4 Quản lý và điều phối

Quản lý và điều phối (Orchestration) là tính năng đóng vai trò quan trọng trong một

hệ thống sử dụng container. Nó giúp tự động hóa việc triển khai, quản lý, nhân rộng và kết nối mạng của container. Việc quản lý và điều phối các container mang lại lợi ích rất lớn cho các doanh nghiệp phải triển khai và quản lý hệ thống hàng trăm hoặc hàng

ngàn container.

Trong bat kì môi trường nào có sử dụng container đều có thể sử dụng hệ thống điều phối container. Nó giúp triển khai cùng một ứng dụng trên các môi trường khác nhau

mà không cần thiết kế lại. Và microservice trong các container giúp việc sắp xếp các dịch vụ dễ dàng hơn, bao gồm lưu trữ, kết nối mạng và bảo mật [42]. Một số công cụ điều phối container phổ biến là Kubernetes, Docker Swarm và Apache Mesos.

2.6.5 Kubernetes

Kubernetes là một công cụ điều phối container mã nguồn mở phổ biến nhất trên thé giới. Ban đầu, Kubernetes được phát triển và thiết kế bởi các kỹ sư tại Google nhưng

sau đó Google đã quyên tặng dự án Kubernetes cho Quỹ Điện toán đám mây (Cloud Native Computing Foundation, CNCF, thành lập vào năm 2015).

Hệ thống điều phối Kubernetes được xây dựng nhằm mục đích quản lý và đơn giản hóa việc điều phối, triển khai và quản lý các hệ thống container phân tán trên nhiều môi trường [44]. Kubernetes loại bỏ nhiều quy trình thủ công liên quan đến việc triển khai và nhân rộng các ứng dụng được đóng gói. Người dùng có thể phân chia các máy

49

chủ, máy vật lý hoặc máy ảo thành các cum (cluster) và cung cấp cho người dùng nền tảng để quản lý các cụm đó một cách dễ dàng và hiệu quả.

|kube-controller- - ‹

of kabeapisemer | + + ¡

h—>>( man Kbeet } oe 7

¡CC p(kimepò) — (eabe-proxy) (my) |

:: Fl Fa Em:

ơ-....

Hình 2.14: Kiến trúc Kubernetes.

6 cấp độ kiến trúc, Kubernetes là một hệ thông phân cum (cluster) bao gồm các

nút chính (master) chịu trách nhiệm điều phối, quản lý tài nguyên, lập lịch,... và các nút (node) chịu trách nhiệm chạy các công việc được giao và báo cáo lại cho master. Kiến trúc của Kubernetes bao gồm:

* kube-apiserver (REST API): là thành phan cốt lõi của cum Kubernetes, cung cấp giao diện người dùng cho trình điều khiển (control plane). kube-apiserver hoạt động như một cổng (gateway) để tiếp nhận và xử lý các yêu cầu. Nó sẽ xác định một yêu cầu có hợp lệ hay không và xử lý yêu cầu đó nếu có. Người dùng

có thể truy cập kube-apiserver thông qua lệnh gọi REST (REST calls), giao diện

đòng lệnh kubectl hoặc các công cụ dòng lệnh khác như kubeadm.

* efcd: hoạt động như một kho lưu trữ các dữ liệu có dạng khóa - giá trị (key - value), có tính kha dụng cao và được sử dụng làm kho lưu trữ dit liệu dự phòng cho một cụm Kubernetes.

kube-scheduler: tính toán các công việc cần thiết và xem xét các tài nguyên hiện

có cùng với trạng thái của một cụm để phân bổ tài nguyên một cách hợp lý.

kube-controller-manager: hoạt động như một tiền trình ngầm (daemon), tham khảo các ý kiến của kube-scheduler và điều khiển các hoạt động trong một cụm.

kubelet: là một ứng dụng nhỏ nằm trên các nút (node) để giao tiếp với trình điều khiển (control plane), đảm bảo các container đang hoạt động ổn định.

kube-proxy: là một proxy nằm trên các nút (node) được dùng để đảm bảo an

toàn cho các giao tiếp mạng của một cụm.

Một số khái niệm thường được sử dụng trong Kubernetes [44]:

* Node (Nut): Mỗi máy chủ (máy vật lý hoặc máy ảo) là một node, với chức năng

là chạy các pod. Mỗi node chạy một số thành phần của Kubernetes như kubelet,

kube proxy và được quản lý bởi một master.

5 Cluster (Cum): Cluster là một tập hợp các máy chủ lưu trữ và tài nguyên mạng

mà Kubernetes sử dụng để thực hiện các công việc khác nhau. Một hệ thống có thể bao gồm một hay nhiêu cluster.

* Master (Máy điều khiển): Master là một trình điều khiển (control plane) của Kubernetes bao gồm API server, bộ lập lịch và trình quản lý bộ điều khiển

(controller manager). Master chịu trách nhiệm lập lịch cho các pod và xử lý các sự kiện.

* Pod: Pod là đơn vị có thể triển khai trên Kubernetes. Mỗi pod có thể chứa một hoặc nhiều container, các container trong pod chia sẽ chung tài nguyên và mạng.

* Services (Dich vu): Services được sử dụng để hiển thị một số chức năng cho người dùng hoặc dịch vụ khác. Chúng thường bao gồm một nhóm các pod.

51

* Volume (Dung lượng): Volume hỗ trợ việc lưu trữ dữ liệu của pod hoặc chia sẻ

dit liệu giữa các pod.

* Namespace (Không gian tên): Namespace là một cụm ảo (virtual cluster). Trên

một cluster vật lý có thể chứa nhiều cluster ảo được phân tách bằng namespace

và chúng hoàn toàn bị cô lập với nhau.

2.6.6 Rancher

Rancher là một phần mềm mã nguồn mở cho phép các cá nhân, tổ chức hoặc doanh nghiệp triển khai, vận hành và quản lý một hoặc nhiều cụm Kubernetes [45]. Rancher cung cấp các phần mềm cần thiết để quản lý các thùng chứa (container). Nó giải quyết các thách thức của việc quản lý hoạt động và bảo mật nhiều cụm Kubernetes trên bất

kì cơ sở hạ tầng nào, đồng thời cung cấp cho các nhóm DevOps những công cụ tích hợp để chạy các khôi lượng công việc (workload) được container hóa.

Rancher Catalog

Croan Spark’ [Bist Gp clastic WP rogstash kibGh ;e..es @ Jenkins

Container Orchestration and Scheduling Leverage

Ops Mgmt. existing tools:

SS= User Mgmt Docker $- cocsr Seg MESOS kubernetes - CVCD

AD/LDAP - Code

Reposito

Infrastructure Services (Storage, Networking, Load Balancer, DNS, etc.) | -_ Monitoring

zon BS

Hình 2.15: Các thành phan của Rancher.

Rancher có bốn thành phần chính được thể hiện trong hình 2.15, bao gồm [46]:

* Điều phối cơ sở hạ tầng (Infrastructure Orchestration): Rancher lấy tài nguyên

(CPU, bộ nhớ, ổ cứng và mạng) từ máy chủ dạng Linux và cung cấp cho các ứng dụng chứa trong các container thông qua một lớp dịch vụ cơ sở hạ tầng (infrastructure services) được thiết kế đặc biệt. Các dich vụ cơ sở hạ tầng của Rancher bao gồm lưu trữ (storage), mạng (networking), cân bằng tải (load balancer),

hệ thống phân giải tên miền (DNS).... và thường được triển khai dưới dạng container để một dịch vụ có thể chạy trên bất kì máy chủ Linux nào.

+ Lập kế hoạch và điều phối vùng chứa (Container Orchestration and Scheduling):

Rancher có tất cả các khung (framework) lập kế hoạch và điều phối vùng chứa phổ biến hiện nay, bao gồm: Docker Swarm, Kubernetes và Mesos. Một người dùng có thể tạo ra nhiều cụm Swarm hoặc Kubernetes và sử dụng các công cụ Swarm hoặc Kubernetes để quản lý các ứng dụng của họ.

* Danh mục ứng dung (Application Catalog): Người dùng Rancher có thể triển

khai các ứng dụng trong danh mục ứng dụng chỉ bằng một cú nhấp chuột dù ứng dụng đó được triển khai trên nhiều vùng chứa (container). Người dùng có thể quản lý các ứng dụng đã triển khai và thực hiện tự động nâng cấp khi có

phiên bản mới. Ngoài việc sử dụng danh mục ứng dụng công khai của Rancher

thì người dùng có thể tạo danh mục ứng dụng của riêng họ.

+ Kiểm soát ở mức độ doanh nghiệp (Enterprise-Grade Control): Rancher hỗ trợ

các tiện ích (plugin) để xác thực người dùng một cách linh hoạt. Bên cạnh đó, Rancher còn hỗ trợ kiểm soát truy cập ở cấp độ môi trường (môi trường phát triển), cho phép các cá nhân hoặc nhóm có quyền cho phép hoặc từ chối truy

cập.

Với Rancher, người dùng có thể triển khai các ứng dụng được chứa trong các vùng chứa (container) một cách an toàn. Bên cạnh đó, Rancher giúp việc phân phối Kubernetes cho các nhóm phát triển trở nên đơn giản hơn, tăng tốc độ phát hành sản

phẩm ra thị trường và đẩy nhanh quá trình chuyển đổi kỹ thuật của tổ chức hay doanh

nghiệp.

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Thiết kế và triển khai hệ thống phát triển phần mềm tự động và an toàn theo mô hình DevSecOps (Trang 69 - 74)

Tải bản đầy đủ (PDF)

(157 trang)