6

Helm Chart 部署 Redis 的完美指南 - 谭咏麟

 9 months ago
source link: https://www.cnblogs.com/Merbleue/p/17903263.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Helm Chart 部署 Redis 的完美指南

一、Helm介绍

Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前已经打包好的yaml文件部署到kubernetes上。

三个基本概念:

  1. Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。
  2. Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami
  3. Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。

二、安装Helm

wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gztar -xvf helm-v3.13.2-linux-amd64.tar.gzmv linux-amd64/helm /usr/local/bin/helm

安装完后可以使用 helm version 查看版本

20231214165835.png

三、配置Helm的repository

# 添加仓库helm repo add bitnami https://charts.bitnami.com/bitnami# 也可以添加国内的一些库(阿里云等)helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

添加完成后可以使用 helm list 查看repo列表:

20231214171825.png

四、部署chart(以部署redis为例)

1. 搜索chart
# 查找redishelm search repo redis
20231214171731.png

搜索出来可以看到有单机的redis或者集群的redis-cluster,APP VERSION表示redis的版本。

2. 拉取chart
# 拉取redishelm pull bitnami/redis
20231214171706.png

拉取下来是一个tgz的压缩包,需要进行解压 tar -xvf redis-18.5.0.tgz ,解压后会得到一个redis目录,里面包含了redis的各种配置文件和启动文件。

20231214172118.png

Chart.yaml # 包含了chart的一些基本信息
charts # 该目录保存其他依赖的 chart
templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
NOTES.txt # 用户运行 helm install 时候的提示信息
values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的

3. 修改values.yaml的一些配置(简单演示一下基本的配置)
  • global部分修改redis密码,如果有动态存储可以加上你提前建好的storgeClass,保证数据持久性;

20231214173035.png
  • architecture部分表示这个redis是集群还是单节点运行,如果集群改为replication,单节点改为standalone

    20231214173335.png
  • service部分修改redis的服务,包括端口,是否对外访问,这里我们不对外,就改为ClusterIP

    20231214173743.png
4. 启动chart
helm install redis-cluster ./redis/ -n redis# redis-cluster表示部署的名称# ./redis/ 表示chart的本地路径,这里为当前目录下的reids# -n redis 表示命名空间,可以提前创建一个redis的命令空间
20231214174259.png

启动后会有一些提示,包括告诉你如何进入redis容器内,对外暴露端口等一些操作。

# 查看redis是否启动成功kubectl get all -n redis
20231215123418.png

可以看到redis这个chart的所有状态都为running,一主三从,进入redis终端内验证,使用刚刚配置的密码登录redis:

kubectl exec -it redis-master-0 -n redis bash

20231215123815.png

创建一些数据 set name kubernetes ,然后在从节点验证数据是否存在。

20231215124024.png
20231215124552.png

可以看到从节点已经获取到刚刚创建的name,但是在从节点创建数据是不行的,从节点只能读取数据。

5. 升级和回滚

我们在刚刚已经创建了一个redis的chart,实际生产环境中,可能需要修改一些配置,然后基于这个chart对我们应用进行升级。

例如,我们这里修改一些redis的密码,然后升级这个chart,我们编辑一下values.yaml把开头创建的密码“redis123”改成“redis456”。

20231215125222.png
# 升级redishelm upgrade redis-cluster ./redis/ -n redis# redis-cluster表示部署的名称# ./redis/ 表示chart的本地路径,这里为当前目录下的reids# -n redis 表示命名空间,可以提前创建一个redis的命令空间
20231215125901.png

可以从时间看到我们的pod刚刚进行了更新,并且状态都处于running状态,然后进入容器进行验证,当我们输入之前的密码“redis123”,会报错说密码不正确,输入更新后的密码“redis456”,正常进入redis,如果一开始使用了数据持久化,这时候创建的数据应该也不会丢失。

20231215130135.png
# 先看看我们历史的charthelm history redis -n redis
20231215132250.png

可以看到第一个状态为superseded是我们最开始创建的chart,第二个状态为deployed是我们刚刚升级的chart,就是正在运行的,我们将版本回滚到第一个版本。

helm rollback redis 1 -n redis
20231215132639.png

可以看到我们已经回滚到第一个版本,并且pod正在更新中,等到创建成功,可以验证一下输入“redis123”是否能进入到redis。

20231215132855.png

验证成功,已经回滚到版本1,使用旧密码成功登录redis。

当我们深入探索 Helm Chart 部署 Redis 的过程时,不仅仅是学习了如何利用 Helm 简化复杂的部署任务,更是领略到了在容器化世界中管理和维护应用的便捷之处。通过 Helm Chart,我们可以轻松地定义、配置和部署复杂的应用程序,使得整个过程更加灵活、可维护性更高。

在未来,我们可以继续深入学习 Helm 的更多高级功能,探索更多复杂应用场景下的部署和管理方法。通过不断学习和实践,我们能够更好地应对日益复杂的容器化环境,提高工作效率,确保应用的可靠性和稳定性。

希望这篇博客能够帮助你更好地理解 Helm Chart 部署 Redis,并在你的容器化旅程中提供一些有益的经验。让我们一起迎接技术的挑战,不断进步,探索更多的可能性。感谢你的阅读,期待在未来的技术探索中再次相遇!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK