5.4. 管理对软件仓库的访问
作为 Quay.io 用户,您可以创建自己的存储库,并使其可以被属于实例的其他用户访问。或者,您可以创建特定的机构,以允许根据定义的团队访问存储库。
在 User 和 Organization 存储库中,您可以通过创建与 Robot 帐户关联的凭证来允许访问这些存储库。机器人帐户使得各种容器客户端(如 Docker 或 Podman)很容易访问您的存储库,而无需客户端具有 Quay.io 用户帐户。
5.4.1. 允许访问用户软件仓库 复制链接链接已复制到粘贴板!
在用户命名空间中创建存储库时,您可以将对该存储库的访问权限添加到用户帐户或通过 Robot Accounts 添加。
5.4.1.1. 允许用户访问用户存储库 复制链接链接已复制到粘贴板!
使用以下步骤允许访问与用户帐户关联的存储库。
流程
- 使用您的用户帐户登录到 Quay.io。
- 在用户命名空间下选择一个将在多个用户间共享的存储库。
- 在导航窗格中选择 Settings。
键入您要授予存储库访问权限的用户名。当您键入时,名称应当为。例如:
在权限框中,选择以下之一:
- 阅读。允许用户从存储库查看和拉取。
- 写入。允许用户查看存储库、从存储库拉取镜像或将镜像推送到存储库。
- 管理员.为用户提供存储库的所有管理设置,以及所有 读和写 权限。
- 选择 Add Permission 按钮。用户现在具有分配的权限。
- 可选。您可以选择 Options 图标,然后选择 Delete Permission 来删除或更改存储库的权限。
5.4.1.2. 允许机器人访问用户存储库 复制链接链接已复制到粘贴板!
机器人帐户用于设置 Quay.io 注册表中存储库的自动化访问权限。它们与 OpenShift Container Platform 服务帐户类似。
设置 Robot 帐户结果如下:
- 生成与 Robot 帐户关联的凭据。
- 可识别 Robot 帐户可以从中推送和拉取镜像的存储库和镜像。
- 可以复制和粘贴生成的凭据,以用于不同的容器客户端,如 Docker、Podman、Kubernetes、Msos 等,以访问每个定义的存储库。
每个 Robot 帐户都仅限于单个用户命名空间或机构。例如,Robot 帐户可以为用户提供 jsmith
的所有存储库的访问权限。但是,它无法提供对不在用户存储库列表中的存储库的访问。
使用以下步骤设置允许访问您的存储库的 Robot 帐户。
流程
- 在 Repositories 登录页面上,单击用户的名称。
- 在导航窗格上,单击 Robot Accounts。
- 单击 Create Robot Account。
- 为您的 Robot 帐户提供名称。
- 可选。为您的 Robot 帐户提供描述。
-
单击 Create Robot Account。Robot 帐户的名称成为您的用户名以及机器人的名称的组合,如
jsmith+robot
- 选择您要与 Robot 帐户关联的存储库。
将 Robot 帐户的权限设置为以下之一:
- None。Robot 帐户没有存储库的权限。
- 阅读。Robot 帐户可以从存储库查看和拉取。
- 写入。Robot 帐户可以从存储库读取(拉取)并写入(push)到存储库。
- 管理员.从存储库拉取和推送到存储库的完整访问权限,以及执行与存储库关联的管理任务。
- 点 Add permissions 按钮应用设置。
- 在 Robot Accounts 页面上,选择 Robot Account 以查看该人的凭据信息。
在 Robot Account 选项下,单击 Copy to Clipboard,为机器人复制生成的令牌。要生成新的令牌,您可以点 Regenerate Token。
注意重新生成令牌会使此机器人的任何以前的令牌无效。
使用以下方法获取生成的凭证:
- Kubernetes Secret: 选择此项以 Kubernetes pull secret yaml 文件的形式下载凭证。
-
rkt Configuration :选择此项以
.json
文件的形式下载 rkt 容器运行时的凭证。 -
docker Login :选择此项以复制包含凭据的完整
docker login
命令行。 -
docker Configuration :选择此项以下载用作 Docker
config.json
文件的文件,以将凭证永久存储在客户端系统上。 - Mesos Credentials: 选择此项下载一个 tarball,它提供可在 Mesos 配置文件的 URI 字段中标识的凭证。
5.4.2. 机构软件仓库 复制链接链接已复制到粘贴板!
创建机构后,您可以将一组存储库直接关联到该机构。机构的存储库与基本存储库不同,组织旨在通过一组用户设置共享存储库。在 Quay.io 中,用户组可以是 团队,也可以是具有相同权限的用户集合,也可以是 单独的用户。
有关机构的其他有用信息包括:
- 您不能将机构嵌入到另一个机构中。要从属一个机构,您可以使用团队。
机构无法直接包含用户。您必须首先添加一个团队,然后为每个团队添加一个或多个用户。
注意单个用户可以添加到机构内部的特定存储库中。因此,这些用户不是 Repository Settings 页面中任何团队的成员。Teams 和 Memberships 页面上的 Collaborat ors View 显示有权直接访问机构中特定存储库的用户,而无需成为该组织的一部分。
- 团队可以在机构中设置,就像使用存储库和相关镜像的成员一样,或者作为具有特殊权限的管理员来管理组织的管理员。
5.4.2.1. 创建机构 复制链接链接已复制到粘贴板!
使用以下步骤创建机构。
流程
- 在 Repositories 登录页面上,单击 Create New Organization。
- 在 Organization Name 下,输入至少 2 个字符长且小于 225 个字符的名称。
- 在 组织电子邮件 下,输入与您帐户电子邮件不同的电子邮件。
- 为您的组织选择一个计划,选择免费计划,或者选择付费计划之一。
- 点 Create Organization 以完成创建。
5.4.2.1.1. 使用 API 创建另一个机构 复制链接链接已复制到粘贴板!
您可以使用 API 创建另一个机构。为此,您必须使用 UI 创建了第一个机构。您还必须已生成 OAuth 访问令牌。
使用以下步骤使用 Red Hat Quay API 端点创建另一个机构。
先决条件
- 您至少已使用 UI 创建了一个机构。
- 您已生成了 OAuth 访问令牌。如需更多信息,请参阅"创建 OAuth 访问令牌"。
流程
输入以下命令创建一个名为
data.json
的文件:touch data.json
$ touch data.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件中添加以下内容,这将是新机构的名称:
{"name":"testorg1"}
{"name":"testorg1"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用 API 端点创建新机构,传递您的 OAuth Access Token 和 Red Hat Quay registry 端点:
curl -X POST -k -d @data.json -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" http://<quay-server.example.com>/api/v1/organization/
$ curl -X POST -k -d @data.json -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" http://<quay-server.example.com>/api/v1/organization/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.2. 将团队添加到机构 复制链接链接已复制到粘贴板!
为您的机构创建团队时,您可以选择团队名称,选择哪些存储库可供团队使用,并决定对团队的访问权限级别。
使用以下步骤为您的机构创建团队。
先决条件
- 您已创建了一个机构。
流程
- 在 Repositories 登录页面上,选择要向其添加团队的组织。
- 在导航窗格中,选择 Teams 和 Membership。默认情况下,所有者 团队存在,具有创建该组织的用户的 Admin 特权。
- 单击 Create New Team。
- 输入新团队的名称。请注意,团队必须以小写开头。它还可以使用小写字母和数字。不允许大写字母或特殊字符。
- 点 Create team。
- 点要重定向到团队页面的 团队 名称。在这里,您可以添加团队的描述,并添加团队成员,如注册的用户、机器人或电子邮件地址。如需更多信息,请参阅"将用户添加到团队"。
- 单击 No repositories 文本,以调出可用存储库的列表。选择您要提供团队访问权限的每个存储库的方框。
选择您希望团队具有的适当权限:
- None。团队成员没有对存储库的权限。
- 阅读。团队成员可以从存储库查看和拉取。
- 写入。团队成员可以从存储库读取(拉取)并写入(推送)到存储库。
- 管理员.从存储库拉取和推送到存储库的完整访问权限,以及执行与存储库关联的管理任务。
- 点 Add permissions 保存团队的存储库权限。
5.4.2.3. 设置团队角色 复制链接链接已复制到粘贴板!
添加团队后,您可以在机构中设置该团队的角色。
先决条件
- 您已创建了团队。
流程
- 在 Repository 登录页面上,点您的机构名称。
- 在导航窗格中,单击 Teams 和 Membership。
选择 TEAM ROLE 下拉菜单,如下图所示:
对于所选团队,请选择以下角色之一:
- 成员.继承为团队设置的所有权限。
- 创建者.所有成员权限,以及创建新存储库的能力。
- 管理员.对机构的完整管理访问权限,包括创建团队、添加成员和设置权限的能力。
5.4.2.4. 将用户添加到团队 复制链接链接已复制到粘贴板!
使用组织的管理特权,您可以将用户和机器人帐户添加到团队中。当您添加用户时,Quay.io 会向该用户发送电子邮件。用户会一直处于待处理状态,直到他们接受邀请。
使用以下步骤将用户或机器人帐户添加到团队中。
流程
- 在 Repository 登录页面上,点您的机构名称。
- 在导航窗格中,单击 Teams 和 Membership。
- 选择您要将用户添加到的团队或机器人帐户。
在 Team Members 框中,为以下之一输入信息:
- 来自 registry 上帐户的用户名。
- registry 上用户帐户的电子邮件地址。
机器人帐户的名称。名称必须采用 <organization_name>+<robot_name> 的形式。
注意机器人帐户会立即添加到团队。对于用户帐户,加入的邀请将发送给用户。在用户接受该邀请前,用户仍然处于 INVITED TO JOIN 状态。用户接受电子邮件邀请加入团队后,他们会从 INVITED TO JOIN 列表移到机构的 MEMBERS 列表。