从 Harbor 注册表拉取镜像时出现 401 错误

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

我正在 GKE 上运行一个 K8s 集群,在该集群上部署了 harbor,并且我已将其在特定域上公开可用:“harb.pop.com”。

我创建了一个 kubernetes 部署,它使用此注册表中的映像并按如下方式配置它:

api版本:apps/v1 种类:部署 元数据: 名称:木星 标签: 应用:木星 规格: 副本:1 选择器: 匹配标签: 应用:木星 模板: 元数据: 标签: 应用:木星 规格: #serviceAccountName:构建机器人 容器: - 名称:木星 图片:harb.pop.com/sam-test-project/jupiter-app:latest 端口: - 集装箱端口:80 图像拉取秘密: - 名称:harborloginsecret

此部署使用带有以下密钥的 imagepullsecrets 来通过 Harbor 进行身份验证:

api版本:v1 种类:秘密 元数据: 名称:harborloginsecret 类型: 不透明 数据: 用户名:YWRtaW4=#admin 密码:SGFyYm9yMTIzNDU=#Harbor12345

这是一个管理员帐户,我可以使用它登录公开可用的 Harbor 注册表,并且我可以确认项目和图像存储库中存在图像。但是,当 pod 尝试部署时,我不断收到此错误: 无法提取图像“harb.pop.com/sam-test-project/jupiter-app”:无法提取和解压图像“harb.pop.com/sam-test-project/jupiter-app:latest”:无法解决参考“harb.pop.com/sam-test-project/jupiter-app:latest”:HEAD 请求到 https://harb.pop.com/v2/sam-test-project/jupiter-app 的意外状态/清单/最新:401未经授权

我尝试在 Harbor 中创建一个机器人帐户,并对所有内容都拥有完全权限,但仍然无法正确进行身份验证。鉴于港口后端是 GCS 存储桶,我是否需要添加任何 GCP IAM 权限?或者,当 Pod 部署在与我的 Harbor Pod 不同的命名空间中时,我是否需要向部署授予 GKE 服务帐户?我不知道为什么这不起作用,所以任何帮助将不胜感激

kubernetes google-cloud-storage cloud google-kubernetes-engine harbor
1个回答
0
投票

您的秘密类型错误。您需要创建秘密,其类型应为 kubernetes.io/dockerconfigjson

这样做的一种方法是这样的。

kubectl create secret generic harborloginsecret \
      --from-file=.dockerconfigjson=<.docker/config.json> \
      --type=kubernetes.io/dockerconfigjson
© www.soinside.com 2019 - 2024. All rights reserved.