1. helm 简介
1.1 为什么需要 helm
1.2 helm 中几个概念
1.3 helm 用途
2. helm 安装
3. helm 的基本使用
3.1 安装 chart 仓库里面的 chart
3.2 创建自定义的 chart
3.2.1 文件目录结构
3.2.2 自定义 chart 的示例
3.3 helm 的基本操作补充
3.3.1 查看 release
3.3.2 安装 release
3.3.3 更新 release
3.3.4 卸载 release
3.3.5 回滚 release
1. helm 简介
1.1 为什么需要 helm
在没使用 helm 之前, 向 kubernetes 部署应用, 我们要依次部署 deployment,service,configMap 等, 步骤较繁琐. 况且随着很多项目微服务化, 复杂的应用在容器中部署以及管理显得较为复杂.
helm 通过打包的方式, 支持发布的版本管理和控制, 很大程度上简化了 Kubernetes 应用的部署和管理
1.2 helm 中几个概念
Helm 可以理解为 Kubernetes 的包管理工具, 可以方便地发现, 共享和使用为 Kubernetes 构建的应用, 它包含几个基本概念
Chart: 一个 Helm 包, 其中包含了运行一个应用所需要的镜像, 依赖和资源定义等, 还可能包含 Kubernetes 集群中的服务定义
可以理解为 docker 的 image
Release: 在 Kubernetes 集群上运行的 Chart 的一个实例. 在同一个集群上, 一个 Chart 可以安装很多次. 每次安装都会创建一个新的 release
可以理解为 docker 的 container 实例
Repository: 用于发布和存储 Chart 的仓库.
1.3 helm 用途
做为 Kubernetes 的一个包管理工具, Helm 具有如下功能:
创建新的 chart
chart 打包成 tgz 格式
上传 chart 到 chart 仓库或从仓库中下载 chart
官方 chart 仓库是: https://hub.helm.sh/
在 Kubernetes 集群中安装或卸载 chart
用 Helm 管理安装的 chart 的发布周期
2. helm 安装
注意: 这里安装的是 helm v3.2.4, 如需下载更新的版本, 可以至 GitHub 官方 repo 选择
https://github.com/helm/helm/tags
- # 如无需更换版本, 直接执行下载
- wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
- # 解压
- tar -zxvf helm-v3.2.4-Linux-amd64.tar.gz
- # 进入到解压后的目录
- cd Linux-amd64/
- # 赋予权限
- chmod a+x /usr/local/bin/helm
- # 查看版本
- helm version
3. helm 的基本使用
注意: 这里的使用是针对 Helm v3, 因为 v3 版本和 v2 某些命令方面差距蛮大的, 不完全兼容!! 所以针对 v2 的操作这里就不赘述了
3.1 安装 chart 仓库里面的 chart
可以直接使用官方的 chart 仓库或者其他仓库来安装一些 chart
https://hub.helm.sh/
下面以官方仓库的一个 Redis 为例
- https://hub.helm.sh/charts/choerodon/redis
- # 添加仓库
- helm repo add choerodon https://openchart.choerodon.com.cn/choerodon/c7n
- # 安装
- helm install choerodon/Redis --version 0.2.5
安装完成! 有没有很简单!!
3.2 创建自定义的 chart
这一节介绍以下如何自定义一个 chart, 并应用与平时项目中
3.2.1 文件目录结构
.
├── Chart.YAML
├── templates
| ├── deployment.YAML
| └── service.YAML
├── values.YAML
一个基本的自定义 chart 的文件目录结构大概是如上:
Chart.YAML: 定义当前 chart 的基本 metadata, 比如 name,tag 啥的
templates: 这个文件夹下放当前 chart 需要的一些 YAML 资源清单
资源清单支持变量模版语法
values.YAML: 定义变量, 可被 template 下的 YAML 资源清单使用
3.2.2 自定义 chart 的示例
第一步: 准备自定义 chart 相关文件
- # 1. 新建一个文件夹 demo 存放 chart
- mkdir demo && cd demo && mkdir templates
- # 2. 新建 Chart.YAML
cat <<EOF> Chart.YAML
- name: hello-world
- version: 1.0.0
- EOF
- # 3. 新建./templates/deployment.YAML
- # 注意 image 部分使用了变量的模板语法, 可以动态插入
- cat <<EOF> ./templates/deployment.YAML
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: tocgenerator-deploy
- labels:
- App: tocgenerator-deploy
- spec:
- replicas: 1
- selector:
- matchLabels:
- App: tocgenerator-server
- template:
- metadata:
- labels:
- App: tocgenerator-server
- spec:
- containers:
- - name: tocgenerator
- image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 80
- EOF
- # 4. 新建./templates/service.YAML
- cat <<EOF> ./templates/service.YAML
- apiVersion: v1
- kind: Service
- metadata:
- name: tocgenerator-svc
- spec:
- type: NodePort
- selector:
- App: tocgenerator-server
- ports:
- - protocol: TCP
- port: 80
- targetPort: 80
- nodePort: 30075
- EOF
- # 5. 新建 values.YAML
cat <<EOF> values.YAML
- image:
- repository: lzw5399/tocgenerator
- tag: '951'
- EOF
第二步: 使用上面的自定义 chart
- # 将 chart 实例化成 release
- # 格式: helm install [RELEASE-NAME] [CHART-PATH]
- helm install testname .
- # 查看 release
- helm ls
- # 安装成功!!
3.3 helm 的基本操作补充
3.3.1 查看 release
- # 列出已经部署的 Release
- helm ls
- # 查询一个特定的 Release 的状态
- helm status <RELEASE_NAME>
- # 查看被移除了, 但保留了历史记录的 release
- helm ls --uninstalled
3.3.2 安装 release
- # 安装
- helm install <RELEASE-NAME> <CHART-PATH>
- # 命令行指定变量
- helm install --set image.tag=233 <RELEASE-NAME> <CHART-PATH>
3.3.3 更新 release
- # 更新操作, flag 是可选操作
- helm upgrade [FLAG] <RELEASE> <CHART-PATH>
- # 指定文件更新
- helm upgrade -f myvalues.YAML -f override.YAML <RELEASE-NAME> <CHART-PATH>
- # 命令行指定变量
- helm upgrade --set foo=bar --set foo=newbar Redis ./Redis
3.3.4 卸载 release
- # 移除 Release
- helm uninstall <RELEASE_NAME>
- # 移除 Release, 但保留历史记录
- # 可以通过以下查看: helm ls --uninstalled
- # 可以通过以下回滚: helm rollback <RELEASE> [REVISION]
- helm uninstall <RELEASE_NAME> --keep-history
3.3.5 回滚 release
- # 更新操作, flag 是可选操作
- helm upgrade [FLAG] <RELEASE> <CHART-PATH>
来源: https://www.cnblogs.com/baoshu/p/13296659.html