OLM有哪些用途(盘点几个常见的应用领域)

天美租号

今天跟大家唠唠OLM这玩意儿。

初识OLM

说起这个OLM,一开始我听着也头大,什么生命周期管理的。后来实际用了用,才发现没那么玄乎。简单说,就是管那些在Kubernetes上跑的复杂应用的。以前咱们装个数据库、监控啥的,配置文件一大堆,升级更是要命,一不小心就搞崩了。OLM就是想让这些事情变得简单点,像手机上装App一样,点点点就完事儿,还能帮你自动升级、打补丁啥的。

OLM有哪些用途(盘点几个常见的应用领域)

我的实践折腾之路

我第一次捣鼓这玩意儿,还是因为当时手头一个项目,部署流程乱七八糟的。各种中间件、服务,每次更新都得小心翼翼,生怕哪里弄错了。后来听说有Operator这种模式,能把运维经验固化到代码里,就觉得挺有意思。而OLM,就是管理这些Operator的“大管家”。

第一步:环境准备

我寻思,得找个法子简化一下。我是在我自己的电脑上装了个Minikube,小打小闹嘛先试试水。大家要是想玩玩,装个Kind也行,都挺方便的。反正就是先得有个Kubernetes集群跑起来。

第二步:安装OLM

集群起来后,就该装OLM了。这个过程倒也不算太复杂,就是些kubectl命令敲一敲。我记得当时是去Operator Framework的官方文档找的安装脚本,直接 `kubectl apply -f ...` 一把梭。执行完了之后,等一会儿,通过 `kubectl get pods -n olm` 看看相关的Pod是不是都跑起来了。看到都Running了,心里就踏实一半了。

OLM有哪些用途(盘点几个常见的应用领域)

  • 检查OLM的namespace是不是创建了。
  • 看看olm-operator、catalog-operator这些核心组件是不是正常运行。

第三步:找个Operator试试手

装完OLM,我就去那个*上瞅了瞅,上面有一堆现成的Operator,看得我眼花缭乱。我想着先挑个咱们常用的,比如Prometheus Operator或者etcd Operator来试试手。这些都是社区维护得比较好的,坑相对少点。

OLM有哪些用途(盘点几个常见的应用领域)

选定了目标,接下来就是在集群里订阅这个Operator。OLM里面有几个重要的概念,比如SubscriptionInstallPlanClusterServiceVersion (CSV)这些。简单理解,Subscription就是告诉OLM:“我要装这个Operator,你帮我看着点,有新版本了也想着帮我升级。”

我当时选了个Prometheus Operator,在OperatorHub上找到了对应的YAML文件,或者通过OLM提供的界面(如果你装了Console的话)点几下,就能创建一个Subscription。创建完了,OLM就会自动去拉取这个Operator的定义(也就是CSV),然后根据InstallPlan来安装它。

第四步:验证Operator是否工作

等了一小会儿,我用 `kubectl get csv -n my-namespace` (my-namespace是你安装Operator的命名空间) 看了看,果然看到Prometheus的CSV状态是Succeeded。然后我就按照这个Operator的文档,创建了一个Prometheus的自定义资源(CR)。比如创建一个kind: Prometheus的YAML文件,然后kubectl apply -f *。神奇的事情发生了,Prometheus相关的Pods、Services、ConfigMaps就自动被创建出来了!

点了几下,填了点基本信息,Prometheus就自己跑起来了,连带着Alertmanager什么的也都配好了。当时我就觉得,这玩意儿行!一键安装自动配置,省了不少事儿。

为啥我会折腾这个?

OLM有哪些用途(盘点几个常见的应用领域)

要说为啥我会一头扎进去研究这个OLM,也是被逼无奈。

那会儿,我们项目迭代快,三天两头就要发版。每次发版,运维的兄弟们就头疼。各种依赖、配置,还有不同环境的差异,简直是一团乱麻。监控系统也是,东一个版本,西一个配置,出了问题排查起来费劲得要死。

有一次,就因为一个监控组件的小版本没对齐,导致采集数据不准,线上一个小问题硬是排查了好几个小时,领导脸都黑了。后来开会复盘,我就提出来,咱们是不是可以看看社区有没有更自动化的方案,来统一管理这些有状态的、复杂的应用。然后就有人提到了Operator模式,再顺藤摸瓜,就找到了OLM。

一开始大家还半信半疑,觉得这东西新,会不会有坑。我就自告奋勇,说我先来研究研究,搞个小范围试点。就从最头疼的监控系统开始。那段时间,我几乎天天泡在文档里,对着各种CRD、CSV(当时还不知道是就知道是配置文件)猛看。遇到问题就去社区问,或者自己瞎琢磨,有时候一个小小的问题能卡我大半天。

比如我不太理解OLM是怎么发现和安装Operator的,后来才搞明白是通过CatalogSource来提供Operator的元数据。还有那个升级策略,什么Automatic、Manual,也得根据实际情况选,不然它半夜给你自动升了,万一出点幺蛾子,那乐子就大了。

慢慢地,从部署一个简单的Nginx Operator,到后来把我们核心业务的几个有状态服务也尝试用Operator管起来,整个过程虽然踩了不少坑,但也确实学到了不少。比如,怎么写自己的CSV,怎么打包自己的Operator Bundle,怎么发布到内部的CatalogSource等等。

OLM有哪些用途(盘点几个常见的应用领域)

的成果

现在回想起来,那段时间虽然累,但看到部署效率实打实地提升了,出错率也降下来了,特别是对于那些复杂的有状态应用,版本管理和升级都清晰了不少,心里还是挺有成就感的。运维的兄弟们也终于可以少加点班了。

别看OLM名字听起来挺唬人,上手了也就那么回事。关键是它能实实在在解决问题,让咱们这些搞技术的能少掉点头发,多点时间喝茶,挺

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,6人围观)

还没有评论,来说两句吧...