[英]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密码。
创建一个 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.