You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab Runner 16.x AWS S3缓存失效问题求助

GitLab Runner 16.x 配置AWS S3缓存失败排查方案

问题背景

近期将GitLab及GitLab Runner升级至16.x版本,尝试配置AWS S3作为缓存存储,但功能无法正常运行。GitLab Runner部署在AWS EKS集群,通过Helm管理,作业执行时抛出以下错误:

No URL provided, cache will not be uploaded to shared cache server. Cache will be stored only locally.

当前使用的Runner配置(已脱敏):

runners:
  config: |
    [[runners]]
      request_concurrency = 1
      [runners.kubernetes]
        privileged = true
        namespace = "_REDACTED_"
        image = "ubuntu:22.04"
        [runners.kubernetes.node_selector]
        project = "_REDACTED_"
      [runners.cache]
        Type = "s3"
        Shared = true
        [runners.cache.s3]
          ServerAddress = "s3.amazonaws.com"
          BucketName = "_REDACTED_"
          BucketLocation = "us-east-1"
          AuthenticationType = "iam"
          ServerSideEncryption = "S3"
          Insecure = false

环境相关信息:

  • Runner所在EC2节点已配置IAM角色,作业可通过该角色访问AWS资源
  • Helm部署时设置了rbac: create: true,已为Runner Pod创建Kubernetes Service、Role及RoleBinding
  • EKS集群已启用OIDC

排查与解决步骤

1. 补充S3缓存的URL参数

GitLab Runner 16.x对S3缓存配置的参数校验更严格,即使使用默认的s3.amazonaws.com,也建议显式指定URL参数。在[runners.cache.s3]块中添加:

URL = "https://s3.amazonaws.com"

2. 确认IAM权限覆盖缓存操作

确保EC2节点的IAM角色拥有目标S3 Bucket的以下权限:

  • s3:ListBucket
  • s3:GetObject
  • s3:PutObject
  • s3:DeleteObject
    可通过AWS IAM控制台验证策略是否正确关联到节点角色。

3. 检查Helm配置是否存在参数冲突

使用Helm部署时,顶层的runners.cache参数可能会覆盖内嵌config块中的配置。确认Helm values文件中没有单独设置如下内容:

# 需避免这类可能冲突的配置
runners:
  cache:
    type: s3
    # 其他缓存相关参数

所有缓存配置应集中在runners.config的[[runners]]块内。

4. 切换为IRSA方式绑定IAM角色(推荐)

既然EKS已启用OIDC,建议使用IRSA(IAM Roles for Service Accounts)为Runner Pod单独绑定IAM角色,避免节点角色权限过大或权限冲突:

  • 创建仅包含S3缓存所需权限的IAM角色
  • 将该角色与Runner的Service Account关联
  • 确保Runner Pod使用该Service Account

5. 查看Runner Pod日志定位细节错误

通过Kubectl查看Runner Pod的日志,获取更详细的错误信息:

kubectl logs -n <runner-namespace> <runner-pod-name>

日志中可能会暴露签名失败、Bucket不存在、区域不匹配等具体问题。

6. 验证Bucket名称与区域一致性

确认目标S3 Bucket确实位于us-east-1区域,且Bucket名称无拼写错误,避免因配置与实际Bucket信息不匹配导致的失败。

内容的提问来源于stack exchange,提问作者Abdullah Khawer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:22:38