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

如何通过REST API将Google Artifact Registry中的Docker镜像部署到GKE集群

解决GKE通过REST API部署GAR镜像的实操步骤
  • Kubernetes API认证
    GKE集群的K8s API需身份验证,可通过Google Cloud服务账号生成Bearer Token:

    1. 用gcloud快捷生成Token:
      gcloud auth application-default print-access-token
    2. 确保服务账号拥有roles/kubernetes-admin或更细粒度权限(如roles/deploymentmanager.editor),且已绑定到GKE集群IAM权限。
  • 获取GKE集群API端点
    执行命令获取集群API服务器地址:
    gcloud container clusters describe <CLUSTER_NAME> --zone <ZONE> --format="value(endpoint)"
    得到的地址即为K8s API的基础URL(如https://34.123.45.67)。

  • 构造Deployment请求体
    部署GAR镜像需指定完整镜像路径:REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG,示例JSON请求体:

    {
      "apiVersion": "apps/v1",
      "kind": "Deployment",
      "metadata": {
        "name": "gar-image-deployment",
        "labels": {
          "app": "gar-app"
        }
      },
      "spec": {
        "replicas": 3,
        "selector": {
          "matchLabels": {
            "app": "gar-app"
          }
        },
        "template": {
          "metadata": {
            "labels": {
              "app": "gar-app"
            }
          },
          "spec": {
            "containers": [
              {
                "name": "gar-container",
                "image": "us-central1-docker.pkg.dev/my-project/my-repo/my-image:v1",
                "ports": [
                  {
                    "containerPort": 8080
                  }
                ]
              }
            ],
            "imagePullSecrets": [
              {
                "name": "gcr-json-key"
              }
            ]
          }
        }
      }
    }
    

    若GKE集群未默认配置GAR拉取权限,需创建镜像拉取密钥:
    kubectl create secret docker-registry gcr-json-key --docker-server=REGION-docker.pkg.dev --docker-username=_json_key --docker-password="$(cat service-account-key.json)" --docker-email=any@example.com

  • 调用K8s API完成部署
    用POST请求发送到Deployment端点,示例curl命令:

    curl -X POST \
      https://<CLUSTER_ENDPOINT>/apis/apps/v1/namespaces/default/deployments \
      -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type: application/json" \
      -d @deployment.json
    

    请求成功会返回Deployment的JSON状态对象。

  • 常见瓶颈排查

    • 403权限错误:检查服务账号IAM权限,以及GKE集群RBAC是否授予Deployment创建权限。
    • 镜像拉取失败:确认镜像路径正确,GKE节点服务账号拥有roles/artifactregistry.reader权限,或imagePullSecrets配置无误。
    • API端点无法访问:检查本地机器防火墙规则,是否允许出站访问集群API端点的443端口。

内容的提问来源于stack exchange,提问作者Stefano Rosà

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:48:13