声明:这是我在大学毕业后进入第二家互联网公司学习的内容
背景
因为之前的事故重制了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的文件汇总
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'
|
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
版权声明:
原创不易,洗文可耻。除非注明,本博文章均为原创,转载请以链接形式标明本文地址。