在 google cloud shell 上运行的 minikube 无法从工件注册表中提取图像 - 被拒绝:未经身份验证的请求

问题描述 投票:0回答:1

我正在 google cloud shell 上运行 minikube。当我使用命令 kubectl apply -k k8/config/app/app-name 部署应用程序时,部署无法从工件注册表中提取映像。这是我收到的错误:

无法拉取镜像“europe-docker.pkg.dev/sample-dev-xxxxxx/github-cr/org-name/app:v0.0.46”:来自守护进程的错误响应:头“https://europe-docker. pkg.dev/v2/sample-dev-xxxxxx/github-cr/org-name/app/manifests/v0.0.46": 拒绝:未经身份验证的请求。未经身份验证的请求没有资源“projects/sample-dev-xxxxxx/locations/europe/repositories/github-cr”的权限“artifactregistry.repositories.downloadArtifacts”(或者可能不存在)

请注意以下事项:

  • 注册表是一个远程注册表,可从 GitHub 容器注册表中提取工件。该远程注册表在配置时经过了适当的身份验证。
  • 如上所述,上述注册表在配置过程中经过了适当的验证,
    • 我可以使用docker(在谷歌云控制台上)拉取图像,
    • 我能够提取映像并将其部署在 Cloud Run 上,
    • 我能够使用相同的 kubernetes 配置提取映像,并部署在 GKE(google kubernetes 引擎)上。
  • 我还尝试使用 minikube 的 Automated Google Cloud Platform Authentication 插件,但它说 你似乎在 GCE 中运行,这意味着身份验证应该在没有 GCP Auth 插件的情况下工作。如果您仍想使用凭据文件进行身份验证,请使用 --force 标志。

有人可以帮我弄清楚我错过了什么,因为 minikube 无法从工件注册表中提取图像吗?

我尝试在 google cloud shell 中运行 minikube,预计不会出现错误,因为相同的配置已成功将应用程序部署到 GKE。

google-cloud-platform minikube google-cloud-shell
1个回答
0
投票

感谢 minikube 的团队帮助我解决了问题。好奇的朋友可以关注这里的对话。

正是

gcp-auth
插件做到了这一点。以下是解决该问题的步骤:

  • 使用命令
    gcloud auth application-default login
    生成 ADC。
  • 在默认位置复制 ADC 内容
    ~/.config/gcloud
  • 通过运行命令
    minikube addons enable gcp-auth --force
    启用插件。
© www.soinside.com 2019 - 2024. All rights reserved.