一、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.gz
tar -xvf helm-v3.13.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

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

三、配置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列表:

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

1. 搜索chart
# 查找redis
helm search repo redis

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

2. 拉取chart
# 拉取redis
helm pull bitnami/redis

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

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,保证数据持久性;

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

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

4. 启动chart
helm install redis-cluster ./redis/ -n redis

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

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

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

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

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

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


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

5. 升级和回滚
a. 升级

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

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

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

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

b. 回滚
# 先看看我们历史的chart
helm history redis -n redis

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

helm rollback redis 1 -n redis

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

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

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

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

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

Helm Chart 部署 Redis 的完美指南的更多相关文章

  1. 使用 Helm Chart 部署及卸载 istio

    部署 istio 1.添加 istio 官方的 helm 仓库 helm repo add istio https://storage.googleapis.com/istio-release/rel ...

  2. helm部署Redis哨兵集群

    介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...

  3. Helm Chart 一键部署 Jenkins

    Jenkins Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.目前提供超过1000个插件来支持构建.部署.自动化, 满足任何项目的需要. Jenki ...

  4. Kubernetes 与 Helm:使用同一个 Chart 部署多个应用

    k8s 集群搭建好了,准备将 docker swarm 上的应用都迁移到 k8s 上,但需要一个一个应用写 yaml 配置文件,不仅要编写 deployment.yaml 还要编写 service.y ...

  5. Kubernetes-基于helm安装部署高可用的Redis及其形态探索(二)

    上一章,我们通过实践和其他文章的帮助,在k8s的环境安装了redis-ha,并且对其进行了一些实验来验证他的主从切换是否有效.本篇中将会分析,究竟是如何实现了redis-ha的主从切换,以及其与K8S ...

  6. 【K8S】helm chart多环境部署最佳实践-示例

    Chart.yaml apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes name: ...

  7. 从入门到实践:创作一个自己的 Helm Chart

    前言 我们平时在日常生活中会经常在不同的平台上与各种各样的应用打交道,比如从苹果的 App Store 里下载的淘宝.高德.支付宝等应用,或者是在 PC 端安装的 Word.Photoshop.Ste ...

  8. [转帖]从入门到实践:创作一个自己的 Helm Chart

    从入门到实践:创作一个自己的 Helm Chart https://www.cnblogs.com/alisystemsoftware/p/11436469.html 自己已经搭建好了 helm 和t ...

  9. helm 持久化部署ingres

    Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并 ...

  10. Cloud-Native! 实战 Helm 3 部署 Traefik 2

    介绍 Traefik 是什么? Traefik, The Cloud Native Edge Router Traefik 是一种现代 HTTP 反向代理和负载均衡器,用于轻松部署微服务. 这篇文章对 ...

随机推荐

  1. 《小白WEB安全入门》01. 扫盲篇

    @ 目录 基础知识 什么是WEB 什么是前端 什么是后端 什么是数据库 什么是协议 什么是WEB安全 什么是服务器 什么是IP地址.端口 什么是局域网.广域网.内网.外网 什么是URL 什么是MAC地 ...

  2. HTML/网站一键打包APK工具(html网页打包安卓APP应用)

    HTML一键打包APK工具使用说明 工具简介 HMTL一键打包APK工具可以把本地HTML项目或者网站打包为一个安卓应用APK文件,无需编写任何代码,也无需配置安卓开发环境,支持在最新的安卓设备上安装 ...

  3. SpringBoot + Redis + Token 解决接口幂等性问题

    前言 SpringBoot实现接口幂等性的方案有很多,其中最常用的一种就是 token + redis 方式来实现. 下面我就通过一个案例代码,帮大家理解这种实现逻辑. 原理 前端获取服务端getTo ...

  4. Solution -「ARC 103B」Robot Arms

    Description Link. 给定 \(n\) 组坐标.构造长度为 \(m\) 的序列 \(\{c_n\}\) 和 \(n\) 组包含 LRUD 的路径,满足对于每一组坐标: \(c_i\) 表 ...

  5. Linux-Stream内存带宽及MLC内存延迟性能测试方法

    1.Stream内存带宽测试   Stream是业界主流的内存带宽测试程序,测试行为相对简单可控.该程序对CPU的计算能力要求很小,对CPU内存带宽压力很大.随着处理器核心数量的增大,而内存带宽并没有 ...

  6. How to install Django¶

    This document will get you up and running with Django. Install Python Being a Python Web framework, ...

  7. 19c上ADG主库sys密码修改会影响备库同步吗?

    一套Oracle 19c的ADG集群要修改sys密码,由于之前遇见过11g上sys密码修改导致同步问题的情况,所以改之前特意查了下文档,发现其实12cR2开始,在主库修改密码就会自动同步到备库了,以下 ...

  8. 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配

    在WPF应用端开发,它的界面类似于Winform端,因此我们也需要对系统的菜单进行动态配置,这样才能把系统的功能弹性发挥到极致,通过动态菜单的配置方式,我们可以很容易的为系统新增所需的功能,通过权限分 ...

  9. MMKV源码解读与理解

    概述 通过 mmap 技术实现的高性能通用 key-value 组件.同时选用 protobuf 协议,进一步压缩数据存储. 标准 protobuf 不提供增量更新的能力,每次写入都必须全量写入.考虑 ...

  10. 双数组字典树 (Double-array Trie) -- 代码 + 图文,看不懂你来打我

    目录 Trie 字典树 双数组Trie树 构建 字符编码 计算规则 构建 Base Array.Check Array 处理字典首字 处理字典二层字 处理字典三层字 处理字典四层字 叶子节点处理 核心 ...