15.4. 使用 Red Hat Quay Operator 的 geo-replication
在上例中,Red Hat Quay Operator 部署到两个独立的区域中,具有通用数据库和通用 Redis 实例。每个地区和镜像拉取都提供了本地化镜像存储,可从最接近的可用存储引擎提供。容器镜像推送会写入 Quay 实例的首选存储引擎,然后在后台将复制到其他存储引擎。
因为 Operator 现在单独管理 Clair 安全扫描程序及其数据库,所以可以利用异地复制设置,以便它们不管理 Clair 数据库。相反,将使用外部共享数据库。Red Hat Quay 和 Clair 支持多个 PostgreSQL 供应商和供应商,可在 Red Hat Quay 3.x 测试列表中找到。另外,Operator 还支持可注入到部署中的自定义 Clair 配置,允许用户使用外部数据库的连接凭据配置 Clair。
15.4.1. 在 Openshift 中设置 geo-replication 复制链接链接已复制到粘贴板!
流程
部署 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 实例可能会不需要。
- 如果要使用 Builders,则需要部署 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 个集群(次要)。
- 使用环境变量覆盖部署具有相同配置捆绑包的集群,为单个集群选择适当的存储后端
- 配置负载均衡器,为集群提供单一入口点
15.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 是非受管,并且路由受管理,因此您必须使用配置工具或直接向配置捆绑包提供证书。如需更多信息,请参阅配置 TLS 和路由。
欧洲集群
+
由于 TLS 是非受管,并且路由受管理,因此您必须使用配置工具或直接向配置捆绑包提供证书。如需更多信息,请参阅配置 TLS 和路由。
15.4.2. 用于异地复制的混合存储 复制链接链接已复制到粘贴板!
Red Hat Quay geo-replication 支持使用不同的和多个复制目标,例如在公有云上使用 AWS S3 存储并在内部使用 Ceph 存储。这会满足关键要求,以便从所有 Red Hat Quay Pod 和集群节点授予对所有存储后端的访问。因此,建议您使用以下方法:
- 用于防止内部存储的可见性的 VPN,或者
- 令牌对,仅允许访问 Red Hat Quay 使用的指定存储桶
这会导致 Red Hat Quay 的公有云实例可以访问内部存储,但网络将被加密、受保护的,并使用 ACL,从而满足安全要求。
如果您无法实施这些安全措施,最好部署两个不同的 Red Hat Quay registry,并使用存储库镜像作为异地复制的替代选择。