一个不起眼的操作引发的一场血案

前言

今天老板催发布新版本,然后就兴致冲冲去准备发版本,检查下springboot的正式环境的配置配好没有啊之类的,然后准备build个镜像推到私有仓库,然后准备登陆到harbor,当我发现怎么登陆都账号密码都错误的时候,我渐渐意识到问题的严重性了

image

一系列骚操作

马上看看是不是什么东西挂了,看到core可能因为资源被驱赶了,但是贴心暖男k哥(k8s哥)马上给我安排了,重启了那个core。

image

然后马上就去查看数据库是不是密码被改了,发现并没有修改?难道服务器被黑了被改密码了?但是我想了想密码其实也不复杂,是那个神经病这么有空啊!!这都要改!

image

先不管了,登陆进去比较重要,别的我也不懂了,上线要紧。
本来想直接在数据库改密码,但是发现是加盐加密后的密码,然后网上查了查,发现有这么个东西,就去找了半年没联系写py的同学,让他帮我跑一跑这代码。

好了,拿到盐跟加密后的密码了,直接改了下数据库,心里想”估计这次稳了” 满怀欣喜地输入账号密码,结果。我特发!!

不要慌,问题不大 (老板在旁边提着刀问着能上线没有)

然后我在寻思是不是这个加密方法过时了?跑到测试环境,在测试环境用webui改好密码,再把密码盐复制到正是环境,我可太机智了:grin:

WDNMD 为什么

:bulb:

咦,怎么感觉测试环境登陆跟正式环境的手感怪怪的呢(本来想录歌gif的有点麻烦算了),正式环境的返回居然那么快,真么回事,F12一按,我人都傻了,500??怎么回事!

image

马不停蹄去看下日志,我特发?少了个字段?
image

破案

此时我觉得我心里有数了,还记得一开始的图吗,当时就应该多输出点东西看的


发现这个pod被摞地了,跑到别的节点上了。

然后马上看看镜像!emm,

image

这不是我部署的,这锅我不背
image

马不停蹄地去github,搜到登陆的代码

看到这个16days ago我有点不淡定了,旁边的commit id 我点爆

WDNMD

好的,到这里我也破案结束了。

总结

好了,所以原因就是,负责部署这个harbor的人的锅,偷懒没去选一个稳定的版本号或者tag,直接用了dev,导致core代码更新并且发布到dockerhub上了。而由于k8s上是根据资源调度pod的,因为本来的节点资源不足被调度到别的节点上,而那个节点本地又没那个docker image,所以就去dockerhub上拉了最新的,由于core更新了,database的并没有更新到,导致不兼容出错了。

所以,一定要指定docker image的版本或者tag,当然不排除只有我可能有时候为了省事,就直接docker pull xxx:latest 了。

好了,水了篇没什么水平的文章,该下班了,明天再上线好了哈哈

2 个赞

跟不上了跟不上了。。。我现在都不懂k8s。。。docker略懂一点儿。 :sob:

求你们别学了我跟不上了

1 个赞