Thứ hai, 06/08/2018 | 00:00 GMT+7

Giới thiệu về Helm, Trình quản lý gói cho Kubernetes

Việc triển khai các ứng dụng cho Kubernetes - hệ thống điều phối containers mạnh mẽ và phổ biến - có thể phức tạp. Việc cài đặt một ứng dụng có thể liên quan đến việc tạo nhiều tài nguyên Kubernetes phụ thuộc lẫn nhau - chẳng hạn như group , dịch vụ, triển khai và bản sao - mỗi tài nguyên yêu cầu bạn viết file kê khai YAML chi tiết.

Helm là trình quản lý gói cho Kubernetes, cho phép các nhà phát triển và nhà điều hành dễ dàng đóng gói, cấu hình và triển khai các ứng dụng và dịch vụ trên các cụm Kubernetes.

Helm hiện là một dự án Kubernetes chính thức và là một phần của Cloud Native Computing Foundation , một tổ chức phi lợi nhuận hỗ trợ các dự án open-souce trong và xung quanh hệ sinh thái Kubernetes.

Trong bài viết này, ta sẽ giới thiệu tổng quan về Helm và các tính năng trừu tượng khác nhau mà nó sử dụng để đơn giản hóa việc triển khai các ứng dụng cho Kubernetes. Nếu bạn chưa quen với Kubernetes, có thể hữu ích khi đọc Giới thiệu về Kubernetes trước để tự làm quen với các khái niệm cơ bản.

Tổng quan về Helm

Hầu hết mọi ngôn ngữ lập trình và hệ điều hành đều có trình quản lý gói riêng để giúp cài đặt và bảo trì phần mềm. Helm cung cấp bộ tính năng cơ bản giống như nhiều trình quản lý gói mà bạn có thể đã quen thuộc, chẳng hạn như apt của Debian hoặc pip của Python.

Helm có thể:

  • Cài đặt phần mềm.
  • Tự động cài đặt phụ thuộc phần mềm.
  • Nâng cấp phần mềm.
  • Cấu hình triển khai phần mềm.
  • Tìm nạp các gói phần mềm từ kho.

Helm cung cấp chức năng này thông qua các thành phần sau:

  • Một công cụ dòng lệnh, helm , cung cấp giao diện user cho tất cả các chức năng của Helm.
  • Một thành phần server đồng hành, tiller , mà chạy trên cụm Kubernetes của bạn, lắng nghe cho lệnh từ helm , và xử lý cấu hình và triển khai các version phần mềm trên cluster.
  • Định dạng đóng gói Helm, được gọi là biểu đồ .
  • Một kho lưu trữ biểu đồ được quản lý chính thức với các biểu đồ đóng gói sẵn cho các dự án phần mềm nguồn mở phổ biến.

Ta sẽ điều tra định dạng biểu đồ chi tiết hơn tiếp theo.

Biểu đồ

Các gói Helm được gọi là biểu đồ và chúng bao gồm một vài file cấu hình YAML và một số mẫu được hiển thị thành file kê khai Kubernetes. Đây là cấu trúc folder cơ bản của biểu đồ:

Thư mục biểu đồ ví dụ
package-name/   charts/   templates/   Chart.yaml   LICENSE   README.md   requirements.yaml   values.yaml 

Các folder và file này có các chức năng sau:

  • biểu đồ /: Các phần phụ thuộc biểu đồ được quản lý thủ công có thể được đặt trong folder này, mặc dù thường tốt hơn nếu sử dụng requirements.yaml để liên kết động các phần phụ thuộc.
  • file mẫu /: Thư mục này chứa file mẫu được kết hợp với các giá trị cấu hình (từ giá values.yaml và dòng lệnh) và được hiển thị thành file kê khai Kubernetes. Các mẫu sử dụng định dạng mẫu của ngôn ngữ lập trình Go .
  • Chart.yaml: Tệp YAML với metadata về biểu đồ, chẳng hạn như tên và version biểu đồ, thông tin về người bảo trì, trang web có liên quan và từ khóa tìm kiếm.
  • LICENSE: Giấy phép bản rõ cho biểu đồ.
  • README.md: Một file readme với thông tin cho user biểu đồ.
  • requirements.yaml: file Một YAML rằng danh sách phụ thuộc của bảng xếp hạng.
  • value.yaml: Tệp YAML chứa các giá trị cấu hình mặc định cho biểu đồ.

Lệnh helm có thể cài đặt biểu đồ từ folder local hoặc từ version đóng gói .tar.gz của cấu trúc folder này. Những biểu đồ đóng gói cũng có thể được tự động tải về và cài đặt từ kho biểu đồ hoặc Repos.

Ta sẽ xem xét kho biểu đồ tiếp theo.

Kho lưu trữ Biểu đồ

index.yaml lưu trữ biểu đồ Helm là một trang web HTTP đơn giản cung index.yaml file index.yaml và các biểu đồ đóng gói .tar.gz . Lệnh helm có sẵn các lệnh con để giúp đóng gói biểu đồ và tạo file index.yaml cần thiết. Các file này có thể được cung cấp bởi bất kỳ web server , dịch vụ lưu trữ đối tượng hoặc server lưu trữ trang web tĩnh nào như GitHub Pages.

Helm được cấu hình sẵn với một repository biểu đồ mặc định, được gọi là ổn định . Kho lưu trữ này trỏ tới một group Google Storage tại https://kubernetes-charts.storage.googleapis.com . Nguồn của kho lưu trữ ổn định có thể được tìm thấy trong kho lưu trữ Git của helm / biểu đồ trên GitHub .

Có thể thêm các đại diện thay thế bằng lệnh helm repo add . Một số repository thay thế phổ biến là:

Cho dù bạn đang cài đặt một biểu đồ bạn đã phát triển local hay một biểu đồ từ một repository , bạn cần phải cấu hình nó cho cài đặt cụ thể của bạn . Ta sẽ xem xét các cấu hình tiếp theo.

Cấu hình biểu đồ

Biểu đồ thường đi kèm với các giá trị cấu hình mặc định trong file giá values.yaml của nó. Một số ứng dụng có thể được triển khai đầy đủ với các giá trị mặc định, nhưng bạn thường cần overrides một số cấu hình để đáp ứng nhu cầu của bạn .

Các giá trị được hiển thị cho cấu hình được xác định bởi tác giả của biểu đồ. Một số được sử dụng để cấu hình nguyên thủy của Kubernetes và một số có thể được chuyển qua containers bên dưới để tự cấu hình ứng dụng.

Đây là một đoạn mã của một số giá trị mẫu:

giá trị.yaml
service:   type: ClusterIP   port: 3306 

Đây là các tùy chọn để cấu hình tài nguyên Dịch vụ Kubernetes. Bạn có thể sử dụng helm inspect values chart-name để kết xuất tất cả các giá trị cấu hình có sẵn cho biểu đồ.

Các giá trị này có thể được overrides bằng cách ghi file YAML của bạn và sử dụng nó khi chạy helm install hoặc bằng cách đặt các tùy chọn riêng lẻ trên dòng lệnh với cờ --set . Bạn chỉ cần chỉ định những giá trị mà bạn muốn thay đổi từ giá trị mặc định.

Biểu đồ Helm được triển khai với một cấu hình cụ thể được gọi là bản phát hành . Ta sẽ nói về các bản phát hành tiếp theo.

Phát hành

Trong quá trình cài đặt biểu đồ, Helm kết hợp các mẫu của biểu đồ với cấu hình do user chỉ định và các giá trị mặc định trong value.yaml . Chúng được kết xuất thành các file kê khai Kubernetes sau đó được triển khai thông qua API Kubernetes. Điều này tạo ra một bản phát hành , một cấu hình cụ thể và triển khai một biểu đồ cụ thể.

Khái niệm về bản phát hành này rất quan trọng, vì bạn có thể cần triển khai cùng một ứng dụng nhiều lần trên một cụm. Ví dụ: bạn có thể cần nhiều server MySQL với các cấu hình khác nhau.

Bạn cũng có thể sẽ muốn nâng cấp các version khác nhau của biểu đồ một cách riêng lẻ. Có lẽ một ứng dụng đã sẵn sàng cho một server MySQL cập nhật nhưng một ứng dụng khác thì không. Với Helm, bạn nâng cấp từng bản phát hành riêng lẻ.

Bạn có thể nâng cấp một bản phát hành vì biểu đồ của nó đã được cập nhật hoặc vì bạn muốn cập nhật cấu hình của bản phát hành. Dù bằng cách nào, mỗi bản nâng cấp sẽ tạo ra một bản sửa đổi mới của bản phát hành và Helm sẽ cho phép bạn dễ dàng quay lại các bản sửa đổi trước đó trong trường hợp có sự cố.

Tạo biểu đồ

Nếu bạn không thể tìm thấy một biểu đồ hiện có cho phần mềm bạn đang triển khai, bạn có thể cần tạo biểu đồ của riêng mình. Helm có thể xuất ra đoạn đầu của một folder biểu đồ với helm create chart-name . Thao tác này sẽ tạo một folder với các file và folder mà ta đã thảo luận trong phần Biểu đồ ở trên.

Từ đó, bạn cần điền vào metadata biểu đồ của bạn trong Chart.yaml và đặt các file kê khai Kubernetes của bạn vào folder templates . Sau đó, bạn cần extract các biến cấu hình có liên quan ra khỏi file kê khai của bạn và vào các giá values.yaml , sau đó đưa chúng trở lại các mẫu file kê khai của bạn bằng cách sử dụng hệ thống tạo mẫu .

Lệnh helm có sẵn nhiều lệnh con để giúp bạn kiểm tra, đóng gói và phục vụ biểu đồ của bạn . Để biết thêm thông tin, vui lòng đọc tài liệu Helm chính thức về phát triển biểu đồ .

Kết luận

Trong bài viết này, ta đã xem xét Helm, trình quản lý gói cho Kubernetes. Ta khái quát kiến trúc Helm và cá nhân helmtiller linh kiện, chi tiết định dạng bảng xếp hạng Helm, và nhìn vào kho đồ. Ta cũng đã xem xét cách cấu hình biểu đồ Helm và cách các cấu hình và biểu đồ được kết hợp và triển khai dưới dạng bản phát hành trên các cụm Kubernetes. Cuối cùng, ta đã đề cập đến những điều cơ bản của việc tạo biểu đồ khi một biểu đồ phù hợp chưa có sẵn.

Để biết thêm thông tin về Helm, hãy xem tài liệu chính thức của Helm . Để tìm các biểu đồ chính thức cho Helm, hãy xem kho lưu trữ của Helm / biểu đồ chính thức trên GitHub .


Tags:

Các tin liên quan