一、基础知识
1.如果我们需要开发微服务架构的应用,组成应用的服务可能很多,使用原始的组织和管理方式就会非常臃肿和繁琐以及较难管理,此时我们需要一个更高层次的工具将这些配置组织起来。
2.helm架构:
chart:一个应用的信息集合,包含kubernetes对象的配置模板、参数设定、依赖关系等,其类似于apt、yum中的软件安装包
release:为chart的运行实例,代表一个正在运行的应用,当chart安装到kubernetes中就会生成一个release,chart能够多次安装到同一个集群中且每次安装都是一个release。
3.helm的两个组件:
helm客户端和tiller服务器:
helm客户端(终端用户使用的命令行工具):
在本地开发chart
管理chart仓库
与tiller服务器交互
在远程kubernetes集群上安装chart
查看release信息并升级或卸载已有的release
tiller服务器:
监听来自helm客户端的请求
通过chart构建release
在kubernetes中安装chart并跟踪chart的状态
通过api server升级或卸载已有的release
4.安装helm
通过命令安装,然后执行:
helm complention bash > .helmrc echo “source .helmrc” >>.bashrc
以上命令执行后可以通过tab键补全helm子命令和参数
执行 helm init安装tiller服务器,实际上,tiller本身作为容器化应用运行在kubernetes cluster中。
5.使用helm
helm search 查看当前可安装的chart,其helm有两个默认配置好的仓库:stable和local,其中stable是官方仓库,local仓库是用户存放自己开发的chart本地仓库。
安装chart:
helm install stable/mysql
其中,name是release的名字,一般为随机生成,namespace是release部署的namespace,默认为default,可以通过--namespace指定
status为deployed,表示已经将chart部署到集群
helm list:显示已经部署的release
helm delete:删除release
6.chart的目录结构:
requirement.yaml:chart可能依赖其他chart,这些依赖关系可通过requirements.yaml指定,在安装过程中,依赖的chart也会被一起安装
values.yaml:chart支持在安装时根据参数进行定制化配置,该文件提供这些配置参数的默认值
templates:各类资源的配置模板
helm通过模板创建kubernetes能够理解的yaml格式的配置文件
下图示例:
7.定制化安装chart:
helm两种方式传递配置参数:
指定自己的values文件,先通过 helm inspect values mysql > myvalues.yaml生成values文件,执行 helm install --values=myvalues.yaml mysql
通过 --set直接传入参数值
8.升级和回滚release
release发布后可执行 helm upgrade对其进行升级
helm rollback可以回滚到任何版本,helm可以查看release所有版本
9.开发自己的chart
创建chart:执行helm create mychart 创建 mychart,helm会为我们创建目录生成各类chart文件
调试chart:helm lint mychart会检测chart的语法,helm install --dry-run --debug会模拟安装chart,并输出每个模板生成的yaml内容
10.安装chart
11.将chart添加到仓库
任何http server都可以作为chart仓库
通过helm package mychart将其打包,该操作也会被同步到local仓库
执行helm repo index生成仓库的index文件:helm repo index myrepo/ --url http://192.168.56.106:8080/charts,helm会扫描myrepo目录中的所有tgz包生成index.yaml,其中--url指定的是新仓库的访问路径
通过helm repo add将新仓库添加到helm