繁体   English   中英

如何在 k8s deployment.yaml 中从 GCP Artifact Registry 中拉取图像?

[英]How pull image from GCP Artifact Registry in k8s deployment.yaml?

你知道如何在 k8s deployment.yaml 中从 GCP Artifact Registry 拉取镜像吗?

如果你的 Kube.netes 集群在 GKE 上,那么请为集群使用的服务帐户授予适当的权限,以便我可以拉取图像。

在您部署的图像字段 YAML 中,提供基本上是图像位置

HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG

主机名可以是以下之一 - gcr.io, us.gcr.io, eu.gcr.io, asia.gcr.io取决于您所在的位置。 检查https://cloud.google.com/container-registry/docs/pushing-and-pulling#tag

如果您的集群不在 Google Cloud 中,则需要设置imagePullSecrets即:

  • 使用 JSON 凭据从您的 Google Cloud Console 创建一个服务帐户密钥,导航到 API 和服务 -> 凭据并创建一个新的服务帐户密钥(提供适当的角色)

  • 使用此命令告诉 Kube.netes 在拉取图像时使用 JSON 凭据:

    kubectl -n=NAMESPACE_NAME 创建秘密 docker-registry SECRET_NAME
    --docker-server HOST_NAME
    --docker-用户名_json_key
    --docker-email ANY_VALID_EMAIL
    --docker-password="$(cat ~/key.json)"

  • 现在将秘密添加到您的 YAML 或 k8s 使用的默认服务帐户

要添加到默认帐户:

kubectl patch serviceaccount default \
-p '{"imagePullSecrets": [{"name": "SECRET_NAME"}]}'

或添加到您的 YAML

.
.
spec:
 containers:
   - name: my-container
     image: IMAGE_LOCATION
 imagePullSecrets:
   - name: SECRET_NAME

例如,像通常的 docker 回购链接一样传递 GCP 工件回购链接

gcr.io/obi-wan416/volt-source:voltactivedata-client

回购:图像名称:图像标签

您可以使用以下变量:gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME: $SHORT_SHA

所以它将以这种方式构建。 如果您期待自动化并部署到 GKE 或 Cloud Run,您可以查看我的存储库。

https://github.com/harsh4870/basic-ci-cd-cloudbuild参考couldbuild.yaml文件了解更多。

基于数据中心,您可以使用标签: https://cloud.google.com/container-registry/docs/pushing-and-pulling#tag

如果你想进行身份验证,如果不使用 GKE 或云运行,则必须使用imagepull密码。

身份验证文档(如果使用 AKS、EKS、OKE、本地)

创建一个 imagepullsecret,它必须具有可以从 GCR 拉取图像的服务帐户的密钥。 具有roles/storage.objectViewer权限的服务帐户将能够从 GCR 中提取图像。 完成后,为 Kube.netes 配置清单文件,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: hello
spec:
  containers:
  - name: hello
    image: asia.gcr.io/<personal-id>/<gcr-repo>:latest
  imagePullSecrets:
  - name: <secret-nam>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM