Kubernetes】【helm使用

网友投稿 587 2022-05-30

一、在 Helm3 中的执行顺序定义代码如下:

var InstallOrder KindSortOrder = []string{ "Namespace", "NetworkPolicy", "ResourceQuota", "LimitRange", "PodSecurityPolicy", "PodDisruptionBudget", "Secret", "ConfigMap", "StorageClass", "PersistentVolume", "PersistentVolumeClaim", "ServiceAccount", "CustomResourceDefinition", "ClusterRole", "ClusterRoleList", "ClusterRoleBinding", "ClusterRoleBindingList", "Role", "RoleList", "RoleBinding", "RoleBindingList", "Service", "DaemonSet", "Pod", "ReplicationController", "ReplicaSet", "Deployment", "HorizontalPodAutoscaler", "StatefulSet", "Job", "CronJob", "Ingress", "APIService", }

Helm 不是按照文件的某个顺序来执行的,而是根据文件内容的 Kind,按照定义的顺序执行的,上面的执行顺序基本上和类型间的使用(依赖)顺序有一定关联。

二、Helm使用

使用命令helm create [charName] 创建一个chart: helm create mychart   目录结构如下:

mychart/

├── charts

├── Chart.yaml

├── templates

│   ├── deployment.yaml

│   ├── _helpers.tpl

│   ├── hpa.yaml

│   ├── ingress.yaml

│   ├── NOTES.txt

│   ├── serviceaccount.yaml

│   ├── service.yaml

│   └── tests

│       └── test-connection.yaml

└── values.yaml

Chart.yaml 用于描述这个 Chart的相关信息,包括名字、描述信息以及版本等。

values.yaml 用于存储 templates 目录中模板文件中用到变量的值。

NOTES.txt 用于介绍 Chart 部署后的一些信息,例如:如何使用这个 Chart、列出缺省的设置等。

Templates 目录下是 你需要部署一个k8s应用所需要的YAML 文件模板,该YAML模板文件遵循 Go template 语法。

将需要部署的yaml文件放到templetes目录下

使用命令helm lint --strict 将需要打包的chart软件包按照严格模式检查一下,检查yaml语法是否存在问题等,有问题会提示具体的报错信息

如:helm lint --strict ./mychart/

检查通过没有错误之后,使用命令helm package ,如helm package ./mychart/;会根据Chart.yaml的信息生成一个.tgz的压缩包

得到.tgz的chart软件包之后,就可以在k8s集群上进行安装了,使用命令:helm install

chart软件包还可以上传到仓库等等。

chart安装之后就可以在k8s集群上查看是否成功拉起相对应的pod了。

三、Helm的多Chart依赖管理:

如果需要依赖多个chart,需要进行简单的依赖配置,主要是编写父chart的Chart.yaml,添加依赖管理:

dependencies: - name: dep1 repository: file://xxx version: 0.1.0 - name: dep2 repository: file://xxx version: 0.1.0

在父chart.yaml中添加dependencies标签

依赖的每个子chart都填写正确的基本信息:

name-->依赖chart中定义的名字,保证两者相同。

repository-->依赖chart的仓库地址,可以是本地文件地址或远程仓库地址,确保能找到对应的chart即可

version-->依赖chart的版本,确保版本唯一。

上面信息填写完之后,下面编写父chart的values.yaml,主要目的是希望所依赖的子chart也能共享使用父chart的模板常量,这样只需要修改父chart的模板常量依赖的子chart也能得到更新:

global: namespace: xxx basic: name:xxx1 dep1: replicas: x1 images_name: x1 images_version: 0.1.0 dep2: replicas: x2 images_name: x2 images_version: 0.1.0

定义global-->全局常量,子父chart均可直接引用,为共享常量,子父的模板文件可以直接这样引用:{{.Values.global.namespace}}

定义basic-->当前父chart拥有的常量,只能在父chart的模板文件中使用,如:{{.Values.basic.name}}

定义dep1-->为依赖子chart名称为dep1所使用的常量,在子chart的模板文件中直接使用,如:{{.Values.dep1.replicas}}

同理,想要引入依赖子chart使用的常量可以继续定义dep2等。

【Kubernetes】【helm】使用

编写好values.yaml之后,使用命令helm dependency update  父chart目录/ ,将父chart的目录添加依赖管理,会在父chart目录下的子目录charts生成所依赖的子chart的tgz包。

(可选)使用命令helm dependenct list 父chart目录/,查看所拥有的依赖包

(可选)使用命令helm dependenct builid 父chart目录/,重新编译charts目录下的依赖包

最后可是使用命令helm package 父chart目录/  或者helm install 父chart目录/,来完成最后的打包或安装部署。

Kubernetes

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:任正非在《经济学人》发表署名文章:我们处在爆炸式创新的前夜
下一篇:搭建化工产业链接信息化桥梁,供应链管理系统让化企省钱省力省心
相关文章