声明:这是我在大学毕业后进入第二家互联网公司学习的内容


背景

因为之前的事故重制了gitlab-runner,所以gitlab-runner也要重新部署,顺便更新一下gitlab-runner的版本

重新部署gitlab-runner

eks

eks使用的helm部署,但是由于之前更新忘了版本和yaml文件,现在只能重新写了

准备yaml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 将$URL和$TOKEN替换为实际的值

$ vim values.yaml

concurrent: 4
checkInterval: 3
rbac:
create: true
serviceAccountName: runner-gitlab-runner
clusterWideAccess: true
runners:
privileged: true
tags: "aws"
gitlabUrl: $URL
runnerRegistrationToken: $TOKEN

$ helm repo add gitlab https://charts.gitlab.io

# 对比一下现在的gitlab-runner和eks上的区别
$ helm diff upgrade -n gitlab-managed-apps -f values.yaml runner gitlab/gitlab-runner
{
xxxx
}

# 更新
$ helm upgrade -n gitlab-managed-apps -f values.yaml runner gitlab/gitlab-runner

docker

docker是直接本地部署

准备docker-compose.yaml和config.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$ vim docker-compose.yaml
version: '3.6'
services:
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
restart: always
hostname: 'gitlab-runner'
container_name: gitlab-runner
network_mode: bridge
privileged: true
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- './gitlab-runner:/etc/gitlab-runner'


$ vim config.toml
# 根据机器性能限制并发数和CPU、内存上限

concurrent = 6
check_interval = 0

[session_server]
session_timeout = 1800

[[runners]]
name = "runner"
url = "$URL"
token = "$TOKEN"
executor = "docker"
[runners.custom_build_dir]
enabled = true
[runners.docker]
tls_verify = false
image = "ruby:2.6"
privileged = true
disable_entrypoint_overwrite = false
memory = "4096m"
cpus = "2"
oom_kill_disable = false
disable_cache = false
volumes = ["/cache","/certs/client"]
shm_size = 0

启动runner

1
2
3
4
$ docker-compose up -d
$ docker logs -f gitlab-runner

ERROR: Could not create cache adapter error=cache factory not found: factory for cache adapter "" was not registered

需要添加一个缓存服务

网上查了下资料,可以用MinIO,它是一个可以提供类似S3的服务,这样的话线下可以多部署几个runner

部署MinIO

准备docker-compose.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ vim docker-compose.yaml
version: '3.6'
services:
minio:
image: 'quay.io/minio/minio'
restart: always
hostname: 'minio'
container_name: minio
network_mode: bridge
environment:
- 'MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE'
- 'MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
command: [ "server", "/data", "--console-address", ":9001" ]
ports:
- '9000:9000'
- '9001:9001'
volumes:
- './minio:/data'

$ docker-compose up -d

后续按照GitLab Runner 配置分布式缓存MinIO操作即可

部署完成后在gitlab-runner的配置文件上新增s3的URL即可

最后gitlab-runner+MinIO的文件汇总

  • docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3.6'
services:
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
restart: always
hostname: 'gitlab-runner'
container_name: gitlab-runner
network_mode: bridge
privileged: true
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- './gitlab-runner:/etc/gitlab-runner'
minio:
image: 'quay.io/minio/minio'
restart: always
hostname: 'minio'
container_name: minio
network_mode: bridge
environment:
- 'MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE'
- 'MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
command: [ "server", "/data", "--console-address", ":9001" ]
ports:
- '9000:9000'
- '9001:9001'
volumes:
- './minio:/data'
  • config.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
concurrent = 6
check_interval = 0

[session_server]
session_timeout = 1800

[[runners]]
name = "runner"
url = "$URL"
token = "$TOKEN"
executor = "docker"
[runners.custom_build_dir]
enabled = true
[runners.cache]
Type = "s3"
Path = "prefix"
Shared = false
[runners.cache.s3]
ServerAddress = "192.168.20.12:9000"
AccessKey = "TMOseI52vNamdpwG"
SecretKey = "SSqJWPq856iNzysAKjaP9jCFUkbRfRtE"
BucketName = "runner-cache"
Insecure = true
[runners.docker]
tls_verify = false
image = "ruby:2.6"
privileged = true
disable_entrypoint_overwrite = false
memory = "4096m"
cpus = "2"
oom_kill_disable = false
disable_cache = false
volumes = ["/cache","/certs/client"]
shm_size = 0

总结

至此gitlab-runner部署完成,算是上次事故的番外篇

报错总结

第一次部署的时候遇到了这个问题

1
minio http: server gave http response to https client

原因是gitlab-runner连接s3默认是https的,需要关闭

添加Insecure = true到runner的配置文件即可

参考资料

GitLab Runner 配置分布式缓存MinIO


版权声明:

原创不易,洗文可耻。除非注明,本博文章均为原创,转载请以链接形式标明本文地址。