7.3.8. OpenShift Container Platform registry 集成
您可以将 OpenShift Container Platform 安装为独立容器镜像 registry,以仅提供 registry 功能,但具有在 OpenShift Container Platform 平台中运行的优点。
如需有关 OpenShift Container Platform registry 的更多信息,请参阅安装独立 OpenShift Container Registry 部署。
要集成 OpenShift Container Platform registry,前面所有部分都适用。从 OpenShift Container Platform 的视角来看,它被视为外部 registry,但有些额外的任务需要执行,因为它是一个多租户 registry,OpenShift Container Platform 中的授权模型会应用,因此在创建新项目时,registry 不会在其环境中创建项目。
7.3.8.1. 将 registry 项目与集群连接
						因为 registry 是一个包括 registry pod 和 Web 界面的完整 OpenShift Container Platform 环境,所以在 registry 中创建一个新项目,或使用 oc new-project 或 oc create 命令行执行。
					
						创建项目后,会自动创建常规服务帐户(builder、default 和 deployer),以及项目管理员用户被授予权限。不同的用户可以授权推送/提取镜像以及"匿名"用户。
					
可能存在几个用例,比如允许所有用户从 registry 中的这个新项目拉取镜像,但是如果您想要在 OpenShift Container Platform 和 registry 之间有一个 1:1 项目关系,用户可以在该特定项目中推送和拉取镜像,需要一些步骤。
registry Web 控制台显示要用于拉取/推送操作的令牌,但令牌显示有一个会话令牌,因此它过期。通过创建具有特定权限的服务帐户,管理员可以限制服务帐户的权限,例如:不同的服务帐户可用于推送或拉取镜像。然后,用户不必配置令牌过期时间、secret 重新创建和其他任务,因为服务帐户令牌不会过期。
流程
- 创建一个新项目 - oc new-project <my_project> - $ oc new-project <my_project>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 registry 项目: - oc new-project <registry_project> - $ oc new-project <registry_project>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 registry 项目中创建服务帐户: - oc create serviceaccount <my_serviceaccount> -n <registry_project> - $ oc create serviceaccount <my_serviceaccount> -n <registry_project>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 授予使用 - registry-editor角色推送和拉取镜像的权限:- oc adm policy add-role-to-user registry-editor -z <my_serviceaccount> -n <registry_project> - $ oc adm policy add-role-to-user registry-editor -z <my_serviceaccount> -n <registry_project>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果只需要拉取权限,则可以使用 - registry-viewer角色。
- 获取服务帐户令牌: - TOKEN=$(oc sa get-token <my_serviceaccount> -n <registry_project>) - $ TOKEN=$(oc sa get-token <my_serviceaccount> -n <registry_project>)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用令牌作为密码来创建 - dockercfgsecret:- oc create secret docker-registry <my_registry> \ --docker-server=<myregistry.example.com> --docker-username=<notused> --docker-password=${TOKEN} --docker-email=<me@example.com>- $ oc create secret docker-registry <my_registry> \ --docker-server=<myregistry.example.com> --docker-username=<notused> --docker-password=${TOKEN} --docker-email=<me@example.com>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过将 secret 链接到执行 pull 操作的服务帐户,使用 - dockercfgsecret 从 registry 中拉取镜像。用于拉取镜像的默认服务帐户名为- default:- oc secrets link default <my_registry> --for=pull - $ oc secrets link default <my_registry> --for=pull- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要使用 S2I 功能推送镜像, - dockercfgsecret 被挂载到 S2I pod 中,因此需要链接到执行该构建的正确服务帐户。用于构建镜像的默认服务帐户名为- builder:- oc secrets link builder <my_registry> - $ oc secrets link builder <my_registry>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 - buildconfig中,应指定 secret 进行 push 或 pull 操作:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow