Helm干货!速度围观!

最近个人学习Helm,感觉Helm的功能很强大!分享一些干货给大家吧,希望有所帮助!基本概念Chart一个Helm包,包含在K8S集群内,运行一个应用,工具或者服务所需要的所有的资源定义,类似于一个RPM包
RepositoryCharts在这里被汇集并共享,它有点像Fedora Package Database,但是是用于kubernetes packages
Release一个Release相当于一个Chart运行在K8S集群中的一个实例,一个Chart可以在相同集群中安装多次,每次安装,一个Release就被创建,例如MySQL chart,如果你想让两个数据库运行在你的集群,你可以安装相同的Chart多次,每一次一个release , 它拥有自己的Release名字 。
部署可以参考如下的网站进行安装https://helm.sh/doc/intro/install/
https://kubeapps.com/doc/getting-started/
Helm基础命令基础命令篇添加公有Repohelm repo add https://charts.bitnami.com/bitnami
添加私有Repohelm repo add --username=no-user --password admin@123 https://github.bithaha.com/helm
列出Repohelm repo list
列出已经安装的chartshelm list

  • 注意 默认是查看default命名空间下
  • 若要切换,-n namespace即可 , 如:
helm list -n abc
搜索Repohelm search repo nginx
安装helm包helm install bitnami-nginx bitnami/nginx
  • 注意 默认是安装到default命名空间下
  • 若指定命名空间 , 请务必确保命名空间存在的情况之下再指定 :
helm install bitnami-nginx bitnami/nginx -n abc
helm设置参数设置参数helm install bithaha bithaha/test-helm --version 0.1.0 --set replicaCount=2,image.tag=1.21
这段意思大概是安装一个test-helm,版本是0.1.0,设置副本数量为2,images的版本是1.21
查看参数helm get values test-helm
重置一下valuehelm upgrade bithaha bithaha/test-helm --reset-values
显示所有的valueshelm get values -a bithaha
helm创建自己的charts创建charthelm create qqq-helm
检查charthelm lint qqq-helm
打包charthelm package qqq-helm
Helm模板官方文档https://helm.sh/docs/chart_temlpate_guide/getting_started/
chart默认结构tree qqai-helmqqai-helm|>charts>chart.yaml>templates——》deployment.yaml——》_helpers.tpl——》hpa.yaml——》ingress.yaml——》NOTES.txt——》serviceaccount.yaml——》service.yaml——》tests>test-connection.yaml>values.yamltemplates目录# 目录结构>templates——》deployment.yaml——》_helpers.tpl——》hpa.yaml——》ingress.yaml——》NOTES.txt——》serviceaccount.yaml——》service.yaml——》tests>test-connection.yamltemplates实战1、在templates目录中创建一个configmap的YAML文件
cat >/root/qqai-helm/templates/configmap.yaml <<EOFapiVersion: v1kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "fook"EOF2、测试模板可用性
helm install --debug --dry-run qqai-helm-demo ./qqai-helm常用的对象说明Release
Release.Name: Install的时候的名称
Release.Namespace: 命名空间,这个没啥好解释的,默认值是default
Release.IsUpgrade:是升级,如果true那就升级了 。
Values,Chart
Values: 来自于values.yaml中定义的参数,默认的Value是空值的
Chart: 来自于Chart.yaml中定义的参数,可以根据需要灵活搭配
Values文件Values来自于多个源,下面是覆盖顺序,最后的优先
  • Chart中的values.yaml文件
  • 子Chart中的values.yaml文件
  • 。。。。。。
Values实战cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name }}fruit: {{ .Values.shuiguo }}EOF验证一下吧
helm install --debug --dry-run qqai-helm-demo ./qqai-helm模板函数与管道符引用上述的案例吧
cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name }}fruit: {{ .Values.shuiguo }}EOF若将上述案例添加相关的函数,可以像下面这样的做法
cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name |repeat 5 }}age: {{ .Values.mingzi.age |default "18" }}fruit: {{ .Values.shuiguo | upper | quote}}EOF流程控制概述可以通过流程控制来控制helm的逻辑流程,保证部署的正确性 。

推荐阅读