如何在Kubernetes部署的Gitlab实例中正确配置CI缓存?
问题根因
- 第一次缓存失效:你自定义覆盖了GitLab Runner的
config配置段,原本Helm Chart自动注入的全局缓存配置被覆盖,导致没有配置缓存适配器,出现适配器未注册的报错,缓存只能本地存储无法上传到共享存储。 - 第二次上传路径错误:你手动补充缓存配置时,没有填写
[runners.cache]下的Path参数,你之前正常工作的缓存路径前缀runner-cache就是由该参数控制的,缺失该参数会导致上传路径不符合MinIO的预期,返回400错误。
修正方案
调整你的values.yaml中GitLab Runner的配置,补充正确的Path参数即可:
gitlab-runner: runners: privileged: true config: | [[runners]] [runners.kubernetes] image = "ubuntu:20.04" privileged = true [runners.cache] Type = "s3" Path = "runner-cache/" Shared = false [runners.cache.s3] ServerAddress = "minio.domain.com" BucketName = "gitlab-runner" BucketLocation = "none" Insecure = false [[runners.kubernetes.volumes.empty_dir]] name = "docker-certs" mount_path = "/certs/client" medium = "Memory"
额外优化建议
如果你不想手动维护完整的Runner配置,可以直接使用GitLab Helm Chart提供的缓存配置参数,不需要直接覆盖整个config段,避免覆盖默认配置:
gitlab-runner: runners: privileged: true cache: type: s3 path: runner-cache/ shared: false s3: serverAddress: minio.domain.com bucketName: gitlab-runner bucketLocation: none insecure: false config: | [[runners]] [runners.kubernetes] image = "ubuntu:20.04" privileged = true [[runners.kubernetes.volumes.empty_dir]] name = "docker-certs" mount_path = "/certs/client" medium = "Memory"
生效验证
修改配置后执行Helm升级命令生效:helm upgrade -f values.yaml gitlab gitlab/gitlab --version 5.2.3
等待Runner Pod重启完成后重新执行CI任务,缓存上传路径会恢复为带/runner-cache/前缀的正确格式,缓存即可正常上传。
内容的提问来源于stack exchange,提问作者user3142695
相关产品推荐
相关产品推荐

