openshift - Openshift - 使用服务帐户登录 docker 注册表
问题描述
我目前正在尝试使用项目默认服务帐户“builder”登录到我的项目 Openshift docker 注册表,然后将图像推送到它。
使用 oc cli 登录成功,但是当我尝试登录 docker 注册表时:
docker login -u $(oc whoami) -p $(oc whoami --show-token) registry.pro-eu-west-1.openshift.com:443
我面临:
Error response from daemon: Get https://registry.pro-eu-west-1.openshift.com:443/v2/: unauthorized: authentication required
构建器服务帐户似乎没有登录 Openshifts docker 注册表的权限,尽管它具有system:image-builder
具有描述的角色:
Grants the rights to build, push and pull images from within a project.
...
有什么想法可能会出错吗?
解决方案
虽然我不知道为什么docker login
不能按您期望的方式工作,但您可以使用以下命令使您的本地 docker 以当前oc
用户身份登录到集群注册表:
oc registry login
如果您想以 ServiceAccount 身份登录,例如builder
(如果这不是您使用 using 登录的用户,oc
则可以使用该-z
选项(假设您在 ServiceAccount 所在的项目中):
oc registry login -z builder
还要记住,在集群中,builder
ServiceAccount 可以使用名为builder-dockercfg-zftv4
.
如果您仍然想要/需要使用oc
登录以外的其他东西(例如使用某些不处理的工具~/.docker/config.json
),那么要作为服务帐户登录,您需要将用户名更改为完全合格的 ServiceAccount名称,但用连字符替换冒号。
例如,如果您有一个名为 ServiceAccount 的项目my-project
,builder
那么 Kubernetes 中的完全限定名称将是:
system:serviceaccount:my-project:builder
但作为 OpenShift 中集群内注册表的注册表用户名,它将是:
system-serviceaccount-my-project-builder
推荐阅读
- python - 我是编程新手,我不知道为什么这段代码不能像我希望的那样工作
- docker - 关于在 Kubernetes 中将 Pod 部署到 Master
- python - 我如何重塑图像以让每个 8x8 块成为带有 numpy/cv2 的向量
- azure - Azure 应用服务部署 - 无法覆盖 appsettings.json
- c# - 如何使用 UnityWebRequest post api 调用发布我的数据
- javascript - 光滑的滑块在角度 7 中动态获取数据时不起作用
- neural-network - COCO 数据集每类的图像数量
- sqlalchemy - SQLAlchemy:在 Pytest 中进行测试时,“不允许捕获不继承自 BaseException 的类”
- sql-server - SSIS:用户“NT AUTHORITY\ ANONYMOUS LOGON”登录失败
- postgresql - Postgres:如何执行 Sum 的查询,因为它给出了错误?