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 đồ:
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à:
- Các lồng ấp repo chính thức có chứa các bảng xếp hạng mà không phải là chưa sẵn sàng cho ổn định. Hướng dẫn sử dụng máy ấp trứng có thể được tìm thấy trên trang GitHub biểu đồ Helm chính thức .
- Bitnami Helm Charts cung cấp một số biểu đồ không có trong repo ổn định chính thức.
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:
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 helm
và tiller
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 .
Các tin liên quan