初识helm
Helm 是 kubernetes 的包管理工具,相当于 linux 环境下的 yum/apg-get 命令。
helm 也是 go 语言开发的
Helm 中的一些概念:
- helm:命令行客户端工具,主要用于 Kubernetes 应用中的 chart 的创建、打包、发布和管理
- Chart:helm 程序包,一系列用于描述 k8s 资源相关文件的集合,比方说我们部署 nginx,需要deployment 的 yaml,需要 service 的 yaml,这两个清单文件就是一个 helm 程序包,在 k8s 中把这些yaml 清单文件叫做 chart 图表。
- vlues.yaml 文件为模板中的文件赋值,可以实现我们自定义安装如果是 chart 开发者需要自定义模板,如果是 chart 使用者只需要修改 values.yaml 即可
- repository:存放 chart 图表的仓库,提供部署 k8s 应用程序需要的那些 yaml 清单文件
chart--->通过 values.yaml 这个文件赋值-->生成 release 实例 - Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s 中创建出真实运行的资源对象
helm 把 kubernetes 资源打包到一个 chart 中,制作并完成各个 chart 和 chart 本身依赖关系并利用chart 仓库实现对外分发,而 helm 还可通过 values.yaml 文件完成可配置的发布,如果 chart 版本更新了,helm 自动支持滚更更新机制,还可以一键回滚,但是不是适合在生产环境使用,除非具有定义自制chart 的能力。
下载地址:Releases · helm/helm · GitHubhttps://github.com/helm/helm/releases下载完成号直接把可执行文件复制到/usr/bin 目录下即可使用
mv helm /usr/bin/
helm version
常见的一些命令
# 查看关联的仓库地址
helm repo list
# 添加chart仓库地址
helm repo add aliyuncs https://apphub.aliyuncs.com
# 更新 chart 仓库
helm repo update
# 删除 chart 仓库地址
helm repo remove aliyuncs
# 从指定 chart 仓库地址搜索 chart
helm search repo aliyun
# 搜索chart
helm search repo nfs
# 下载chart
helm pull aliyuncs/nfs-client-provisioner
# 部署chart
helm install aliyuncs/nfs-client-provisioner ./
# 查看发布
helm list
# 删除chart
helm delete aliyuncs/nfs-client-provisioner
# 创建chart
helm create myapp
# 语法检查
helm lint /root/myapp/
# 升级chart
helm upgrade --set service.type="NodePort" myapp .
# 回滚chart
# 查看历史
helm history myapp
# 完成回滚
helm rollback myapp 1
# 打包
helm package /root/myapp/
helm 安装 NFS StorageClass
# 1 添加helm 仓库
helm repo add aliyuncs https://apphub.aliyuncs.com
# 2 查找nfs helm
helm search repo nfs
# 3 下载 nfs client
hlem pull aliyuncs/nfs-client-provisioner
# 4 解压文件,修改 values.yaml
tar zxvf nfs-client-provisioner-1.2.8.tgz
cd nfs-client-provisioner
vim values.yaml
replicaCount: 1
strategyType: Recreate
image:
repository: registry.cn-hangzhou.aliyuncs.com/kubeapps/quay-nfs-client-provisioner
tag: v3.1.0-k8s1.11
pullPolicy: IfNotPresent
nfs:
# 配置nfs服务器参数
server: 192.168.1.191
path: /opt/nfs
mountOptions:
# For creating the StorageClass automatically:
storageClass:
# 改为true
create: true
# Set a provisioner name. If unset, a name will be generated.
# provisionerName:
# Set StorageClass as the default StorageClass
# Ignored if storageClass.create is false
# 是否设置为默认
defaultClass: true
# 5 安装运行
helm install nfs-client-provisioner ./