【kubernetes笔记】k8s_helm(11)
Page content
这一篇整理了helm相关的内容。
1.Helm 引入
如果使用之前的方式部署应用,少数的服务应用比较合适。
.yaml => Deployment => Service => Ingress
部署多个服务的时候,需要维护大量的yaml文件,版本管理也不方便。
引入Helm解决一下问题。
- 使用Helm可以把这些yaml作为一个整体管理
- 时间yaml高效复用
- 使用helm应用级别的版本管理
2.Helm 介绍
Helm 是一个Kubernetes的包管理工具,就像Linux下的包管理器,如 yum/apt 等,
可以很方便的将之前打包好的yaml文件部署到kubernetes上。
Helm 有 3 个重要概念:
(1)helm
: 一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发 布和管理。(2)Chart
: 应用描述,一系列用于描述 k8s 资源相关文件的集合。(3)Release
: 基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在 k8s 中创建出真实运行的资源对象。
3.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/
4.配置国内 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 list
$helm search repo stable
#删除存储库:
$helm repo remove aliyun
#基本使用
chart install
chart upgrade
chart rollback
#查找 chart
$helm search repo weave
#安装包
$helm install ui stable/weave-scope
#查看发布状态
$helm list
$helm status ui
- 需要把Service的yaml文件的type 改为NodePort
5.创建chart
5.1 创建命令
$helm create mychart
$ls
charts chart.yaml templates values.yaml
- chart yaml: 当前chart属性配置信息
- templates: 编写yaml文件放到这个目录中
- values.yaml: yaml文件可以使用全局变量
5.2 templates文件夹创建两个文件
- deployment.yaml
- service.yaml
5.3 安装mychart
$helm install web1 mychart/
5.4 应用升级
$helm upgrade chart名称
$helm upgrade web mychart/
6.高效复用
通过传递参数,动态渲染模板,yaml内容动态传入参数生成
在chart有values.yaml文件,定义yaml文件全局变量
- 在values.yaml定义变量和值
- 在具体yaml文件,获取定义变量值
yaml文件几个不同地方
- image
- tag
- label
- port
- replicas
在values.yaml定义变量和值
replicas: 1
image: nginx
tag: 1.16
label: nginx
port: 80
在templates的yaml文件使用values.yaml定义变量
通过表达式形式使用全局变量 {{ .values.变量名称}} => {{.Release.Name}}
helm 常用命令
命令 | 描述 |
---|---|
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 客户端版本 |
欢迎大家的意见和交流
email: li_mingxie@163.com