gitlabrunner使用k8s executor
相关的文章有:gitlab-runner使用docker executor
两者主要区别在于,一个部署在docker服务器上,一个部署在k8s的pod中。
所需镜像
基础镜像
- gitlab-runner:latest
- gitlab-runner打包成的镜像,需要在k8s上长期驻留
- gitlab-runner-helper:x86_64-f100a208
- 这个是gitlab-runner用来启动pod的,他的版本由gitlab-runner版本和服务器版本决定
- maven:3-jdk-8
- 如果处理的是java代码,那此镜像既可以做为编译的镜像,也可以作为发布时的基础镜像。
- busybox:latest
- 默认镜像,如果不指定runner启动哪个镜像,就选择busybox
- docker:dind
- 用于编译业务镜像,基于maven:3-jdk-8
- kubectl
- 将业务镜像部署到k8s上
第一步:在K8S中部署gitlab-runner
在gitlab上找到url和token
- 打开你想要配置CICD的项目或项目组
- runner配置地址:
settings->CI/CD->Runners->expand
- 找到设置runner需要的url和token,拿小本本记下来
创建一个可用的runner
- 找一台安装了docker的机器,使用以下命令生成toml:
docker run -it --name runner gitlab/gitlab-runner:v11.10.0 register
- 在
settings->CI/CD->Runners->expand
下找到新增的runner,获得新tokenkg8sKRsXs9kYWsMp5PJ7
,记在小本本上。而上一步启动的runner已经不再需要了。
创建k8s上的gitlab-runner的配置文件
注意:这里的token使用我们新获得的token。
kind: ConfigMap
apiVersion: v1
metadata:
name: gitlab-runner
namespace: gitlab-runner
data:
config.toml: |
concurrent = 4
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "first test"
url = "http://${
gitlabIP}"
token ="......"
executor = "kubernetes"
[runners.kubernetes]
host = ""
bearer_token_overwrite_allowed = true
privileged = true
#这是runner的默认镜像;具体镜像maven:3-jdk-8在.gitlab-ci.yml中配置
image = "${
registryIP}/gitlab-runner/busybox:latest"
namespace = "gitlab-runner"
namespace_overwrite_allowed = ""
cpu_limit = "1"
memory_limit = "2Gi"
cpu_request = "1"
memory_request = "2Gi"
service_cpu_limit = "1"
service_memory_limit = "2Gi"
service_cpu_request = "1"
service_memory_request = "2Gi"
helper_cpu_limit = "1"
helper_memory_limit = "2Gi"
helper_cpu_request = "1"
helper_memory_request = "2Gi"
service_account = "gitlab"
helper_image = "${
registryIP}/gitlab-runner/gitlab-runner-helper:x86_64-f100a208"
[