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/

 

posted on 2021-10-26 22:54  维也纳下午茶  阅读(699)  评论(0编辑  收藏  举报