之前部署应用需要编写yaml文件,然后执行文件。这种方式部署少量的服务可以,但是如果部署几十个,上百个微服务需要维护大量yaml文件,特别不方便。通过helm可以解决如下问题
- 把多个yaml作为一个整体管理
- 实现yaml高效复用
- 使用helm应用级别的版本管理
helm是一个k8s的包管理工具,就像linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到k8s上
2 相关概念- helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发布和管理。
- Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
- Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个release;将在 k8s 中创建出真实运行的资源对象。
2019 年 11 月 13 日, Helm 团队发布 Helm v3 的第一个稳定版本。
该版本主要变化如下:
架构变化:
1、最明显的变化是 Tiller 的删除
2、Release 名称可以在不同命名空间重用
3、支持将 Chart 推送至 Docker 镜像仓库中4、使用 JSonSchema 验证 chart values
4、使用 JSonSchema 验证 chart values
5、其他
1 安装helm
Helm 客户端下载地址:https://github.com/helm/helm/releases 解压移动到/usr/bin/目录即可。
wget https://get.helm.sh/helm-vv3.2.1-linux-amd64.tar.gz tar zxvf helm-v3.2.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
2 配置 chart 仓库
- 微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本 上官网有的 chart 这里都有。
- 阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
- 官方仓库(https://hub.kubeapps.com/charts/incubator)官方 chart 仓库,国内有点不好使
添加仓库
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 remove aliyun
更新仓库
4.2 部署应用helm repo update
1 搜索应用
helm search repo weave
2 安装应用
helm install ui stable/weave-scope
3 查看应用
- helm list
- helm status ui
4 暴露端口
4.3 自定义chart部署kubectl edit svc ui-weave-scope
再次查看
1 创建chart
- Chart.yaml:用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
- values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
- Templates: 目录里面存放所有 yaml 模板文件。
- charts:目录里存放这个 chart 依赖的所有子 chart。
- NOTES.txt :用于介绍 Chart 帮助信息, helm install 部署后展示给用户。例如: 如何使用这个 Chart、列出缺省的设置等。
- helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用
2 在templates文件夹下创建两个yaml文件
- deployment.yaml
- service.yaml
首先创建应用:kubectl create deployment web1 --image=nginx
3 安装mychart
4 应用升级
helm upgrade [chart名称] 目录
通过传递参数,动态渲染模板,yaml内容动态传入参数生成,实现yaml高效复用。chart中有values.vaml文件,定义yaml全局变量
yaml文件大体有如下几个地方不同
- image
- tag
- label
- port
- replicas
1 在values.yaml文件定义变量
2 在templates的yaml文件引用变量
通过Values前缀引用值,通过Release动态生成名字
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)