创建一个secret,把minio的access key和secret key存进去,在后面配置cache的时候会用到:
kubectl create secret generic s3access \ --from-literal=accesskey="access" \ --from-literal=secretkey="secret123456" -n gitlab-runner用helm部署GitLab Runner之前,先把chart的仓库添加到helm的仓库列表中:
helm repo add gitlab https://charts.gitlab.io下载GitLab Runner的chart:
helm fetch gitlab/gitlab-runner当前目录会多出一个文件gitlab-runner-0.18.0.tgz,解压:
tar -zxvf gitlab-runner-0.18.0.tgz解压后是名为gitlab-runner的文件夹,内容如下图所示,接下来要修改里面的三个文件:
8. 打开values.yaml,里面有四处需要修改:
9. 第一处,找到已被注释掉的gitlabUrl参数位置,添加gitlabUrl的配置,其值就是前面在GitLab网页取得的gitlab url参数,如下图红框:
10. 第二处,找到已被注释掉的runnerRegistrationToken参数位置,添加runnerRegistrationToken的配置,其值就是前面在GitLab网页取得的registration token参数,如下图红框:
11. 找到rbac的配置,将create和clusterWideAccess的值都改成true(创建RBAC、创建容器gitlab-bastion用于管理job的容器):
12. 设置此GitLab Runner的tag为k8s,在pipeline脚本中可以通过指定tag为k8s,这样pipeline就会在这个Gitlab Runner上允许:
13. 找到cache的配置,在修改之前,cache的配置如下图,可见值为空内容的大括号,其余信息全部被注释了:
14. 修改后的cache配置如下图,红框1中原先的大括号已去掉,红框2中的是去掉了注释符号,内容不变,红框3中填写的是minio的访问地址,红框4中的是去掉了注释符号,内容不变:
15. 上图红框4中的s3CacheInsecure参数等于false表示对minio的请求为http(如果是true就是https),但实际证明,当前版本的chart中该配置是无效的,等到运行时还是会以https协议访问,解决此问题的方法是修改templates目录下的_cache.tpl文件,打开此文件,找到下图红框中的内容:
16. 将上图红框中的内容替换成下面红框中的样子,即删除原先的if判断和对应的end这两行,直接给CACHE_S3_INSECURE赋值:
17. 接下来要修改的是templates/configmap.yaml文件,在这里面将宿主机的docker的sock映射给runner executor,这样job中的docker命令就会发到宿主机的docker daemon上,由宿主机来执行,打开templates/configmap.yaml,找到下图位置,我们要在红框1和红框2之间添加一段内容:
18. 要在上图红框1和红框2之间添加的内容如下: cat >>/home/gitlab-runner/.gitlab-runner/config.toml <<EOF [[runners.kubernetes.volumes.host_path]] name = "docker" mount_path = "/var/run/docker.sock" read_only = true host_path = "/var/run/docker.sock" EOF
添加上述内容后,整体效果如下,红框中就是新增内容: