第 6 章 访问并配置 Red Hat Registry


6.1. 启用身份验证的 Red Hat Registry

Red Hat Container Catalog (registry.access.redhat.com)是一个托管的镜像 registry,通过它可以获得所需的容器镜像。OpenShift Container Platform 3.11 Red Hat Container Catalog 从 registry.access.redhat.com 移到 registry.redhat.io

新的 registry(Registry.redhat.io)需要进行身份验证才能访问OpenShift Container Platform上的镜像及内容。当迁移到新registry后,现有的registry仍将在一段时间内可用。

注意

OpenShift Container Platform从Registry.redhat.io中提取(pull)镜像,因此需要配置集群以使用它。

新registry使用标准的OAuth机制进行身份验证:

  • 身份验证令牌。令牌(token)是服务帐户,由管理员生成。系统可以使用它们与容器镜像registry进行身份验证。服务帐户不受用户帐户更改的影响,因此使用令牌进行身份验证是一个可靠且具有弹性的方法。这是生产环境集群中唯一受支持的身份验证选项。
  • Web用户名和密码。这是用于登录到诸如access.redhat.com之类的资源的标准凭据集。虽然可以在OpenShift Container Platform上使用此身份验证方法,但在生产环境部署中不支持此方法。此身份验证方法应该只限于在OpenShift Container Platform之外的独立项目中使用。

您可以在 docker login 中使用您的凭证(用户名和密码,或身份验证令牌)来访问新 registry 中的内容。

所有镜像流均指向新的registry。由于新 registry 需要进行身份验证才能访问,因此 OpenShift 命名空间中有一个名为 imagestreamsecret 的新机密。

您需要将凭据放在两个位置:

  • OpenShift 命名空间 。您的凭据必须存在于 OpenShift 命名空间中,以便 OpenShift 命名空间中的镜像流可以导入。
  • 您的主机。您的凭据必须存在于主机上,因为在抓取(pull)镜像时,Kubernetes会使用主机中的凭据。

访问新 registry:

  • 验证镜像导入 secret( imagestreamsecret )是否位于 OpenShift 命名空间中。该 secret 具有允许您访问新 registry 的凭证。
  • 验证所有集群节点都有一个 /var/lib/origin/.docker/config.json,可以从 master 中复制,供您访问红帽 registry。

6.1.1. 创建用户帐户

如果您是有权使用红帽产品的红帽客户,则拥有具有适用用户凭证的帐户。这些是您用于登录到红帽客户门户的用户名和密码。

如果您没有帐户,可以通过注册以下选项之一获取免费帐户:

6.1.2. 为 Red Hat Registry 创建服务帐户和身份验证令牌

如果您的组织管理共享帐户,则必须创建令牌。管理员可以创建、查看和删除与组织关联的所有令牌。

先决条件

  • 用户凭证

流程

要创建令牌以完成 docker login,请执行以下操作 :

  1. 导航到 registry.redhat.io
  2. 使用您的红帽网络(RHN)用户名和密码登录。
  3. 出现提示时接受条款.

    • 如果未立即提示您接受条款,则在继续以下步骤时会提示您。
  4. Registry Service Accounts 页面中点 Create Service Account

    1. 为服务帐户提供名称。它将带有一个随机字符串。
    2. 输入描述。
    3. 单击 create。
  5. 切回到您的服务帐户。
  6. 点您创建的服务帐户。
  7. 复制用户名,包括前缀字符串。
  8. 复制令牌。

6.1.3. 管理用于安装和升级的 registry 凭证

您还可以在安装过程中使用 Ansible 安装程序管理 registry 凭据。

这将设置以下内容:

  • OpenShift 命名空间中的 imagestreamsecret
  • 所有节点上的凭据。

当您将 registry.redhat.io 的默认值用于 openshift_examples_registryurloreg_url 时,Ansible 安装程序将需要凭证。

先决条件

  • 用户凭证
  • 服务帐户
  • 服务帐户令牌

流程

要在安装过程中使用 Ansible 安装程序管理 registry 凭证:

  • 在安装或升级过程中,指定安装程序清单中的 oreg_auth_useroreg_auth_password 变量。
注意

如果您已创建了令牌,请将 oreg_auth_password 设置为令牌的值。

需要访问其他经过身份验证的 registry 的集群可以通过设置 openshift_additional_registry_credentials 来配置 registry 列表。每个 registry 都需要主机和密码值,您可以通过设置用户来指定用户名。默认情况下,通过尝试检查指定 registry 上的镜像 openshift3/ose-pod 来验证指定的凭证。

要指定备用镜像,请执行以下操作:

  • 设置 test_image
  • 通过将 test_login 设置为 False 来禁用凭据验证。

如果 registry 不安全,则将 tls_verify 设置为 False。

此列表中的所有凭据都将在 OpenShift 命名空间中创建 imagestreamsecret,并部署到所有节点的凭据。

例如:

openshift_additional_registry_credentials=[{'host':'registry.example.com','user':'name','password':'pass1','test_login':'False'},{'host':'registry2.example.com','password':'token12345','tls_verify':'False','test_image':'mongodb/mongodb'}]

6.1.4. 在 Red Hat Registry 中使用服务帐户

在为 Red Hat Registry 创建服务帐户和生成的令牌后,您可以执行其他任务。

注意

本节提供了手动步骤,可以通过提供 管理 registry Credentials for Installation 和 Upgrade 部分中概述的清单变量来自动执行这些步骤。

先决条件

  • 用户凭证
  • 服务帐户
  • 服务帐户令牌

流程

Registry Service Accounts 页面中点击您的帐户名称。在这里,您可以执行以下任务:

  • Token Information 选项卡中,您可以查看您的用户名(您提供的带有随机字符串的名称)和密码(令牌)。在此选项卡中,您可以重新生成令牌。
  • OpenShift Secret 选项卡中,您可以:

    1. 单击选项卡中的链接,以下载该机密。
    2. 将 secret 提交到集群:

      # oc create -f <account-name>-secret.yml --namespace=openshift
    3. 使用 imagePullSecrets 字段在 Kubernetes pod 配置中添加对 secret 的引用来更新 Kubernetes 配置,例如:

      apiVersion: v1
      kind: Pod
      metadata:
        name: somepod
        namespace: all
        spec:
          containers:
            - name: web
            image: registry.redhat.io/REPONAME
      
          imagePullSecrets:
            - name: <numerical-string-account-name>-pull-secret
  • Docker Login 选项卡中,您可以运行 docker login。例如:

    # docker login -u='<numerical-string|account-name>'
      -p=<token>

    成功登录后,将 ~/.docker/config.json 复制到 /var/lib/origin/.docker/config.json,然后重新启动节点。

    # cp -r ~/.docker /var/lib/origin/
      systemctl restart atomic-openshift-node
  • Docker Configuration 选项卡中,您可以:

    1. 单击选项卡中的链接,下载凭据配置。
    2. 通过将文件放入 Docker 配置目录中,将配置写入到磁盘。这将覆盖现有的凭据。例如:

      # mv <account-name>-auth.json ~/.docker/config.json
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.