创建chart

  1. helm create mychart
  2. cd mychart

创建成功后,会创建一个mychart文件夹,文件夹中包含以下文件:
image.png

  • 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/

image.png
image.png

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