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

如何在K8s的deployment.yaml中拉取GCP Artifact Registry镜像?

从GCP Artifact Registry拉取镜像到Kubernetes Deployment

要在K8s的deployment.yaml里配置拉取GCP Artifact Registry的镜像,核心是配置镜像拉取认证和正确填写镜像地址,步骤如下:

1. 创建镜像拉取Secret

K8s需要通过认证才能访问Artifact Registry,你得先创建一个docker-registry类型的Secret来存储GCP服务账号的密钥:

  • 首先,在GCP控制台创建一个带有Artifact Registry Reader权限的服务账号,下载其JSON密钥文件(比如命名为gcp-key.json)。
  • 然后执行kubectl命令创建Secret:
kubectl create secret docker-registry gcr-json-key \
  --docker-server=us-central1-docker.pkg.dev \
  --docker-username=_json_key \
  --docker-password="$(cat ./gcp-key.json)" \
  --docker-email=your-email@example.com

注意:替换us-central1-docker.pkg.dev为你的Artifact Registry所在区域的域名,比如europe-west1-docker.pkg.dev;your-email@example.com可以填任意有效邮箱,这个字段目前不影响认证。

2. 编写Deployment配置文件

在deployment.yaml中,需要做两处关键配置:

引用镜像拉取Secret

在spec.template.spec下添加imagePullSecrets字段,指向刚才创建的Secret。

填写Artifact Registry的镜像地址

镜像地址格式为:REGISTRY_DOMAIN/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG

完整的deployment.yaml示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      # 引用之前创建的镜像拉取Secret
      imagePullSecrets:
        - name: gcr-json-key
      containers:
      - name: my-app-container
        # 替换为你的Artifact Registry镜像地址
        image: us-central1-docker.pkg.dev/my-gcp-project/my-repo/my-app-image:v1
        ports:
        - containerPort: 8080

额外说明

  • 如果你的K8s集群是GKE(Google Kubernetes Engine),可以用工作负载身份替代Secret认证,不需要手动管理密钥文件,不过这需要额外的IAM配置,适合长期运维场景。
  • 确保服务账号的IAM权限正确:必须拥有roles/artifactregistry.reader权限,否则会拉取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:45:25