创建chart
helm create mychart
cd mychart
创建成功后,会创建一个mychart文件夹,文件夹中包含以下文件:
- Chart.yaml文件:配置当前Chart的一些属性信息
- templates目录:存放了Kubernetes部署文件的模版
- values.yaml:定义yaml文件的全局变量
创建deployment和service
先删除templates文件夹下面所有的文件rm -rf templates/*
在templates文件夹下创建两个yaml文件(deployment.yaml和service.yaml)
cd templates
kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml
kubectl create deployment web1 --image=nginx
#等待web1部署好
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
kubectl delete deployment web1
安装mychart
cd ../../
helm install web1 mychart/
helm升级和回退一个应用
从上面 helm list 输出的结果中我们可以看到有一个 Revision(更改历史)字段,该字段用于表示某一个 Release 被更新的次数,我们可以用该特性对已部署的 Release 进行回滚。
- 修改 Chart.yaml 文件
将版本号从 0.1.0 修改为 0.2.0, 然后使用 helm package 命令打包并发布到本地仓库。
version: 0.2.0
[root@k8s-master01 helm]# helm package myChart
Successfully packaged chart and saved it to: /root/helm/myChart-0.2.0.tgz
升级一个应用
现在用helm upgrade命令将已部署的 web1 升级到新版本。你可以通过—version参数指定需要升级的版本号,如果没有指定版本号,则缺省使用最新版本。
[root@k8s-master01 helm]# helm upgrade web1 myChart/
Release "web1" has been upgraded. Happy Helming!
NAME: web1
LAST DEPLOYED: Tue May 4 17:39:40 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
完成后,可以看到已部署的 web1 被升级到 0.2.0 版本。
[root@k8s-master01 helm]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ui default 1 2021-05-04 16:14:42.544918429 +0800 CST deployed weave-scope-1.1.12 1.12.0
web1 default 2 2021-05-04 17:39:40.45317524 +0800 CST deployed myChart-0.2.0 1.16.0
回退一个应用
如果更新后的程序由于某些原因运行有问题,需要回退到旧版本的应用。首先我们可以使用helm history命令查看一个 Release 的所有变更记录。
[root@k8s-master01 helm]# helm history web1
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue May 4 17:28:56 2021 superseded myChart-0.1.0 1.16.0 Install complete
2 Tue May 4 17:39:40 2021 deployed myChart-0.2.0 1.16.0 Upgrade complete
其次,我们可以使用下面的命令对指定的应用进行回退
[root@k8s-master01 helm]# helm rollback web1 1
Rollback was a success! Happy Helming!
:::warning 注:其中的参数 1 是 helm history 查看到 Release 的历史记录中 REVISION 对应的值。 :::
最后,我们使用helm list和helm history命令都可以看到 mychart 的版本已经回退到 0.1.0 版本。
[root@k8s-master01 helm]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ui default 1 2021-05-04 16:14:42.544918429 +0800 CST deployed weave-scope-1.1.12 1.12.0
web1 default 3 2021-05-04 17:43:02.48390366 +0800 CST deployed myChart-0.1.0 1.16.0
[root@k8s-master01 helm]# helm history web1
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue May 4 17:28:56 2021 superseded myChart-0.1.0 1.16.0 Install complete
2 Tue May 4 17:39:40 2021 superseded myChart-0.2.0 1.16.0 Upgrade complete
3 Tue May 4 17:43:02 2021 deployed myChart-0.1.0 1.16.0 Rollback to 1
删除一个应用
如果需要删除一个已部署的 Release,可以利用helm delete命令来完成删除。
[root@k8s-master01 helm]# helm delete web1
release "web1" uninstalled