16/09/2018, 13:13

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

Giới thiệu Triển khai các ứng dụng cho Kubernetes - hệ thống phối hợp thùng chứa mạnh mẽ và phổ biến - có thể phức tạp. Thiết lập một ứng dụng đơn lẻ có thể liên quan đến việc tạo ra nhiều tài nguyên Kubernetes phụ thuộc lẫn nhau - chẳng hạn như nhóm, dịch vụ, triển khai và bản sao - mỗi yêu cầu ...

Giới thiệu

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

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

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

Trong bài viết này, chúng tôi sẽ cung cấp một cái nhìn tổng quan về Helm và các 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 đầu tiên để 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 cùng một tính năng cơ bản như nhiều trình quản lý gói mà bạn có thể đã quen thuộc, chẳng hạn như Debian apt, hoặc Python pip.

Helm có thể:

  • Cài đặt phần mềm.
  • Tự động cài đặt phần mềm phụ thuộc.
  • Nâng cấp phần mềm.
  • Định cấu hình triển khai phần mềm.
  • Lấy 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 người dùng cho tất cả chức năng của Trình quản lý.
  • Một thành phần máy chủ đồng hành, tiller, chạy trên cụm Kubernetes của bạn, lắng nghe lệnh từ helmvà xử lý cấu hình và triển khai các bản phát hành phần mềm trên cụm.
  • Định dạng bao bì Helm, được gọi là biểu đồ.
  • An kho lưu trữ biểu đồ được sắp xếp 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.

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

Biểu đồ

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

Example chart directory

package-name/
  charts/
  templates/
  Chart.yaml
  LICENSE
  README.md
  requirements.yaml
  values.yaml

Các thư mục và tệp này có các chức năng sau:

  • biểu đồ /: Các phụ thuộc biểu đồ được quản lý theo cách thủ công có thể được đặt trong thư mục này, mặc dù nó thường tốt hơn để sử dụng requirements.yaml để liên kết động các phụ thuộc.
  • mẫu /: Thư mục này chứa các tệp mẫu được kết hợp với các giá trị cấu hình (từ values.yaml và dòng lệnh) và kết xuất thành các biểu thức Kubernetes. Các mẫu sử dụng Chuyển định dạng mẫu của ngôn ngữ lập trình.
  • Chart.yaml: Một tệp YAML có siêu dữ liệu về biểu đồ, chẳng hạn như tên biểu đồ và phiên bản, thông tin người duy trì, trang web có liên quan và từ khóa tìm kiếm.
  • GIẤY PHÉP: Một giấy phép rõ ràng cho biểu đồ.
  • README.md: Một tệp readme có thông tin cho người dùng biểu đồ.
  • requirements.yaml: Một tệp YAML liệt kê các phụ thuộc của biểu đồ.
  • values.yaml: Một tệp YAML có các giá trị cấu hình mặc định cho biểu đồ.

Các helm lệnh có thể cài đặt biểu đồ từ thư mục cục bộ hoặc từ .tar.gz phiên bản đóng gói của cấu trúc thư mục này. Các biểu đồ đóng gói này cũng có thể được tải xuống và cài đặt tự động từ kho lưu trữ biểu đồ hoặc repos.

Chúng ta sẽ xem xét các kho biểu đồ tiếp theo.

Kho lưu trữ biểu đồ

Repo biểu đồ Helm là một trang HTTP đơn giản phục vụ index.yaml tập tin và .tar.gz biểu đồ đóng gói. Các helm lệnh có các tiểu trình có sẵn để giúp các biểu đồ gói và tạo ra các yêu cầu index.yaml tập tin. Các tệp này có thể được phục vụ bởi bất kỳ máy chủ web, dịch vụ lưu trữ đối tượng hoặc máy chủ lưu trữ trang web tĩnh nào như Trang GitHub.

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

Repos thay thế có thể được thêm vào với helm repo add chỉ huy. Một số kho lưu trữ thay thế phổ biến là:

  • Chính thức vườn ươm repo có chứa các biểu đồ chưa sẵn sàng cho ổn định. Hướng dẫn sử dụng vườn ươm có thể được tìm thấy trên trang bảng xếp hạng chính thức của Helm GitHub.
  • Bảng xếp hạng Bitnami Helm cung cấp một số biểu đồ không được đề cập trong quan chức ổn định repo.

Cho dù bạn đang cài đặt biểu đồ mà bạn đã phát triển cục bộ hay một biểu đồ từ repo, bạn sẽ cần định cấu hình biểu đồ cho thiết lập cụ thể của mình. Chúng 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 values.yaml tập tin. Một số ứng dụng có thể được triển khai đầy đủ với các giá trị mặc định, nhưng thông thường bạn sẽ cần ghi đè một số cấu hình để đáp ứng nhu cầu của mình.

Các giá trị được hiển thị để định cấu hình được xác định bởi tác giả của biểu đồ. Một số được sử dụng để định cấu hình các phần tử gốc của Kubernetes và một số có thể được chuyển tới vùng chứa bên dưới để cấu hình chính ứng dụng đó.

Dưới đây là một đoạn trích của một số giá trị mẫu:

values.yaml

service:
  type: ClusterIP
  port: 3306

Đây là các tùy chọn để định cấu hình Kubernetes Dịch vụ nguồn. Bạn có thể dùng helm inspect values chart-name để đổ 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 ghi đè bằng cách viết tệp YAML của riêng bạn và sử dụng nó khi chạy helm installhoặc bằng cách đặt tùy chọn riêng lẻ trên dòng lệnh bằng --set cờ. Bạn chỉ cần xác định các giá trị mà bạn muốn thay đổi từ các 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à giải phóng. Chúng ta sẽ nói về các bản phát hành tiếp theo.

Phát hành

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

Khái niệm phát hành này rất quan trọng, bởi vì bạn có thể muố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 máy chủ 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 phiên bản khác nhau của biểu đồ riêng lẻ. Có lẽ một ứng dụng đã sẵn sàng cho một máy chủ MySQL được 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 bản phát hành vì biểu đồ của nó đã được cập nhật hoặc bởi 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 một bản nâng cấp mới sửa đổ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 biểu đồ hiện có cho phần mềm bạn đang triển khai, bạn có thể muốn tạo biểu đồ của riêng mình. Helm có thể xuất ra khung của một thư mục biểu đồ với helm create chart-name. Điều này sẽ tạo một thư mục với các tệp và thư mục mà chúng ta đã thảo luận trong Biểu đồ ở trên.

Từ đó, bạn sẽ muốn điền siêu dữ liệu của biểu đồ vào Chart.yaml và đặt các tệp kê khai Kubernetes của bạn vào templates danh mục. Sau đó, bạn sẽ cần phải trích xuất các biến cấu hình có liên quan ra khỏi tệp kê khai của bạn và values.yaml, sau đó đưa chúng trở lại các mẫu tệp kê khai của bạn bằng cách sử dụng hệ thống templating.

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

Phần kết luận

Trong bài viết này, chúng tôi đã xem xét Helm, người quản lý gói cho Kubernetes. Chúng tôi đã tổng quan về kiến ​​trúc Helm và cá nhân helm và tiller các thành phần, chi tiết định dạng biểu đồ Helm và xem các kho biểu đồ. Chúng tôi cũng đã xem xét cách định 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, chúng tôi đã chạm vào các khái niệm cơ bản về việc tạo biểu đồ khi 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 biểu đồ chính thức cho Helm, hãy xem kho lưu trữ Git chính thức / biểu đồ Git trên GitHub.

0