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

Tekton Pipeline访问GCP Artifact Registry报403如何解决

403问题排查与解决步骤

核心原因:本地构建能正常运行是因为配置了GOOGLE_APPLICATION_CREDENTIALS环境变量指向GCP服务账号密钥,Gradle可以自动读取该凭证完成Artifact Registry鉴权;Tekton Pipeline中既存在服务账号引用不匹配的问题,也没有将密钥正确挂载到构建容器并配置对应环境变量,导致Gradle拿不到有效凭证,访问仓库返回403。

排查&修复点

  • 修复服务账号引用不匹配问题
    你贴出的PipelineRun配置中,build任务绑定的服务账号名为gcp-service-account,但实际创建的关联了gcp-secret的服务账号名为service-account,二者不一致,导致build任务根本没拿到关联了GCP密钥的服务账号。
    将二者名称统一即可,比如把ServiceAccount的metadata.name改成gcp-service-account,保证和PipelineRun中的引用一致:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: gcp-service-account
  namespace: tekton-pipelines
secrets:
  - name: git-ssh-auth
  - name: gcp-secret
  • 正确挂载GCP密钥到构建任务,配置凭证环境变量
    Kubernetes不会自动把关联Secret里的内容配置成GCP工具可识别的凭证,你需要在Gradle构建Task中显式挂载Secret,同时配置GOOGLE_APPLICATION_CREDENTIALS环境变量指向挂载后的密钥文件:
# 补充到你的Gradle构建Task配置中
steps:
  - name: gradle-build
    image: gradle:7-jdk11 # 替换为你实际使用的Gradle镜像版本
    workingDir: $(workspaces.shared-workspace.path)
    command: ["gradle"]
    args: ["build"] # 替换为你实际执行的构建命令
    env:
      - name: GOOGLE_APPLICATION_CREDENTIALS
        value: /var/run/secrets/gcp/gcs-config
    volumeMounts:
      - name: gcp-credential-volume
        mountPath: /var/run/secrets/gcp
        readOnly: true
volumes:
  - name: gcp-credential-volume
    secret:
      secretName: gcp-secret

注意:你的Secret中存储密钥的键名为gcs-config,所以环境变量指向的文件路径末尾必须和这个键名一致,否则会找不到密钥文件。另外你当前Secret的type写为kubernetes.io/opaque,正确值为Opaque(首字母大写),建议同步修正避免兼容性问题。

  • 校验GCP侧服务账号权限
    确认密钥中client_email对应的服务账号,在Artifact Registry的australia-southeast2区域common仓库上,至少绑定了Artifact Registry Reader角色;如果构建流程需要往仓库推制品,需要绑定Artifact Registry Writer角色。

  • 结果验证
    重新触发PipelineRun,如果仍报403,可通过kubectl logs查看构建容器日志,或者进入容器执行echo $GOOGLE_APPLICATION_CREDENTIALS确认环境变量配置正确,再查看对应路径下的文件内容是否和你上传的服务账号密钥一致,排除挂载失败、密钥内容错误的问题。


内容的提问来源于stack exchange,提问作者San Jaisy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:54:21