Kubernetes Helm 101

#7
Topic created · 1 Posts · 25 Views
  • Sơ lược về Kubernetes Helm

    Những năm vừa qua, Kubernetes đã bùng nổ vô cùng mạnh mẽ. Cùng lúc đó tạo ra những cộng đồng, hệ sinh thái mới giúp việc phát triển, triển khai ứng dụng vốn phức tạp và khó khăn trở nên đơn giản hơn. Kubernetes có nghĩa là người lái tàu thì Helm chính là bánh lái của con tàu ấy trong “nghiệp” của mỗi DevOps và Developer.

    Helm là một package manager dành cho Kubernetes. Cũng giống như những package manager nổi tiếng của NodeJS như NPM hay YARN, Helm dùng để quản lý các Kubernetes application được dựng lên từ những Kubernetes resource. Hiểu nôm na là thay vì phải define một nùi Kubernetes resource để triển khai một ứng dụng, thì với Helm bạn chỉ việc gõ vài lệnh trong terminal và enter cái “bụp”, xong!

    Photo by Peyton Vaughn on BoxBoat

    Trong bài viết này, chúng ta sẽ cùng tìm hiểu về Helm, một công cụ mạnh mẽ giúp làm việc với Kubernetes dễ dàng hơn bao giờ hết. Mặc dù những thuật ngữ này khá phổ biến với Developer hiện nay, chúng ta sẽ lướt qua một chút để dành cho những người chưa biết:

    • Containerization: là giải pháp ảo hoá, tự động hoá thế hệ mới kế tiếp sau Hypervisor Virtualization, được áp dụng rộng rãi hiện nay bởi hiệu quả đột phá với các ưu điểm vượt trội về tốc độ triển khai, khả năng mở rộng, tính an toàn và trải nghiệm người dùng.
    • Docker: là phần mềm tạo, quản lý và chạy container số một hiện nay. Được lựa chọn hầu hết cho tất cả các ứng dụng Containerization phổ biến hiện nay.
    • Kubernetes: là phần mềm nổi tiếng dùng để điều phối hoạt động của các container. Cùng với sự trỗi dậy của Containerization thì việc quản lý và điều phối những ứng dụng sử dụng container trở nên phức tạp và khó khăn khiến Kubernetes trở thành một giải pháp hữu hiệu, không thể thiếu đối với những hệ thống sử dụng Containerization.

    Các khái niệm

    Helm có 4 khái niệm cơ bản:

    • Chart: là tập hợp những file YAML template của những Kubernetes resource cần thiết để dựng lên một ứng dụng Kubernetes. Để dễ hình dung, Chart của Helm có thể được so sánh giống như một Image của Docker. Đương nhiên Helm cũng có Helm Hub nơi để tìm kiếm và chia sẻ Chart của những ứng dụng phổ biến.

    Cấu trúc của một Helm Chart thông thường

    • Config: nằm trong file values.yaml chứa những configuration dành riêng cho một bản release của Kubernetes application. Đó có thể là config cho service, ingress, deployment,… cho đến những application riêng biệt như Kafka, Consul, Vault, NATS-streaming,

    Config dành cho những environment khác nhau của một Kubernetes application

    • Release: là một version của K8s application đang chạy dựa trên Chart và kết hợp với một Config cụ thể.

    Release của Helm ở công ty Dwarves Foundation

    • Repositories: Helm Charts có thể được publish thông qua nhiều repo khác nhau. Nó có thể là những private repo chỉ dùng trong nội bộ công ty, hoặc public thông qua Helm Hub. Một số Chart có thể có nhiều phiên bản của từng công ty hoặc publisher khác nhau. Riêng những Chart trong repo Stable thì luôn phải đáp ứng được tiêu chí từ Technical Requirements của Helm.

    Vault mình sử dụng chart của Banzaicloud hoặc Incubator tuỳ vào usecase sử dụng

    Kiến trúc

    Helm có một kiến trúc client-server khá đơn giản, bao gồm client CLI và một server chạy trong Kubernetes cluster:

    • Helm Client: cung cấp cho developer sử dụng nó một command-line interface (CLI) để làm việc với Charts, Config, Release, Repositories. Helm Client sẽ tương tác với Tiller Server, để thực hiện các hành động khác nhau như install, upgraderollback với những Charts, Release.
    • Tiller Server: là một server nằm trong Kubernetes cluster, tương tác với Helm Client và giao tiếp Kubernetes API server. Nhờ đó Helm có thể dễ dàng quản lý Kubernetes với các tác vụ như install, upgrade, queryremove đối với Kubernetes resources_._

    Lời nhắn gửi

    Vừa rồi là một số khái niệm cơ bản và kiến trúc để giúp bạn có thể hiểu và nắm bắt Helm một cách nhanh chóng hơn. Hệ sinh thái Kubernetes đang phát triển với tốc độ điên cuồng và các công cụ mới xuất hiện mỗi ngày. Helm là cộng cụ thiết yếu dành cho DevOps và Developer đang sử dụng Kubernetes ở môi trường production của mình. Các công cụ như Helm thường được sử dụng khi có chiến lược triển khai nhanh chóng và tiết kiệm chi phí vận hành.

    Các bạn có thể tham khảo thêm thông tin tại document của Helm. Trong bài viết tiếp theo, mình sẽ hướng dẫn cách thực hiện những tác vụ cơ bản của Helm và cách tạo một Helm Chart như thế nào.

    Hi vọng bài viết này sẽ giúp ích cho các bạn đang có ý định tìm hiểu về Helm cũng như các công cụ cần thiết của một DevOps. Cảm ơn các bạn đã theo dõi bài viết, hãy góp ý cho mình nếu có sai sót và mình sẽ làm tốt hơn ở những bài viết sau.

    Đọc thêm

Log in to reply