Openshift - 使用服务帐户登录 docker 注册表
Openshift - Using a service account to login to the docker registry
我目前正在尝试使用项目默认服务帐户“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
如果您想以 builder
等 ServiceAccount 身份登录(如果这不是您使用 oc
登录的用户,您可以使用 -z
选项(假设您在 ServiceAccount 所在的项目中):
oc registry login -z builder
还请记住,在集群中,builder
ServiceAccount 可以使用名为 builder-dockercfg-zftv4
.
的 Secret 访问映像注册表
如果您仍然 want/need 使用 oc
以外的其他方式登录(例如使用某些不处理 ~/.docker/config.json
的工具),则以服务帐户,您需要将用户名更改为完全限定的 ServiceAccount 名称,但将冒号替换为连字符。
例如如果你有一个名为 my-project
的项目,它有一个 builder
ServiceAccount,那么 Kubernetes 中的完全限定名称将是:
system:serviceaccount:my-project:builder
但作为 OpenShift 中集群内注册表的注册表用户名,它将是:
system-serviceaccount-my-project-builder
我目前正在尝试使用项目默认服务帐户“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
如果您想以 builder
等 ServiceAccount 身份登录(如果这不是您使用 oc
登录的用户,您可以使用 -z
选项(假设您在 ServiceAccount 所在的项目中):
oc registry login -z builder
还请记住,在集群中,builder
ServiceAccount 可以使用名为 builder-dockercfg-zftv4
.
如果您仍然 want/need 使用 oc
以外的其他方式登录(例如使用某些不处理 ~/.docker/config.json
的工具),则以服务帐户,您需要将用户名更改为完全限定的 ServiceAccount 名称,但将冒号替换为连字符。
例如如果你有一个名为 my-project
的项目,它有一个 builder
ServiceAccount,那么 Kubernetes 中的完全限定名称将是:
system:serviceaccount:my-project:builder
但作为 OpenShift 中集群内注册表的注册表用户名,它将是:
system-serviceaccount-my-project-builder