This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.4. 使用镜像 pull secret
如果您在使用 OpenShift Container Platform 的内部 registry,且从位于同一项目中的镜像流拉取(pull),则您的 Pod 服务帐户应已具备正确权限,且无需额外操作。
然而,对于其他场景,例如在 OpenShift Container Platform 项目间或从安全 registry 引用镜像,则还需其他配置步骤。
5.4.1. 允许 Pod 在项目间引用镜像 复制链接链接已复制到粘贴板!
使用内部 registry 时,为允许 project-a 中的 Pod 引用 project-b 中的镜像,project-a 中的服务帐户必须绑定到 project-b 中的 system:image-puller
角色。
流程
要允许 project-a 中的 Pod 引用 project-b 中的镜像,请将 project-a 中的服务帐户绑定到 project-b 中的
system:image-puller
角色。oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
$ oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加该角色后,project-a 中引用默认服务帐户的 pod 能够从 project-b 拉取(pull)镜像。
要允许访问 project-a 中的任意服务帐户,请使用组:
oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
$ oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2. 允许 Pod 引用其他安全 registry 中的镜像 复制链接链接已复制到粘贴板!
Docker 客户端的 .dockercfg
$HOME/.docker/config.json
文件是一个 Docker 凭证文件,如果您之前已登录安全或不安全的 registry,则该文件会保存您的身份验证信息。
要拉取(pull)并非来自 OpenShift Container Platform 内部 registry 的安全容器镜像,您必须从 Docker 凭证创建一个 pull secret,并将其添加到您的服务帐户。
流程
如果您已有该安全 registry 的
.dockercfg
文件,则可运行以下命令从该文件中创建一个 secret:oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果您已有
$HOME/.docker/config.json
文件,则可运行以下命令:oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您还没有安全 registry 的 Docker 凭证文件,则可运行以下命令创建一个 secret:
oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 secret 为 Pod 拉取(pull)镜像,您必须将该 secret 添加到您的服务帐户。本例中服务帐户的名称应与 Pod 所用服务帐户的名称匹配。
default
是默认服务帐户:oc secrets link default <pull_secret_name> --for=pull
$ oc secrets link default <pull_secret_name> --for=pull
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用 secret 来推送(push)和拉取(pull)构建镜像,该 secret 必须可挂载至 Pod 中。您可通过运行以下命令实现这一目的:
oc secrets link builder <pull_secret_name>
$ oc secrets link builder <pull_secret_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.1. 通过委托身份验证从私有 registry 拉取(pull) 复制链接链接已复制到粘贴板!
私有 registry 可将身份验证委托给单独服务。这种情况下,必须为身份验证和 registry 端点定义镜像 pull secret。
流程
为委托的身份验证服务器创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为私有 registry 创建 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3. 更新全局集群 pull secret 复制链接链接已复制到粘贴板!
您可为集群更新全局 pull secret。
集群资源必须调整为新的 pull secret,这样可暂时限制集群的可用性。
先决条件
- 您有新的或修改的 pull secret 文件可上传。
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
运行以下命令为您的集群更新全局 pull secret:
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull-secret-location>
$ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull-secret-location>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 提供新 pull secret 文件的路径。
该更新将推广至所有节点,可能需要一些时间,具体取决于集群大小。在这段时间中,节点会排空,Pod 将在剩余节点上重新调度。