前言
最近没啥好写的,一直都在弄hpa的问题,也就是解决hpa没生效的问题,以及最优minReplica最小基数的问题。也已经划水了两篇博客了,所以今天就来简单记录一下之前做过的一个小任务,也就是将项目中用到的tekton版本升级至最新版的过程吧。
分析
项目中用到了tekton这个kubernetes原生的ci/cd工具,虽然公司就是做ci/cd的,但是还用了Google的ci/cd,讲起来的确是有点儿ashamed,但因为项目组的原因,蚍蜉撼树是行不通的,那就用咯。话说写博客的时候,就有点儿想法了,为什么公司不出个原生的ci/cd尼,和kubernetes结合的那种,声明yaml格式的,不是网页界面点点的那种???也许可以和产品提提,万一成了尼?直接和tekton对标的那种。
ok,废话不多说,项目中用到的tekton版本是v0.12.1要升级到最新版v0.18.1,问题就来了,为啥要升级,升级是为了解决一个问题来的。在使用过程中,想要看见构建出错日志,但是如果是多步构建,也就是tekton的clustertask.yaml有多个step标签时,如果前面的步骤失败了,那么后边所有的步骤报错都是一样的,如下:
Skipping step because a previous step failed
因为这时候通过tekton client拿到的报错信息就不知道为什么原因报错,还得一步一步往回追溯。虽然项目中用到的步骤也就是两步,如果看见这样的报错,那么就知道是第一步出错了,但是如果是多步构建,就会有问题了。所以有必要解决一下这个问题。相应的GitHub issue,同时查阅相应的issue修复记录在这个merge request修复了,标号是2455,然后查阅相应的更新日志,发现这个已经在v0.13.0的Fixes中修复了,因此只需要将版本升级到v0.13.0之上就可以了,但是既然要升级,那么干嘛不升级到最新版本尼,所以和大佬简单汇报了一下,就得了一个任务,将tekton升级到最新版本v0.18.1,ps,发现写博客的时候,v0.19.0已经出来了。。
实践
通过对比发现,项目中用的v0.12.1的tekton.yaml是通过官方的v0.12.1的release.yaml修改了镜像来的,同时简单对比了一下v0.12.1和v0.18.1的yaml,发现两者更改并不大,只是一些label的修改和小的修改,所以基本可以判断直接将tekton v0.18.1的release.yaml拿来改一改,apply就好了,大概是样子的。
[root@master ~]# kubectl delete -f tekton-v0.12.1.yaml
[root@master ~]# kubectl apply -f tekton-v0.18.1.yaml
可以检查一下:
[root@master ~]# kubectl get pods -n tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-87cbf5c9d-km6zs 1/1 Running 3 12d
tekton-pipelines-webhook-5cd5857498-hdj26 1/1 Running 3 12d
提供服务的资源就是这两个pod。
这里附上tekton-v0.18.1.yaml的链接
这是从
kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.18.1/release.yaml
这里wget下来的,然后转存到我的docker 私有仓库的,因此,如果有在自己的环境尝试安装tekton,可以使用如下命令:
kubectl apply -f https://github.com/wencaiwulue/knativetest/blob/master/yaml/tekton-v0.18.1.yaml
tekton client升级
前面是tekton的部署升级,这里简单说一说tekton clinet 的升级,因为在项目中用到了tekton client,操作tekton,因此,tekton的版本升级后,相应的client端也需要升级。首先祭出大招:
go get -u github.com/tektoncd/pipeline@v0.18.1
go mod tidy -v
go mod build
这三步跑下来,就应该能解决冲突问题了。