最近在自己的服务器上k8s环境和公司的测试服务器docker环境下各搭了一套cicd,遇到了很多坑,且国内查不到什么中文资料,所以特此记述一下遇到的问题,和解决的过程。
考虑到实际上很少有人有自建的k8s集群,更多的是单一的云服务器使用docker来部署自己的项目,而恰好我也在公司的测试环境下也搭建了一套docker的cicd,所以本系列文章将分为K8S版和Docker版,读者可以按需浏览。
Docker版的CICD在部署的过程中我尽可能使用简单的docker run命令来启动应用,而K8S版的应用则尽可能使用Helm进行安装,以此实现最简单,最快捷,一键部署开盖即食的效果。
先简述一下两条路线的流程吧。
自有服务器K8S的CICD流程
Github -> Gitea -> drone & alirepo -> k8s
这里没有直接对接github是因为最近github越来越不稳定了,我阿里云服务器在clone时真就是薛定谔的clone,三次能有一次成功就不错了,经常拉不到代码,但好在国内访问国外不行,但github国外推国内到是没问题,所以这里就用本地搭建的轻量级代码仓库gitea做了一个镜像仓库,当gitea收到push等event的时候,就会webhook到drone进行ci流程了。
公司内网测试环境Docker的CICD流程
Gitlab -> Gitea -> drone & 内网私仓 -> 测试服务器Docker环境
那有的小伙伴就要问了,为啥内网Gitlab你也要垫一层Gitea呢,这个事情其实是这样的,Drone在同步仓库列表时,只能同步到创建人的仓库,也就是说,你不是代码仓库的拥有者,无论什么权限都无法在drone里看到这个仓库,一般公司代码仓管的拥有者都是运维,然后我公司的Gitlab并没有配置runner,所以CICD功能实际上并用不了,而且我个人来讲更想用自己已经会了的技术,而不是再去研究一个其他的cicd,那么为了解决这个问题,就是在gitlab上配置镜像推送,每次收到push等event,同步推送到gitea,注意这里我只推送了dev分支而不是mater,因为毕竟是测试环境嘛。
目录
本系列提供了K8S和Docker两种版本的搭建流程,请按需阅读。
Docker
- DOCKER搭建自己的企业级CICD(一)GITLAB镜像仓库
- DOCKER搭建自己的企业级CICD(二)部署DRONE
- DOCKER搭建自己的企业级CICD(三)DRONE的CI
- DOCKER搭建自己的企业级CICD(四)DRONE的CD
K8S
- K8S搭建自己的企业级CICD(一)GITHUB镜像仓库
- K8S搭建自己的企业级CICD(二)部署DRONE
- K8S搭建自己的企业级CICD(三)DRONE的CI
- K8S搭建自己的企业级CICD(四)DRONE的CD