[ad_1]
Helm là một trình quản lý gói cho khối lượng công việc Kubernetes. Tạo biểu đồ Helm cho ứng dụng của bạn sẽ đơn giản hóa việc triển khai có thể tái tạo vào một cụm Kubernetes. Người dùng có thể cài đặt toàn bộ biểu đồ bằng một lệnh, thay vì áp dụng thủ công các bảng kê khai thành phần riêng lẻ với Kubectl.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách bắt đầu với Helm bằng cách viết biểu đồ cho một ứng dụng đơn giản. “Biểu đồ” về mặt khái niệm tương tự như một “gói” Kubernetes kê khai mà Helm cho phép bạn quản lý như một thực thể duy nhất.
Biểu đồ Helm là gì?
Biểu đồ Helm áp dụng mô hình quản lý gói quen thuộc trong hệ điều hành và ngôn ngữ lập trình cho các ứng dụng chạy trong một cụm Kubernetes. Biểu đồ Helm có thể có phần phụ thuộc và phần con; tất cả các thành phần này được tự động khởi động trong cụm của bạn khi bạn cài đặt biểu đồ cấp cao nhất.
Biểu đồ được tạo phiên bản đầy đủ bằng cách sử dụng chiến lược phát hành theo ngữ nghĩa. Tương tự với mô-đun npm hoặc gói hệ điều hành, bạn có thể ghim biểu đồ vào các phiên bản cụ thể và theo dõi các thay đổi của chúng theo thời gian. Điều này giúp đơn giản hóa việc khôi phục các triển khai ứng dụng thành một bản phát hành tốt đã biết nếu bạn gặp sự cố trong cụm của mình.
Biểu đồ Helm cũng kết hợp khả năng tạo khuôn mẫu để cung cấp các giá trị động tại thời điểm cài đặt. Bạn có thể định cấu hình các ứng dụng mới mà không cần chỉnh sửa trực tiếp tệp kê khai của chúng, sử dụng các biến do nhà phát triển biểu đồ cung cấp.
Cài đặt Helm
Helm được phân phối dưới dạng tệp nhị phân đơn giản thông qua trang Bản phát hành GitHub của dự án. Tải xuống bản phân phối chính xác cho hệ thống của bạn, làm cho nó có thể thực thi và di chuyển nó vào một vị trí trong PATH
.
Helm’s cũng có mặt trong kho gói của hầu hết các bản phân phối Linux phổ biến. Bạn có thể tìm thấy nó trong Homebrew cho macOS và Chocolatey và Scoop cho Windows.
Sau khi cài đặt xong, hãy chạy helm version
để kiểm tra mọi thứ đang hoạt động:
$ helm version --template="Version: {{.Version}}" Version: v3.8.1
Các lệnh Helm nhắm mục tiêu kết nối cụm Kubernetes đang hoạt động của bạn như được Kubectl sử dụng. Tệp Kubeconfig đã chọn của bạn và ngữ cảnh sẽ được sử dụng cho tất cả các lệnh Helm. Bạn có thể tham khảo một tệp cấu hình khác với tiêu chuẩn KUBECONFIG
biến môi trường hoặc --kubeconfig
cờ các cơ chế.
Tạo biểu đồ Helm
Bây giờ bạn có thể bắt đầu tạo biểu đồ Helm cho ứng dụng của mình. Sử dụng helm create
lệnh để dựng một biểu đồ mới trong thư mục làm việc của bạn:
$ helm create my-app-chart
Nội dung của biểu đồ sẽ được gửi vào bên trong my-app-chart
danh mục. Hãy kiểm tra xem nó chứa những gì:
$ ls my-app-chart Chart.yaml charts templates values.yaml
Có hai tệp cấp cao nhất và hai thư mục con bổ sung. Đây là những gì mỗi tài nguyên được sử dụng cho:
Chart.yaml
– Tệp kê khai của biểu đồ Helm xác định thuộc tính siêu dữ liệu bao gồm tên và phiên bản của nó.values.yaml
– Tệp này lưu trữ các giá trị mặc định cho các biến mà bạn có thể tham chiếu trong biểu đồ của mình. Có thể ghi đè các giá trị được đặt ở đây bằng cách sử dụng cờ CLI khi bạn cài đặt biểu đồ.templates
– Thư mục mẫu chứa các tệp kê khai đối tượng Kubernetes trong biểu đồ của bạn. Cài đặt biểu đồ sẽ áp dụng tất cả các tệp kê khai này cho cụm của bạn. Mọi tệp kê khai Kubernetes YAML hợp lệ đều có thể được đặt tại đây; bạn cũng có thể sử dụng chức năng bổ sung, chẳng hạn như tham chiếu đến các biến được xác định trongvalues.yaml
tập tin. Chúng tôi sẽ xem xét khả năng này bên dưới.charts
– Cáccharts
thư mục chứa các biểu đồ Helm khác mà biểu đồ này phụ thuộc vào. Nó được sử dụng để định cấu hình các mối quan hệ biểu đồ mẹ-con phức tạp. Chúng tôi sẽ không đề cập đến tính năng này trong bài viết này nên bạn có thể xóa thư mục nếu không cần.
Biểu đồ mặc định của Helm được cấu hình trước để triển khai một phiên bản của máy chủ web NGINX. Kubernetes biểu hiện trong templates
thư mục tạo các thành phần cấu thành khác nhau, chẳng hạn như Triển khai, Dịch vụ và Ingress. Ứng dụng được định cấu hình bởi các biến được xác định trong values.yaml
; tại đây, bạn sẽ tìm thấy các cài đặt cho thẻ hình ảnh, cổng dịch vụ và máy chủ Ingress, trong số những cài đặt khác:
$ cat values.yaml # Default values for my-app-chart. # This is a YAML-formatted file. # Declare variables to be passed into your templates. replicaCount: 1 image: repository: nginx pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "" ...
Cài đặt biểu đồ
Để thêm ứng dụng vào cụm của bạn, hãy sử dụng helm install
yêu cầu:
$ helm install my-app . NAME: foo LAST DEPLOYED: Tue Mar 29 14:47:48 2022 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES: ...
Đối số đầu tiên của lệnh xác định tên bản phát hành của bạn. Đối số thứ hai tham chiếu đến đường dẫn thư mục để tải biểu đồ Helm từ đó. Bạn có thể dùng .
khi thư mục làm việc của bạn đã được đặt thành thư mục gốc của biểu đồ.
Bạn sẽ nhận được một số đầu ra đầu cuối mô tả bản phát hành đã cài đặt. Các NOTES
phần bao gồm thông tin được cung cấp bởi biểu đồ.
Ghi đè values.yaml
cung cấp một hoặc nhiều trường hợp của --set
lá cờ:
$ helm install my-app . --set replicaCount=3 --set image.tag=1.20
Ví dụ này sẽ triển khai ba bản sao của một vùng chứa chạy nginx:1.20
hình ảnh. Bạn có thể kiểm tra điều này bằng cách liệt kê các Nhóm trong cụm của mình bằng Kubectl:
$ kubectl get pods NAME READY STATUS RESTARTS AGE my-app-my-app-chart-6d6577749c-2qbhb 1/1 Running 0 61s my-app-my-app-chart-6d6577749c-wdmgv 1/1 Running 0 44s my-app-my-app-chart-6d6577749c-x5wp7 1/1 Running 0 40s
Nâng cấp, truy xuất và xóa bản phát hành biểu đồ
Tiếp theo, hãy thực hiện một số thay đổi đối với biểu đồ hoặc thay đổi giá trị của một biến:
$ helm install my-app . --set replicaCount=5 Error: INSTALLATION FAILED: cannot re-use a name that is still in use
Lặp lại install
lệnh không hoạt động. Để áp dụng các thay đổi cho biểu đồ đã được triển khai, hãy sử dụng upgrade
lệnh thay thế. Điều này tạo ra một “bản phát hành” mới bên trong cụm.
$ helm upgrade my-app . --set replicaCount=5 Release "my-app" has been upgraded. Happy Helming!
Bạn có thể liệt kê tất cả các bản phát hành biểu đồ đã triển khai trong cụm của mình với helm list
:
$ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-app default 2 2022-03-30 15:09:34.370758719 +0100 BST deployed my-app-chart-0.1.0 1.16.0
Thông tin chi tiết của mỗi bản phát hành bao gồm tên của nó, số lần nó được triển khai, thời gian cập nhật cuối cùng và số phiên bản của biểu đồ và ứng dụng mà nó cung cấp.
Để xóa một bản phát hành và phá hủy các đối tượng Kubernetes của nó, hãy chuyển tên của nó cho uninstall
yêu cầu:
$ helm uninstall my-app release "my-app" uninstalled
Viết biểu đồ của riêng bạn từ Scratch
Bây giờ chúng ta hãy xem cách viết một biểu đồ cơ bản từ đầu. Tạo một thư mục mới cho biểu đồ của bạn; chúng tôi đang gọi của chúng tôi cloudsavvy-chart
. Thêm một Chart.yaml
tệp bên trong với nội dung sau:
apiVersion: v2 name: cloudsavvy-chart description: An example Helm chart. type: application version: 0.1.0 appVersion: 1.1.0
Các type
trường thường phải được đặt thành application
. Loại được hỗ trợ khác là library
. Thư viện biểu đồ gói chức năng có thể được bao gồm như một phần phụ thuộc của các biểu đồ khác. Chúng không chứa bất kỳ Kubernetes nào templates
chúng tôi.
Các version
trường đề cập đến phiên bản biểu đồ của bạn. Bạn nên tăng số này mỗi khi bạn sửa đổi các mẫu của biểu đồ. appVersion
cho biết phiên bản của thành phần phần mềm chính mà biểu đồ của bạn cung cấp. Nó báo hiệu cho người dùng lập biểu đồ những gì sẽ chạy trong cụm của họ sau khi họ cài đặt biểu đồ. Ví dụ: nếu bạn đang tạo một biểu đồ phân phối WordPress, bạn nên đặt appVersion
vào số phiên bản WordPress mà bạn đang cung cấp.
Tiếp theo tạo một values.yaml
tệp với một vài biến đơn giản:
deploymentName: cloudsavvy image: nginx:latest replicas: 1
Các biến này sẽ được tham chiếu trong mẫu biểu đồ của bạn. Thêm mẫu này ngay bây giờ với tên templates/deployment.yaml
. Biểu đồ cơ bản của chúng tôi sẽ triển khai một Pod duy nhất nên nó sẽ chỉ có một tệp mẫu. Trong tình huống thực tế, bạn nên tạo các tệp kê khai riêng lẻ cho từng thành phần ứng dụng của mình.
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.deploymentName }}-deployment spec: selector: matchLabels: app: {{ .Values.deploymentName }} replicas: {{ .Values.replicas }} template: metadata: labels: app: {{ .Values.deploymentName }} spec: containers: - name: {{ .Values.deploymentName }} image: {{ .Values.image }}
Triển khai sử dụng các giá trị từ values.yaml
để định cấu hình tham chiếu hình ảnh và số lượng bản sao. Các deploymentName
biến được sử dụng xuyên suốt để mọi thay đổi trong tương lai có thể được thực hiện ở một nơi. Các trường trong values.yaml
được tham chiếu bằng cách sử dụng {{ .Values.FIELD_NAME }}
cú pháp.
Bây giờ sử dụng Helm để cài đặt biểu đồ:
$ helm install cloudsavvy-app . --set replicas=3 NAME: cloudsavvy-app LAST DEPLOYED: Tue Mar 29 15:43:21 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
Các --set
cờ ghi đè giá trị mặc định của replicas
nó được thiết lập trong values.yaml
. Sau khi các ghi đè đã được áp dụng, Helm sẽ đưa các giá trị đã phân giải vào đúng vị trí trong các mẫu YAML của bạn. Các tệp kê khai Kubernetes cuối cùng sau đó sẽ được áp dụng cho cụm của bạn. Bây giờ bạn có thể xác minh rằng ba vùng chứa đang chạy bằng cách sử dụng Kubectl để liệt kê các Nhóm của cụm của bạn.
$ kubectl get pods NAME READY STATUS RESTARTS AGE cloudsavvy-deployment-7b975bd985-5r7dc 0/1 ContainerCreating 0 15s cloudsavvy-deployment-7b975bd985-bpbkm 0/1 ContainerCreating 0 15s cloudsavvy-deployment-7b975bd985-jzb5q 0/1 ContainerCreating 0 15s
Bản tóm tắt
Biểu đồ Helm cho phép bạn đóng gói bộ sưu tập Kubernetes biểu hiện dưới dạng các ứng dụng hoàn chỉnh đã sẵn sàng triển khai. Bạn có thể tạo các cấu hình theo mẫu mà người dùng cuối có thể dễ dàng thay đổi trước khi cài đặt bản phát hành vào một cụm.
Trong hướng dẫn này, chúng tôi đã giải thích những điều cơ bản về chức năng của Helm và chỉ ra cách bạn có thể tạo các biểu đồ đơn giản của riêng mình cho các ứng dụng của mình. Mặc dù vậy, chúng tôi hầu như chưa bao gồm bề mặt của những gì Helm có thể đạt được – khi bạn đã viết một biểu đồ, bạn có thể đẩy nó vào một kho lưu trữ để người khác sử dụng, thêm các biểu đồ khác dưới dạng phụ thuộc và xây dựng các biểu đồ nâng cao hơn bằng cách sử dụng các hàm, đường ống, và điều khiển các biểu thức dòng chảy. Dành thời gian để tìm hiểu Helm làm cho việc triển khai Kubernetes của bạn linh hoạt hơn, mạnh mẽ hơn và có thể tái sử dụng.
[ad_2]