Helm介绍
- Helm介绍
- 官网:
- Helm中的一些概念
- Helm v3版本变化
- K8s版本支持的各个helm版本对照表
- 下载
- 配置国内存放chart仓库的地址
- Helm基本使用
- 搜索和下载Chart
- 部署chart
- helm部署memcached服务
- 验证memcache是否部署成功:
- release相关操作
Helm介绍
官网:
https://v3.helm.sh/zh/docs/
helm 官方的chart站点:
https://hub.kubeapps.com/
Helm介绍
- Helm是kubernetes的包管理工具,相当于linux环境下的yum/apg-get命令。
- Helm的首要目标一直是让“从零到Kubernetes”变得轻松。无论是运维、开发人员、经验丰富的DevOps工程师,还是刚刚入门的学生,Helm的目标是让大家在两分钟内就可以在Kubernetes上安装应用程序。
- Helm可以解决的问题:运维人员写好资源文件模板,交给开发人员填写参数即可
Helm中的一些概念
- helm:命令行客户端工具,主要用于Kubernetes应用中的chart的创建、打包、发布和管理。
- Chart:helm程序包,一系列用于描述k8s资源相关文件的集合,比方说我们部署nginx,需要deployment的yaml,需要service的yaml,这两个清单文件就是一个helm程序包,在k8s中把这些yaml清单文件叫做chart图表。
chart—>通过values.yaml这个文件赋值–>生成release实例
- vlues.yaml文件为模板中的文件赋值,可以实现我们自定义安装,如果是chart开发者需要自定义模板,如果是chart使用者只需要修改values.yaml即可
- repository:存放chart图表的仓库,提供部署k8s应用程序需要的那些yaml清单文件
- Release:基于Chart的部署实体,一个chart被Helm运行后将会生成对应的一个release;将在k8s中创建出真实运行的资源对象。
总结:
helm把kubernetes资源打包到一个chart中,制作并完成各个chart和chart本身依赖关系并利用chart仓库实现对外分发,而helm还可通过values.yaml文件完成可配置的发布,如果chart版本更新了,helm自动支持滚更更新机制,还可以一键回滚,但是不是适合在生产环境使用,除非具有定义自制chart的能力。
Helm v3版本变化
该版本主要变化如下:
架构变化:
1、Helm服务端Tiller被删除
2、Release名称可以在不同命名空间重用
3、支持将Chart推送至Docker镜像仓库中
4、使用JSONSchema验证chartvalues
K8s版本支持的各个helm版本对照表
https://helm.sh/zh/docs/topics/version_skew/
下载
helm属于kubernetes一个项目:
下载地址:
https://github.com/helm/helm/releases
上传安装包至master节点
tar zxvf helm-v3.16.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
查看helm版本:
helm version
配置国内存放chart仓库的地址
阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts)
官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库,国内可能无法访问。
微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本上官网有的chart这里都有,国内可能无法访问。
添加阿里云的chart仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
添加bitnami的chart仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
更新chart仓库
helm repo update
查看配置的chart仓库有哪些
helm repo list
删除chart仓库地址
helm repo remove aliyun
显示如下:
"aliyun" has been removed from your repositories
从指定chart仓库地址搜索chart
helm search repo aliyun
Helm基本使用
搜索和下载Chart
查看阿里云chart仓库中的memcached
helm search repo aliyun |grep memcached
查看chart信息
helm show chart aliyun/memcached
下载chart包到本地
helm pull aliyun/memcached
tar zxvf memcached-2.0.1.tgz
cd memcached
ls
- Chart.yaml: chart的基本信息,包括版本名字之类
- templates: 存放k8s的部署资源模板,通过渲染变量得到部署文件
- values.yaml:存放全局变量,templates下的文件可以调用
cd templates/
ls
- _helpers.tpl 存放能够复用的模板
- NOTES.txt 为用户提供一个关于chart部署后使用说明的文件
部署chart
helm部署memcached服务
安装memcached的Chart
上传memcache_1_4_36.tar.gz至k8snode1节点
修改statefulset.yaml文件
cd ~/memcached
cat templates/statefulset.yaml
apiVersion后面的value值变成apps/v1
#spec下添加selector字段selector:matchLabels:app: {{ template "memcached.fullname" . }}chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"release: "{{ .Release.Name }}"heritage: "{{ .Release.Service }}"
删除affinity亲和性配置
安装memcached
rm -rf ~/memcached/templates/pdb.yaml
cd ~/memcached
helm install memcached ./
验证memcache是否部署成功:
kubectl get pods
在k8smaster 安装nc
yum install nc -y
测试memecached服务是否正常:
export POD_NAME=$(kubectl get pods --namespace default -l "app=memcached-memcached" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward $POD_NAME 11211
新开k8smaster1窗口,执行以下命令
echo -e 'set mykey 0 60 5\r\nhello\r' | nc localhost 11211
release相关操作
查看release发布状态
helm list
删除release,删除release会把release下对应的资源也删除
helm delete memcached
kubectl get pods