最新helm3 https://helm.sh/docs/
Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
Helm有两个重要概念:
helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。
Helm客户端下载地址:https://github.com/helm/helm/releases
解压移动到/usr/bin/目录即可。
wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
tar zxvf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
create 创建一个chart并指定名字
dependency 管理chart依赖
get 下载一个release。可用子命令:all、hooks、manifest、notes、values
history 获取release历史
install 安装一个chart
list 列出release
package 将chart目录打包到chart存档文件中
pull 从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar
repo 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update
rollback 从之前版本回滚
search 根据关键字搜索chart。可用子命令:hub、repo
show 查看chart详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个release
upgrade 更新一个release
version 查看helm客户端版本
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
查看配置的存储库:
helm repo list
helm search repo stable
删除存储库:
helm repo remove aliyun
主要介绍三个命令:
查找chart:
helm search repo
helm search repo mysql
为什么mariadb也在列表中?因为他和mysql有关。
查看chart信息:
helm show chart stable/mysql
安装包:
helm install db stable/mysql
查看发布状态:
helm status db
上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。
所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:
helm show values stable/mysql
## Persist data to a persistent volume
persistence:
enabled: true
## database data Persistent Volume Storage Class
## If defined, storageClassName:
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
accessMode: ReadWriteOnce
size: 8Gi
annotations: {}
找到我们的nfs-storage
[root@master ~]# kubectl get sc
NAME PROVISIONER AGE
k8s-cephfs ceph.com/cephfs 34d
managed-nfs-storage fuseim.pri/ifs 13m
先卸载:
helm uninstall db
命令行替代变量安装mysql:
helm install db --set persistence.storageClass="managed-nfs-storage" stable/mysql
安装完毕后mysql就正常运行了。
我们还可以使用yaml文件来定义变量安装:
我们先导出模板然后修改:
helm show values stable/mysql > config.yaml
[root@master demo]# cat config.yaml
mysqlRootPassword: testing
mysqlUser: liaochao
mysqlPassword: k8s
mysqlDatabase: k8s
persistence:
enabled: true
storageClass: "managed-nfs-storage"
accessMode: ReadWriteOnce
size: 8Gi
以上将创建具有名称的默认MySQL用户liaochao,并授予此用户访问新创建的k8s数据库的权限,但将接受该图表的所有其余默认值。
指定yaml文件安装mysql:
helm install db2 -f config.yaml stable/mysql
该helm install命令可以从多个来源安装:
chart存储库
我们安装mysql的时候可以把chart包下载下来查看详情:
helm pull stable/mysql --untar