第 9 章 将 Red Hat Quay 与 Bridge Operator 集成
使用 Quay Bridge Operator,您可以将 OpenShift 中的集成容器 registry 替换为 Red Hat Quay registry。通过这样做,集成的 OpenShift registry 变得高度可用,企业级 Red Hat Quay registry,具有增强的基于角色的访问控制(RBAC)功能。
Bridge Operator 的主要目标是将集成的 OpenShift registry 的功能复制到新的 Red Hat Quay registry 中。此 Operator 启用的功能包括:
作为 Red Hat Quay 组织同步 OpenShift 命名空间。
- 为每个默认命名空间服务帐户创建 Robot 帐户
- 为每个创建的 Robot 帐户创建机密(将每个 Robot Secret 合并到一个服务帐户,作为可挂载和 Image Pull Secret)
- 同步 OpenShift ImageStreams 作为 Quay 存储库
- 自动重写新构建以使用 ImageStreams 输出到 Red Hat Quay
- 构建完成后会自动导入 ImageStream 标签
通过 Quay Bridge Operator 使用此流程,您可以在 Red Hat Quay 和 OpenShift 集群间启用双向通信。
9.1. 运行 Quay Bridge Operator
9.1.1. 先决条件
在设置 Bridge Operator 前,请保留以下内容:
- 具有超级用户权限的现有 Red Hat Quay 环境
- 具有集群管理员权限的 Red Hat OpenShift Container Platform 环境(4.2 或更高版本)
-
OpenShift 命令行工具(
oc
命令)
9.1.2. 设置和配置 OpenShift 和 Red Hat Quay
Red Hat Quay 和 OpenShift 配置都是必需的:
9.1.3. Red Hat Quay 设置
创建一个专用的 Red Hat Quay 组织,并从该机构中创建的新应用程序,生成与 OpenShift 中的 Quay Bridge Operator 搭配使用的 OAuth 令牌
- 以具有超级用户访问权限的用户身份登录 Red Hat Quay,再选择要为其配置外部应用程序的组织。
- 在左侧导航中,选择 Applications。
-
选择
Create New Application
并输入新应用的名称(如openshift
)。 - 显示新应用程序后,将其选中。
-
在左侧导航中,选择
Generate Token
以创建新的 OAuth2 令牌。 - 选择所有复选框,授予集成所需的访问权限。
-
检查分配的权限,然后选择
Authorize Application
,然后进行确认。 - 复制并保存要在下一节中使用的生成的 Access Token。
9.1.4. OpenShift 设置
为 Quay Bridge Operator 设置 OpenShift 需要几个步骤,包括:
9.1.4.1. 部署 Operator
部署 Operator 的最快方法是从 OperatorHub 部署。从 OpenShift Web 控制台中的 Administrator 视角,导航到 Operators 选项卡,然后选择 OperatorHub。
搜索 Quay Bridge Operator,然后选择 Install。
选择一个 Approval Strategy,然后选择 Install,它将 Operator 部署到集群中。
9.1.4.2. 为 OAuth 令牌创建 OpenShift secret
Operator 将使用前面获取的 Access Token 与 Quay 通信。将此令牌存储在 OpenShift 中,作为机密。
执行以下命令,在 openshift-operators
命名空间中创建一个名为 quay-integration
的 secret,其键
包含访问令牌:
$ oc create secret -n openshift-operators generic quay-integration --from-literal=token=<access_token>
9.1.4.3. 创建 QuayIntegration 自定义资源
最后,为了完成 OpenShift 和 Quay 之间的集成,需要创建 QuayIntegration
自定义资源。这可以在 Web 控制台中或命令行完成。
quay-integration.yaml
apiVersion: quay.redhat.com/v1 kind: QuayIntegration metadata: name: example-quayintegration spec: clusterID: openshift 1 credentialsSecret: namespace: openshift-operators name: quay-integration2 quayHostname: https://<QUAY_URL> 3 insecureRegistry: false 4
创建 QuayIntegration
自定义资源:
$ oc create -f quay-integration.yaml
此时会创建 Quay 集成资源,将 OpenShift 集群链接到 Red Hat Quay 实例。Quay 中的机构应该从 OpenShift 环境为相关的命名空间创建