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-projectoc create 命令行执行。

创建项目后,会自动创建常规服务帐户(builderdefaultdeployer),以及项目管理员用户被授予权限。不同的用户可以授权推送/提取镜像以及"匿名"用户。

可能存在几个用例,比如允许所有用户从 registry 中的这个新项目拉取镜像,但是如果您想要在 OpenShift Container Platform 和 registry 之间有一个 1:1 项目关系,用户可以在该特定项目中推送和拉取镜像,需要一些步骤。

警告

registry Web 控制台显示要用于拉取/推送操作的令牌,但令牌显示有一个会话令牌,因此它过期。通过创建具有特定权限的服务帐户,管理员可以限制服务帐户的权限,例如:不同的服务帐户可用于推送或拉取镜像。然后,用户不必配置令牌过期时间、secret 重新创建和其他任务,因为服务帐户令牌不会过期。

流程
  1. 创建一个新项目

    $ oc new-project <my_project>
    Copy to Clipboard Toggle word wrap
  2. 创建 registry 项目:

    $ oc new-project <registry_project>
    Copy to Clipboard Toggle word wrap
  3. 在 registry 项目中创建服务帐户:

    $ oc create serviceaccount <my_serviceaccount> -n <registry_project>
    Copy to Clipboard Toggle word wrap
  4. 授予使用 registry-editor 角色推送和拉取镜像的权限:

    $ oc adm policy add-role-to-user registry-editor -z <my_serviceaccount> -n <registry_project>
    Copy to Clipboard Toggle word wrap

    如果只需要拉取权限,则可以使用 registry-viewer 角色。

  5. 获取服务帐户令牌:

    $ TOKEN=$(oc sa get-token <my_serviceaccount> -n <registry_project>)
    Copy to Clipboard Toggle word wrap
  6. 使用令牌作为密码来创建 dockercfg secret:

    $ 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 Toggle word wrap
  7. 通过将 secret 链接到执行 pull 操作的服务帐户,使用 dockercfg secret 从 registry 中拉取镜像。用于拉取镜像的默认服务帐户名为 default

    $ oc secrets link default <my_registry> --for=pull
    Copy to Clipboard Toggle word wrap
  8. 要使用 S2I 功能推送镜像,dockercfg secret 被挂载到 S2I pod 中,因此需要链接到执行该构建的正确服务帐户。用于构建镜像的默认服务帐户名为 builder

    $ oc secrets link builder <my_registry>
    Copy to Clipboard Toggle word wrap
  9. buildconfig 中,应指定 secret 进行 push 或 pull 操作:

    "type": "Source",
    "sourceStrategy": {
        "from": {
            "kind": "DockerImage",
            "name": "<myregistry.example.com/registry_project/my_image:stable>"
        },
        "pullSecret": {
            "name": "<my_registry>"
        },
    ...[OUTPUT ABBREVIATED]...
    "output": {
        "to": {
            "kind": "DockerImage",
            "name": "<myregistry.example.com/registry_project/my_image:latest>"
        },
        "pushSecret": {
            "name": "<my_registry>"
        },
    ...[OUTPUT ABBREVIATED]...
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat