kubernetes部署GItLab Runner及Gitlab-CI配置
系统环境
Gitlab版本:16.1.0
Gitlab Runner版本:14.6.0
Kubernetes版本:1.20.0
GitLab-CI介绍
GitLab CI/CD是GitLab的一部分,支持从计划到部署具有出色的用户体验,CI/CD是开源GitLab社区版和专有GitLab企业版的一部分,可以根据需要添加任意数量的计算节点,每个构建可以拆分为多个作业,这些作业可以在多台计算机上并行运行
GitLab-CI轻量级,不需要复杂的安装手段,配置简单,与gitlab可直接适配。实时构建日志十分清晰,UI交互体验很好。使用YAML进行配置,任何人都可以很方便的使用。GitLabCI有助于DevOps人员,例如敏捷开发中,开发与运维是同一个人,最便捷的开发方式
在大多数情况,构建项目都会占用大量的系统资源,如果让gitlab本身来运行构建任务的话,显然Gitlab的性能会大幅度下降。GitLab-CI最大的作用就是管理各个项目的构建状态。因此运行构建任务这种浪费资源的事情交给一个独立的Gitlab Runner来做就会好很多,更重要的是Gitlab Runner可以安装到不同的机器上,甚至是我们本机,这样完全就不会影响Gitlab本身了
从GitLab8.0开始,GitLab-CI就已经集成在GitLab中,我们只需要在项目中添加一个.gitlab-ci.yaml文件,然后运行一个Runner,即可进行持续集成
GitLab-CI:集成、开源、无缝、可扩展、更快的结果、针对交付进行了优化:
GItLab Runner
Gitlab Runner是一个开源项目,用于运行您的作业并将结果发送给gitlab。它与Gitlab CI结合使用,gitlab ci是Gitlab随附的用于协调作用的开源持续集成服务。
Gitlab Runner是用Go编写的,可以作为一个二进制文件运行,不需要特定于语言的要求
它皆在GNU/Linux,MacOS和Windows操作系统上运行。另外注意:如果要使用Docker,Gitlab Runner要求Docker 至少是v1.13.0版本才可以。
Kubernetes Gitlab CICD演示图:
部署Gitlab
接下来顺便创建一个项目,用于演示
进入该项目下,左侧栏CICD里有三种方式:Pipelines、Jobs、Schedules
部署注册Gitlab Runner
配置gitlab runner资源清单 (runner-configmap.yaml)
CI_SERVER_URL 这个地址是gitlab的地址,如果gitlab在宿主机直接写宿主机的ip即可,容器是格式为:svc名称.命名空间.svc.cluster.local,另外在ConfigMap添加新选项后,需要删除Gitlab ci Runner Pod
如果想添加其它选项,那么可以在等到后面的gitlab-ci-runner的Pod容器启动成功后,登录gitlab-ci-runner的pod容器内部运行gitlab-ci-multi-runner register --help 命令来查看所有可使用的选项,只需要为配置的标志添加env变量即可
还需要配置一个用于注册、运行和取消gitlab ci runner的脚本,只有当Pod正常通过K8S (TERM信号)的终止流程时,才会触发注销注册。如果强行终止Pod(SIGKILL信号),Runner将不会自己注销自身,必须手动完成对这种Runner的清理 (注意:只有在k8s集群里安装GitLan Runner才这样操作,二进制安装非K8s上安装则不受这个影响)
接着需要创建一个GITLAB_CI_TOKEN,然后使用gitlab ci runner token来创建一个Kubernetes secret对象,需要提前对token进行base64转码:
特别注意:这里的token就是gitlab runner上截图的地方,base64只有在k8s环境上需要,登录Gitlab,Runner右边栏token信息 如下图
使用上面的token创建一个Sercret对象 (gitlab-ci-token-secret.yaml)
使用Statefulset部署Runner,在开始运行的时候,尝试取消注册所有的同名Runner,当节点丢失时(即NodeLost事件)尤其有用,然后再尝试注册自己并开始运行。在正常停止Pod的时候,Runner将会运行unregister命令来尝试取消自己,gitlab就不能再使用这个Runner,这个则是通过kubernetes Pod生命周期中的hooks来完成的
此时登录Gitlab查看Runner信息,发现就已经将这2个pod节点添加进来了
这里也可以更改Runner的一些配置,比如添加tag标签等
Gitlab Runner配置使用
在代码仓库中添加 .gitlab-ci.yml文件,这里仅展示了基本格式
具体参数参考gitlab官方文档