Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
下载软件包:helm-v3.1.1-linux-amd64.tar.gz
mkdir helm %创建单独目录
cd helm
tar zxf helm-v3.1.1-linux-amd64.tar.gz %解压
cd linux-amd64/ %切换到该目录下
cp helm /usr/local/bin/ %复制到相关目录下
echo "source <(helm completion bash)" >> ~/.bashrc %设置命令补齐
source ~/.bashrc %使之生效
设置补齐命令后重新进入终端即可
做完上述设置后即可使用helm search搜索官方helm hub chart库:
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
可以使用helm search repo从你所添加的仓库中查找chart的名字:
1.在harbor仓库中新建项目(公开):bitnami
2.拉取镜像
docker pull bitnami/nginx:1.19.7-debian-10-r1
3.上传镜像到Harbor仓库
docker push reg.westos.org/bitnami/nginx:1.19.7-debian-10-r1
helm pull bitnami/nginx --version 8.7.0 %下载nginx的Chart包
tar zxf nginx-8.7.0.tgz %解压
cd nginx %切到nginx目录
vim values.yaml %更改配置文件
helm install webserver .
helm status webserver %查看详细信息
kubectl get all %查看service/webserver-nginx分配到的IP
curl 查看到的ip %测试是否可以看到Nginx的测试页面,如果可以看到则说明部署成功
vim values.yaml:
修改副本数
replicaCount: 3
helm upgrade webserver . %升级
helm history webserver %查看历史版本号
helm rollback webserver 版本号 %回滚
helm uninstall webserver %卸载
cd helm/
helm create mychart %创建Chart
cd mychart
tree . %查看mychart目录结构
.
├── 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
vim values.yaml:
repository: myapp %指定镜像
tag: "v1" %指定tag(镜像版本)
helm lint . %检查依赖和模板配置是否正确
helm package mychart/ %打包(需要切出mychart目录)
helm repo add mychart https://reg.westos.org/chartrepo/charts %添加第三方仓库(这个charts项目需要提前在harbor仓库中创建
cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/ca-trust/source/anchors/ %复制证书
update-ca-trust %更新证书信任
helm plugin install https://github.com/chartmuseum/helm-push %安装push插件(离线安装,速度太慢,不推荐)
离线安装:
helm env %获取插件目录
mkdir ~/.local/share/helm/plugins/push
tar zxf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/push
helm push --help
helm push mychart-0.1.0.tgz mychart -u admin -p westos --insecure %上传到harbor仓库
helm repo update %更新完之后可以在harbor仓库中看到刚才上传的chart包
helm install webserver mychart/mychart %部署mychart应用到集群
vim mychart/Chart.yaml:
appVersion: v2 %更换版本
version: 0.2.0
vim mychart/values.yaml:
tag: "v2"
helm package mychart %重新打包
helm push mychart-0.2.0.tgz mychart -u admin -p westos --insecure %上传
helm repo update %更新仓库
helm upgrade webserver mychart/mychart %更新版本
helm rollback webserver 1 %回滚
helm uninstall webserver %卸载