Helm基礎知識


0、安裝Helm

安裝Helm

下載helm安裝包,releases

解壓tar.gz文件

mv linux-amd64/helm /usr/bin/helm

接着就可以使用helm。

一、 什么是Helm

Helm是針對K8s的包管理器,使得打包、配置、部署應用/微服務到K8s集群中,變得簡單容易。如果沒有Helm, K8s的各種資源相互依賴,必須被手動的創建,這樣將會復雜又浪費時間。 Helm由1個命令行的Helm client組成, 用戶可以通過命令行的helm client去接入Kubernets API server。 用戶的Helm permissions通過用戶的kubeconfig file進行配置和定義。

 

Helm所使用的打包格式叫Chart。1個Chart是一系列文件的集合,定義了部署微服務所需要的k8s resources。所有的chart文件被添加到1個目錄中,這個目錄的名字就是helm chart的名字。

Example:

 tree
.
├── Chart.yaml
├── README.md
├── templates
│   ├── Kafka-zk-tls-cert-client.yaml
│   ├── _helpers.tpl
│   ├── _logshipper-helpers.tpl
│   ├── configmap.yaml
│   ├── kafka-client-ca-certificate.yaml
│   ├── kafka-client-client-ca-certificate.yaml
│   ├── kafka-server-certificate.yaml
│   ├── kafka-ss.yaml
│   ├── kafka-svc-client.yaml
│   ├── kafka-svc.yaml
│   ├── logshipper-configmap.yaml
│   ├── logshipper-tls-cert-lt-client.yaml
│   ├── pdb.yaml
│   ├── rolebinding.yaml
│   ├── sasl-secret.yaml
│   ├── service-account.yaml
│   └── service-nodeport.yaml
├── values.schema.json
└── values.yaml

1 directory, 21 files

 

image

1) 必須的文件

Chart.yaml 描述chart, chart的name和version必須被定義。
values.yaml 包含chart的所有參數和默認值,默認值可以被覆蓋,當微服務部署的時候。

 

2)可選的文件

LICENSE 普通的明文表示license的信息。
README.md 1個README文件。
requirements.yaml 列出對於其他charts的依賴。

 

子目錄templates下面包含以下文件:
YAML-files: 定義要create的k8s resources。
NOTES.txt: 當chart部署的時候,顯示的文本。
_helpers.tpl:可以用到YAML-files中templates

 

 

二、Helm是如何工作的

image

每當執行Helm install命令,charts被發送給Helm中的Go template 渲染機,解析chart結構。提供chart的方式由.tar.gz文件或者目錄。

當Helm命令執行的時候,chart可以存儲到本地也可以是remote repo。通過templates files, Helm對象被創建在機器中,使得通過helm對象去訪問templates之間的values提供了可能

YAML-files最終被生成,helm調用適當的k8s api去創建resource,就像chart中所定義/指定的那樣。

 

Helm對象有:
Chart:Chart.yaml 的內容
Values:values.yaml文件提供的傳給template的和用戶提供的(用戶提供指的是通過helm install or helm upgrade操作提供。
Release:release對象本身。release name和類似的東西,這些可以在deploy時候被創建,通過release對象被訪問到。
Files:用該對象訪問/接入charts中除template files外的一般文件。
Capabilities:k8集群的Capabilities,包含類似於k8s版本信息的東西。
Template:主要是關於當前正在執行的template的信息。

 

更多helm內置對象,https://helm.sh/docs/chart_template_guide/#built-in-objects

Helm簡單的命令:

helm list 
helm status serviceName
helm get all serviceName
helm upgrade
helm history serviceName
helm rollback serviceName 1
helm version
version.BuildInfo{Version:"v3.6.2", GitCommit:"ee407bdf364942bcb8e8c665f82e15aa28009b71", GitTreeState:"clean", GoVersion:"go1.16.5"}

helm --help
The Kubernetes package manager
........

export NAMESPACE="schema-registry-sr-install"
helm list -n $NAMESPACE
NAME                            NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                                   APP VERSION
eric-data-coordinator-zk        eric-schema-registry-sr-install 1               2021-07-20 16:42:13.0619995 +0800 CST   deployed        eric-data-coordinator-zk-1.17.0+17
eric-data-message-bus-kf        eric-schema-registry-sr-install 1               2021-08-12 20:57:50.0334071 +0800 CST   deployed        eric-data-message-bus-kf-1.16.0+27

kubectl get pods -n $NAMESPACE
NAME                         READY   STATUS    RESTARTS   AGE
eric-data-coordinator-zk-0   1/1     Running   56         98d
eric-data-message-bus-kf-0   1/1     Running   45         75d
eric-data-message-bus-kf-1   1/1     Running   42         75d
eric-data-message-bus-kf-2   1/1     Running   42         75d

更多 Helm command

 

三、Helm chart設計原則(如何創建簡單的Helm chart)

https://docs.bitnami.com/kubernetes/how-to/create-your-first-helm-chart/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM