如何通过集群管理项目为Rancher K8s的GitLab Runner配置S3存储
解决GitLab Runner S3缓存配置失败的方法
核心问题分析
你直接在values.yaml.gotmpl中写入明文敏感信息(AccessKey、SecretKey),同时配置结构不符合GitLab集群管理项目的模板规范,导致Chart渲染失败。正确的做法是通过Kubernetes Secret存储敏感凭据,再按模板要求配置Runner缓存。
正确配置步骤
1. 创建存储S3凭据的Kubernetes Secret
在集群中创建Secret,将S3的访问密钥存入其中(替换为实际命名空间和凭据):
kubectl create secret generic gitlab-runner-s3-cache \ --namespace gitlab-runner \ --from-literal=accesskey=testUser1 \ --from-literal=secretkey=testpassword
2. 修改集群管理项目的values.yaml.gotmpl
按照GitLab集群管理项目的模板语法,正确配置Runner缓存,引用上述Secret:
runner: config: | [[runners]] [runners.cache] Type = "s3" Shared = true Path = "runner" [runners.cache.s3] ServerAddress = "server.home.com" BucketName = "test-bucket-1" Insecure = true env: - name: CACHE_S3_ACCESS_KEY valueFrom: secretKeyRef: name: gitlab-runner-s3-cache key: accesskey - name: CACHE_S3_SECRET_KEY valueFrom: secretKeyRef: name: gitlab-runner-s3-cache key: secretkey
3. 验证配置并重新部署
提交修改到集群管理项目仓库,触发流水线重新部署Runner。部署完成后,可通过以下命令检查Runner配置是否生效:
kubectl exec -n gitlab-runner <gitlab-runner-pod-name> -- cat /etc/gitlab-runner/config.toml
关键注意事项
- 禁止在模板文件中直接写入明文密钥,既存在泄露风险,也会引发模板渲染语法冲突。
Insecure: true仅适用于测试环境,生产环境需启用HTTPS并移除该配置。- 集群管理项目的
values.yaml.gotmpl采用Go模板语法,Runner的核心配置必须放在runner.config下的多行字符串中(用|标识),不能直接嵌套YAML结构。
内容的提问来源于stack exchange,提问作者XenoPuTtSs
相关产品推荐
相关产品推荐

