Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的 yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。
可以在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
Helm V3 与 V2 最大的区别在于去掉了tiller:
https://github.com/helm/helm/releases
下载软件包:helm-v3.2.4-linux-amd64.tar.gz
tar zxvf helm-v3.2.4-linux-amd64.tar.gz
cd linux-amd64/
mv helm /usr/local/bin/
验证:查看版本号信息
[root@k8s-master linux-amd64]# helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@k8s-master linux-amd64]# helm repo list
NAME URL
stable http://mirror.azure.cn/kubernetes/charts/
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
查询应用
helm search repo redis
获取部署应用值
helm show values stable/redis-ha
拉取应用到本地
helm pull stable/redis-ha
支持多种安装方式:(helm默认读取~/.kube/config信息连接k8s集群)
helm install redis-ha stable/redis-ha
helm install redis-ha redis-ha-4.4.0.tgz
查看状态
helm status redis-ha
卸载应用
helm uninstall redis-ha
从其他项目中复制并修改。例如,我们要简单改写Mariadb的chart。
1:下载chart
helm fetch stable/mariadb
2:编辑chart
tar zxvf mariadb-7.3.14.tgz
mv mariadb mydb
目录结构如下:
[root@k8s-master mariadb]# tree
.
├── Chart.yaml
├── files
│ └── docker-entrypoint-initdb.d
│ └── README.md
├── OWNERS
├── README.md
├── templates
│ ├── _helpers.tpl
│ ├── initialization-configmap.yaml
│ ├── master-configmap.yaml
│ ├── master-pdb.yaml
│ ├── master-statefulset.yaml
│ ├── master-svc.yaml
│ ├── NOTES.txt
│ ├── rolebinding.yaml
│ ├── role.yaml
│ ├── secrets.yaml
│ ├── serviceaccount.yaml
│ ├── servicemonitor.yaml
│ ├── slave-configmap.yaml
│ ├── slave-pdb.yaml
│ ├── slave-statefulset.yaml
│ ├── slave-svc.yaml
│ ├── test-runner.yaml
│ └── tests.yaml
├── values-production.yaml
├── values.schema.json
└── values.yaml
3 directories, 25 files
3: 修改Chart.yaml
appVersion:1.2.3
name:mydb
4: 打包 chart
会生成一个mydb-1.2.3.tgz的压缩包
helm package mydb
5: 安装chart
helm install mydb-1.2.3.tgz
1:helm create 一个空的chart目录
helm create mycharm
目录结构如下:
[root@k8s-master mychart]# tree
.
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
3 directories, 10 files
Chart.yaml
声明了当前 Chart 的名称、版本等基本信息,这些信息会在该 Chart 被放入仓库后,供用户浏览检索。
LICENSE
[可选] 协议
requirements.yaml
[可选] 用于存放当前Chart依赖的其它Chart的说明文件
charts/
[可选]: 该目录中放置当前Chart依赖的其它Chart
templates
文件夹内存放了各类应用部署所需要使用的 YAML 文件,比如 Deployment 和 Service。
templates/NOTES.txt
[可选]: 放置Chart的使用指南
values.yaml
这个文件提供了应用在安装时的默认参数。在默认的 Values 中,我们看到 replicaCount: 1,说明该应用在默认部署的状态下只有一个副本。
chart.yaml 文件说明:
name: [必须] Chart的名称
version: [必须] Chart的版本号,版本号必须符合 SemVer 2:http://semver.org/
description: [可选] Chart的简要描述
keywords:
- [可选] 关键字列表,便于检索
home: [可选] 项目地址
sources:
- [可选] 当前Chart的下载地址列表
maintainers: # [可选]
- name: [必须] 名字
email: [可选] 邮箱
engine: gotpl # [可选] 模版引擎,默认值是gotpl
icon: [可选] 一个SVG或PNG格式的图片地址
2.编写mychart的应用描述信息和编写应用部署信息
cat chart.yaml
cat value.yaml
3.检查依赖和模板配置是否正确
helm lint mycharm/
4.将应用打包
helm package mycharm/
5.添加应用包到本地仓库
helm repo add local https://reg.red.org/chartrepo/charts ##建立本地仓库