Helm Chart 部署 Redis 的完美指南
- 一、Helm介紹
- 二、安裝Helm
- 三、配置Helm的repository
-
四、部署chart(以部署redis為例)
- 1. 搜索chart
- 2. 拉取chart
- 3. 修改values.yaml的一些配置(簡(jiǎn)單演示一下基本的配置)
- 4. 啟動(dòng)chart
-
5. 升級(jí)和回滾
- a. 升級(jí)
- b. 回滾
一、Helm介紹
Helm是一個(gè)Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的將之前已經(jīng)打包好的yaml文件部署到kubernetes上。
三個(gè)基本概念:
- Chart:Chart 代表著 helm 包。它包含在 Kubernetes 集群內(nèi)部運(yùn)行應(yīng)用程序,工具或服務(wù)所需的所有資源定義。
- Repository:是 chart 的存儲(chǔ)庫(kù)。例如:https://charts.bitnami.com/bitnami
- Release:Release 是運(yùn)行在 Kubernetes 集群中的 chart 的實(shí)例。一個(gè) chart 通常可以在同一個(gè)集群中安裝多次。每一次安裝都會(huì)創(chuàng)建一個(gè)新的 release。以 MySQL chart為例,如果你想在你的集群中運(yùn)行兩個(gè)數(shù)據(jù)庫(kù),你可以安裝該chart兩次。每一個(gè)數(shù)據(jù)庫(kù)都會(huì)擁有它自己的 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
# 添加倉(cāng)庫(kù)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 也可以添加國(guó)內(nèi)的一些庫(kù)(阿里云等)
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
添加完成后可以使用 helm list 查看repo列表:
四、部署chart(以部署redis為例)
1. 搜索chart
# 查找redis
helm search repo redis
搜索出來可以看到有單機(jī)的redis或者集群的redis-cluster,APP VERSION表示redis的版本。
2. 拉取chart
# 拉取redis
helm pull bitnami/redis
拉取下來是一個(gè)tgz的壓縮包,需要進(jìn)行解壓 tar -xvf redis-18.5.0.tgz ,解壓后會(huì)得到一個(gè)redis目錄,里面包含了redis的各種配置文件和啟動(dòng)文件。
Chart.yaml # 包含了chart的一些基本信息
charts # 該目錄保存其他依賴的 chart
templates # chart 配置模板,用于渲染最終的 Kubernetes YAML 文件
NOTES.txt # 用戶運(yùn)行 helm install 時(shí)候的提示信息
values.yaml # 定義 chart 模板中的自定義配置的默認(rèn)值,可以在執(zhí)行 helm install 或 helm update 的
3. 修改values.yaml的一些配置(簡(jiǎn)單演示一下基本的配置)
- global部分修改redis密碼,如果有動(dòng)態(tài)存儲(chǔ)可以加上你提前建好的storgeClass,保證數(shù)據(jù)持久性;
?
-
architecture部分表示這個(gè)redis是集群還是單節(jié)點(diǎn)運(yùn)行,如果集群改為replication,單節(jié)點(diǎn)改為standalone
-
service部分修改redis的服務(wù),包括端口,是否對(duì)外訪問,這里我們不對(duì)外,就改為ClusterIP
4. 啟動(dòng)chart
helm install redis-cluster ./redis/ -n redis
# redis-cluster表示部署的名稱
# ./redis/ 表示chart的本地路徑,這里為當(dāng)前目錄下的reids
# -n redis 表示命名空間,可以提前創(chuàng)建一個(gè)redis的命令空間
啟動(dòng)后會(huì)有一些提示,包括告訴你如何進(jìn)入redis容器內(nèi),對(duì)外暴露端口等一些操作。
# 查看redis是否啟動(dòng)成功
kubectl get all -n redis
可以看到redis這個(gè)chart的所有狀態(tài)都為running,一主三從,進(jìn)入redis終端內(nèi)驗(yàn)證,使用剛剛配置的密碼登錄redis:
kubectl exec -it redis-master-0 -n redis bash
創(chuàng)建一些數(shù)據(jù) set name kubernetes ,然后在從節(jié)點(diǎn)驗(yàn)證數(shù)據(jù)是否存在。
可以看到從節(jié)點(diǎn)已經(jīng)獲取到剛剛創(chuàng)建的name,但是在從節(jié)點(diǎn)創(chuàng)建數(shù)據(jù)是不行的,從節(jié)點(diǎn)只能讀取數(shù)據(jù)。
5. 升級(jí)和回滾
a. 升級(jí)
我們?cè)趧倓傄呀?jīng)創(chuàng)建了一個(gè)redis的chart,實(shí)際生產(chǎn)環(huán)境中,可能需要修改一些配置,然后基于這個(gè)chart對(duì)我們應(yīng)用進(jìn)行升級(jí)。
例如,我們這里修改一些redis的密碼,然后升級(jí)這個(gè)chart,我們編輯一下values.yaml把開頭創(chuàng)建的密碼“redis123”改成“redis456”。
# 升級(jí)redis
helm upgrade redis-cluster ./redis/ -n redis
# redis-cluster表示部署的名稱
# ./redis/ 表示chart的本地路徑,這里為當(dāng)前目錄下的reids
# -n redis 表示命名空間,可以提前創(chuàng)建一個(gè)redis的命令空間
可以從時(shí)間看到我們的pod剛剛進(jìn)行了更新,并且狀態(tài)都處于running狀態(tài),然后進(jìn)入容器進(jìn)行驗(yàn)證,當(dāng)我們輸入之前的密碼“redis123”,會(huì)報(bào)錯(cuò)說密碼不正確,輸入更新后的密碼“redis456”,正常進(jìn)入redis,如果一開始使用了數(shù)據(jù)持久化,這時(shí)候創(chuàng)建的數(shù)據(jù)應(yīng)該也不會(huì)丟失。
b. 回滾
# 先看看我們歷史的chart
helm history redis -n redis
可以看到第一個(gè)狀態(tài)為superseded是我們最開始創(chuàng)建的chart,第二個(gè)狀態(tài)為deployed是我們剛剛升級(jí)的chart,就是正在運(yùn)行的,我們將版本回滾到第一個(gè)版本。
helm rollback redis 1 -n redis
可以看到我們已經(jīng)回滾到第一個(gè)版本,并且pod正在更新中,等到創(chuàng)建成功,可以驗(yàn)證一下輸入“redis123”是否能進(jìn)入到redis。
驗(yàn)證成功,已經(jīng)回滾到版本1,使用舊密碼成功登錄redis。
當(dāng)我們深入探索 Helm Chart 部署 Redis 的過程時(shí),不僅僅是學(xué)習(xí)了如何利用 Helm 簡(jiǎn)化復(fù)雜的部署任務(wù),更是領(lǐng)略到了在容器化世界中管理和維護(hù)應(yīng)用的便捷之處。通過 Helm Chart,我們可以輕松地定義、配置和部署復(fù)雜的應(yīng)用程序,使得整個(gè)過程更加靈活、可維護(hù)性更高。
在未來,我們可以繼續(xù)深入學(xué)習(xí) Helm 的更多高級(jí)功能,探索更多復(fù)雜應(yīng)用場(chǎng)景下的部署和管理方法。通過不斷學(xué)習(xí)和實(shí)踐,我們能夠更好地應(yīng)對(duì)日益復(fù)雜的容器化環(huán)境,提高工作效率,確保應(yīng)用的可靠性和穩(wěn)定性。
希望這篇博客能夠幫助你更好地理解 Helm Chart 部署 Redis,并在你的容器化旅程中提供一些有益的經(jīng)驗(yàn)。讓我們一起迎接技術(shù)的挑戰(zhàn),不斷進(jìn)步,探索更多的可能性。感謝你的閱讀,期待在未來的技術(shù)探索中再次相遇!
總結(jié)
以上是生活随笔為你收集整理的Helm Chart 部署 Redis 的完美指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 恒大汽车概念股票龙头一览表,恒大汽车相关
- 下一篇: ROW_NUMBER 开窗函数优化方案(