Cách bắt đầu Viết biểu đồ Helm cho Kubernetes của bạn

[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 trong values.yaml tập tin. Chúng tôi sẽ xem xét khả năng này bên dưới.
  • charts – Các charts 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]

Chat Zalo
0903064855