Helm应用以及服务升级与回滚

Helm应用以及服务升级与回滚

helm:包管理工具

官方提提供的仓库:https://hub.helm.sh/

Charts:是一个Helm的程序包,它包含了运行一个kubernetes应用程序所需要的镜像、依赖关系和资源定义等

Release:应用程序运行charts后,得到的一个实例

部署一个实例:

helm install + charts -n release名称

根据以一个包运行一个实例

[root@master ~]# helm  install  stable/redis -n  redis --dry-run
--dry-run:用来测试有没有问题,如果没有问题就可以运行
[root@master ~]# helm  install  stable/redis -n  redis
#这里是运行不成功的,因为他需要镜像,PV等准备工作

运行之后会有三部分描述

1、关于这个Release的描述

2、关于这个Release资源的描述

3、怎么使用这个Release

根据提示可以获得redis的密码,等等一些信息

[root@master ~]# kubectl get secret --namespace default redis-redis -o jsonpath="{.data.redis-password}" | base64 --decode
rTmeGF2rcY

删除实例:

[root@master ~]# helm  delete  redis  --purge

查询chart包

[root@master ~]# helm search mysql

运行一个实例:

[root@master ~]# helm  install  stable/mysql -n mysql

我们运行过的实例都会生成一个charts包存放在这个缓存目录下

[root@master archive]# pwd
/root/.helm/cache/archive
[root@master archive]# ls
mysql-0.3.5.tgz  redis-1.1.15.tgz

Charts包解压目录

[root@master archive]# tar zxf mysql-0.3.5.tgz
[root@master archive]# tree  -C  mysql
mysql
├── Chart.yaml
├── README.md
├── templates
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── NOTES.txt
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml

Chart.yaml:这个chart包的概要信息

​ name和version这两个是必填项,其他可选

README.md:是这个chart包的一个使用帮助文档

templates:chart包内各种资源对象模板

values.yaml:是这个chart包的默认的值,可以被template内的yaml文件使用

我们在部署之前还可以提前查看这个包会有什么东西

[root@master ~]# helm  inspect values  stable/prometheus

除了部署实例后会生成chart包,还可以下载chart包

[root@master ~]# helm  fetch stable/prometheus

Helm部署安装一个Mysql服务

部署NFS服务:

[root@master ~]# mkdir  /data
[root@master ~]# vim  /etc/exports
/data *(rw,sync,no_root_squash)

创建PV:

[root@master ~]# vim  nfs-pv1.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysqlpv
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /data/mysqlpv
    server: 192.168.1.70
[root@master ~]# kubectl  apply -f  nfs-pv1.yml 
persistentvolume/mysqlpv created
[root@master ~]# kubectl  get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
mysqlpv   8Gi        RWO            Recycle          Available                                   16s
[root@master ~]# mkdir  /data/mysqlpv

部署mysql实例(镜像提前准备好):

[root@master ~]# helm  install  stable/mysql  -n  bdqn-mysql  --set  mysqlRootPassword=123.com   #创建实例,并设置密码
[root@master ~]# kubectl  get pod
NAME                               READY   STATUS     RESTARTS   AGE
bdqn-mysql-mysql-7b89c7b99-kg4wf   0/1     Init:0/1   0          17s  #正在初始化
[root@master ~]# kubectl  get pvc
NAME               STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
bdqn-mysql-mysql   Bound    mysqlpv   8Gi        RWO                           48s
#还需要一个小镜像
docker pull  busybox:1.25.0
[root@master ~]# kubectl  get pod
NAME                               READY   STATUS    RESTARTS   AGE
bdqn-mysql-mysql-7b89c7b99-kg4wf   1/1     Running   0          2m10s
[root@master ~]# kubectl  get deployments.
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
bdqn-mysql-mysql   1/1     1            1           2m13s

查看密码是否设置成功:

[root@master ~]# kubectl get secret --namespace default bdqn-mysql-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo
123.com

验证数据有没有问题:

[root@master ~]# kubectl  exec  -it  bdqn-mysql-mysql-7b89c7b99-kg4wf -- mysql  -u root -p123.com
mysql> show  databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

在部署mysql的时候,如何开启storageclass,以及如何使用?

首先需要部署storageclass(存储类),让他可以自动创建PV

1、需要基于NFS环境

2、RBAC权限

3、nfs-deployment.

4、storageclass

helm在创建实例的时候是基于templates模板里的内容创建的,而模板内需要的信息则是在values.yaml文件里,我们则需要修改values.yaml文件里的内容就行

[root@master mysql]# vim  values.yaml  
找到storageClass,去掉注释即可
  storageClass: "test-nfs"  #storageclass的名称
  accessMode: ReadWriteOnce  
  size: 8Gi

然后直接部署实例,在部署实例的时候 -f 指定这个values.yaml这个文件即可,它会根据实例的PVC自动创建PV

如果想将sservice资源对象的类型更改为NodePort,又应该怎么做

同样只需要修改values.yaml文件就行

#将类型给位NodePort即可,还可以自己指定端口
  type: NodePort
  port: 3306

在创建实例的时候只需要指定以下这个文件就行

[root@master mysql]# helm  install  stable/mysql  -n  bdqn-mysql  --set  mysqlRootPassword=123.com  -f  values.yaml
[root@master mysql]# kubectl  get svc
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
bdqn-mysql-mysql   NodePort    10.104.45.139   <none>        3306:30165/TCP   13m
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP          60d

服务的升级:

[root@master mysql]#  helm  upgrade --set imageTag=5.7.15  bdqn-mysql stable/mysql -f values.yaml
[root@master mysql]# kubectl  get deployments. -o wide
NAME        READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES         SELECTOR
zhb-mysql   1/1     1            1           9m22s   zhb-mysql    mysql:5.7.15   app=zhb-mysql

回滚

#查看有哪些版本
[root@master mysql]# helm  history  zhb
REVISION	UPDATED                 	STATUS    	CHART      	DESCRIPTION     
1       	Mon Mar  2 16:33:26 2020	SUPERSEDED	mysql-0.3.5	Install complete
2       	Mon Mar  2 16:37:04 2020	DEPLOYED  	mysql-0.3.5	Upgrade complete
回滚到1版本
[root@master mysql]# helm  rollback  zhb  1
Rollback was a success.
[root@master mysql]# kubectl  get deployments. -o wide
NAME        READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
zhb-mysql   1/1     1            1           13m   zhb-mysql    mysql:5.7.14   app=zhb-mysql
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Helm 是一个用于管理 Kubernetes 应用程序的工具,通过打包应用程序及其依赖为一个单独的可部署的 Helm Chart,简化了应用程序的部署和管理。 Helm 打包应用的步骤如下: 1. 创建 Helm Chart:首先需要创建一个 Helm Chart,它包含了应用程序的所有定义和配置信息。可以使用 Helm 的命令行工具 `helm create` 或者手动创建一个 Chart 目录。 2. 配置 Chart:在 Chart 根目录中,`values.yaml` 文件用于配置应用程序。通过修改这个文件,可以设置应用程序的参数和属性,如端口号、镜像版本等。 3. 添加依赖:如果应用程序有依赖,如数据库或其他服务,可以在 Chart 的 `requirements.yaml` 文件中定义它们。Helm 会自动下载和安装这些依赖。 4. 打包 Chart:使用 `helm package` 命令将 Chart 打包成一个 `.tgz` 文件。这个文件包含了应用程序的所有资源文件和配置。 5. 部署 Chart:通过使用 `helm install` 命令,将 Chart 部署到 Kubernetes 集群中。可以指定 Chart 的名称、命名空间和其他配置。 6. 更新应用:当应用程序需要更新时,可以通过修改 Chart 的配置文件或者 Chart 本身,然后使用 `helm upgrade` 命令更新应用程序。 总结起来,Helm 打包应用的过程包括创建 Chart、配置 Chart、添加依赖、打包 Chart 和部署 Chart。通过使用 Helm,可以快速、可重复和可管理地部署和更新应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值