14.4. 使用 Red Hat Quay Operator 进行异地复制
在上面的示例中,Red Hat Quay Operator 部署到两个单独的区域中,带有通用数据库和通用 Redis 实例。本地化的镜像存储在每个区域中提供,从最接近的可用存储引擎提供镜像拉取。容器镜像推送被写入 Quay 实例的首选存储引擎,然后在后台复制到其他存储引擎。
由于 Operator 现在单独管理 Clair 安全扫描程序及其数据库,因此可利用 geo-replication setup,使它们不管理 Clair 数据库。相反,会使用外部共享数据库。Red Hat Quay 和 Clair 支持多种 PostgreSQL 供应商和 PostgreSQL 供应商,它们可在 Red Hat Quay 3.x 测试列表中找到。另外,Operator 还支持可注入到部署中的自定义 Clair 配置,它允许用户使用外部数据库的连接凭据配置 Clair。
14.4.1. 在 Openshift 中设置异地复制 复制链接链接已复制到粘贴板!
流程
部署 Quay postgres 实例:
- 登录到数据库
为 Quay 创建数据库
CREATE DATABASE quay;
CREATE DATABASE quay;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在数据库中启用 pg_trm 扩展
\c quay; CREATE EXTENSION IF NOT EXISTS pg_trgm;
\c quay; CREATE EXTENSION IF NOT EXISTS pg_trgm;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
部署 Redis 实例:
注意- 如果您的云供应商有自己的服务,部署 Redis 实例可能会不需要。
- 如果使用 Builder,则需要部署 Redis 实例。
- 为 Redis 部署虚拟机
- 确保可以从运行 Quay 的集群进行访问
- 端口 6379/TCP 必须被打开
在实例内运行 Redis
sudo dnf install -y podman podman run -d --name redis -p 6379:6379 redis
sudo dnf install -y podman podman run -d --name redis -p 6379:6379 redis
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建两个对象存储后端,每个集群一个
理想情况下,一个对象存储存储桶接近于第 1 个集群(主设备),其它接近第 2 个集群(次要)。
- 使用环境变量覆盖部署具有相同配置捆绑包的集群,为单个集群选择适当的存储后端
- 配置负载均衡器,为集群提供单一入口点
14.4.1.1. 配置 复制链接链接已复制到粘贴板!
config.yaml
文件在集群间共享,并将包含常见 PostgreSQL、Redis 和存储后端的详情:
config.yaml
- 1
- 必须使用正确的
SERVER_HOSTNAME
作为路由,且必须与全局负载均衡器的主机名匹配。 - 2
- 要检索使用 OpenShift Operator 部署的 Clair 实例的配置文件,请参阅检索 Clair 配置。
创建 configBundleSecret
:
oc create secret generic --from-file config.yaml=./config.yaml georep-config-bundle
$ oc create secret generic --from-file config.yaml=./config.yaml georep-config-bundle
在每个集群中,设置 configBundleSecret
并使用 QUAY_DISTRIBUTED_STORAGE_PREFERENCE
环境变量覆盖来为集群配置适当的存储:
两个部署之间的 config.yaml
文件都必须匹配。如果对一个集群进行更改,则必须同时更改它。
美国集群
+
由于 TLS 为非受管,且路由是受管的,所以您必须使用 config 工具或直接在 config 捆绑包中提供证书。如需更多信息,请参阅配置 TLS 和路由。
欧洲集群
+
由于 TLS 为非受管,且路由是受管的,所以您必须使用 config 工具或直接在 config 捆绑包中提供证书。如需更多信息,请参阅配置 TLS 和路由。
14.4.2. 跨地域复制的混合存储 复制链接链接已复制到粘贴板!
Red Hat Quay geo-replication 支持使用不同的和多个复制目标,例如:在公有云上使用 AWS S3 存储,并使用之前的 Ceph 存储。这简化了授予所有 Red Hat Quay Pod 和集群节点访问所有存储后端的关键要求。因此,建议您:
- 使用 VPN 防止内部存储的可见性 或
- 使用仅允许访问 Quay 使用的指定存储桶的令牌对
这将使 Red Hat Quay 的公有云实例可以访问预先存储,但网络将被加密、保护和使用 ACL,从而满足安全要求。
如果您无法实现这些安全措施,最好部署两个不同的 Red Hat Quay registry,并使用存储库镜像作为异地复制的替代。