在k8s中,使用Helm包管理工具来管理k8s包,Helm之于Kubernetes好比yum之于RHEL,或者apt-get之于Ubuntu。Helm使用Charts管理应用,Charts就好像RPM一样,里面描述了应用及其依赖关系。
Helm 组件及相关术语
- helm
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
- Chart
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
- Repoistory
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
- Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。可以理解为 Helm 使用 Chart 包部署的一个应用实例。
helm部署:
1、根据系统下载所需版本
curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
2、解压压缩包(以linux-amd64为例)
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
3、将文件移动到PATH目录中(以linux-amd64为例)
# mv linux-amd64/helm /usr/bin/helm
执行命令,出现以下信息即部署成功。
$ helm version version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
代码自动补全功能
代码自动补齐 #在 ~/.bashrc 追加,重启生效 source <(helm completion bash)
Helm 的基本操作
# 查看仓库的chart库列表信息
# helm repo list
# 添加一些常用的 Charts 库
# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 增加完仓库后,需要执行更新命令,将仓库中的信息进行同步:
# helm repo update
# 列出stable仓库可以安装的charts
# helm search repo stable
#通过 Helm 在 Repo 中查询可安装的 mysql包:
# helm search repo mysql
#安装stable仓库的一个mysql的chart,-n:指定安装的 Namespace
# helm install stable/mysql --generate-name -n default 或者如下写法: # helm install --set name=mysql stable/mysql --generate-name
查看详情
# helm show all stable/mysql
查看应用状态
# helm status mysql -n default
下载chart包到本地:
查看chart怎么写的 # helm pull stable/mysql # ls mysql-0.3.5.tgz # tar -zxvf mysql-0.3.5.tgz # tree mysql mysql ├── Chart.yaml ├── README.md ├── templates │ ├── configmap.yaml │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── NOTES.txt │ ├── pvc.yaml │ ├── secrets.yaml │ └── svc.yaml └── values.yaml 1 directory, 10 files chart 是一个组织在文件目录中的集合 在这个目录中,Helm 期望可以匹配以下结构: Chart.yaml # 包含了chart信息的YAML文件 LICENSE # 可选: 包含chart许可证的纯文本文件 README.md # 可选: 可读的README文件 values.yaml # chart 默认的配置值 values.schema.json # 可选: 一个使用JSON结构的values.yaml文件 charts/ # 包含chart依赖的其他chart crds/ # 自定义资源的定义 templates/ # 模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件 templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件
Chart 包的目录结果就是这样,我们再来仔细看看 templates 目录下⾯的文件:
NOTES.txt:chart 的 “帮助文本”。这会在用户运行 helm install 时显示给用户;
deployment.yaml:创建 Kubernetes deployment 的基本 manifest;
service.yaml:为 deployment 创建 service 的基本 manifest;
ingress.yaml: 创建 ingress 对象的资源清单文件;
_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用。
这里我们明⽩每⼀个文件的作用就行,我们也可以把 templates 目录下⾯所有的文件全部删除,自己来创建模板文件。
helm 3 命令:
# helm version //查看helm版本信息,必须保证可以查看出来client和server,才可正常使用helm # helm list //查看已安装的软件包 # helm uninstall release //卸载release # helm repo list //查看仓库的详细信息 # helm repo add stable http://mirror.azure.cn/kubernetes/charts/ //添加 Charts 库 # helm repo update //更新一下helm仓库,将仓库中的信息进行同步 # helm search repo nginx //通过 Helm 在 Repo 中查询可安装的 Nginx 包 # helm pull stable/tomcat //将tomcat软件包下载到本地 # helm show stable/tomcat //查看该软件包的详细信息 # helm status mysql //查看mysql的状态信息 # helm env //查看环境配置信息 # helm search repo harbor -l //打印出所有版本 helm package hello-helm //打包Chart: helm (delete|uninstall) hello-helm-1584972412 //删除Release # helm install --dry-run --debug ./mychart/ --generate-name Helm调试 启动 helm install --name filebeat -f filebeat-settings.yaml filebeat 更新配置 helm upgrade filebeat -f filebeat-settings.yaml filebeat 停止服务 helm delete filebeat --purge
实例:
使用helm部署prometheus服务:
## 添加repo helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add stable https://charts.helm.sh/stable 列出资源: helm repo list 查询资源: helm search repo prometheus-community 下载 helm pull prometheus-community/prometheus-operator 安装 #helm install prometheus prometheus-community/prometheus-operator -n monitor # helm install prometheus stable/prometheus-operator --namespace monitor 卸载: # helm uninstall prometheus 切换到解压包目录执行如下命令进行部署操作: [root@c7n-01 prometheus-operator]# helm install prometheus . helm install prometheus-operator-9.3.0.tgz -f value.yaml --set grafana.adminPassword=123456