2.4. 升级 QuayEcosystem
从以前的 Operator 版本升级中支持使用 QuayEcosystem
API 进行有限的配置。为确保迁移不会意外发生,需要将一个特殊标签应用于 QuayEcosystem
,以便其迁移。将为 Operator 创建一个新的 QuayRegistry
,但旧的 QuayEcosystem
将保留下来,直到手动删除以确保您可以回滚并继续访问 Quay。要将现有 QuayEcosystem
迁移到新的 QuayRegistry
中,请按照以下步骤操作:
将
"quay-operator/migrate": "true"
添加到QuayEcosystem
的metadata.labels
中。oc edit quayecosystem <quayecosystemname>
$ oc edit quayecosystem <quayecosystemname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow metadata: labels: quay-operator/migrate: "true"
metadata: labels: quay-operator/migrate: "true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
等待使用与
QuayEcosystem
相同的metadata.name
创建QuayRegistry
。QuayEcosystem
将被标记为"quay-operator/migration-complete": "true"
的标签。 -
设置了新的
QuayRegistry
的status.registryEndpoint
后,访问 Quay 并确认所有数据和设置都已成功迁移。 -
当您确信一切正常时,您可以删除
QuayEcosystem
和 Kubernetes 垃圾回收会清理所有旧资源。
2.4.1. 恢复 QuayEcosystem 升级 复制链接链接已复制到粘贴板!
如果在从 QuayEcosystem
自动升级到 QuayRegistry
时出现某种错误,请按照以下步骤恢复到使用 QuayEcosystem
:
使用 UI 或
kubectl
删除QuayRegistry
:kubectl delete -n <namespace> quayregistry <quayecosystem-name>
$ kubectl delete -n <namespace> quayregistry <quayecosystem-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果使用
Route
提供外部访问,将Route
更改为指回原始的Service
(使用 UI 或kubectl
)。
如果您的 QuayEcosystem
是管理 Postgres 数据库,升级过程会将您的数据迁移到升级的 Operator 管理的新 Postgres 数据库。您的旧数据库不会被更改或删除,但在迁移完成后 Quay 将不再使用它。如果数据迁移过程中出现问题,升级过程将退出,建议继续使用数据库作为非受管组件。
2.4.2. 支持的 QuayEcosystem 配置升级 复制链接链接已复制到粘贴板!
如果迁移 QuayEcosystem
组件失败或不支持,Quay Operator 会在日志中报告错误,并在 status.conditions
中报告错误。所有非受管组件都应成功迁移,因为不需要使用 Kubernetes 资源,并且 Quay config.yaml
中已经提供了所有必要的值。
数据库
不支持临时数据库(必须设置volumeSize
字段)。
Redis
不需要任何特别要求。
外部访问
自动迁移只支持 passthrough Route
访问。其他方法所需的手动迁移。
-
没有自定义主机名的
LoadBalancer
:当QuayEcosystem
使用标签"quay-operator/migration-complete": "true"
标记后,在删除QuayEcosystem
前需要从现存的Service
中删除metadata.ownerReferences
字段,这可以防止 Kubernetes 对Service
进行垃圾回收并并删除负载均衡器。一个新的Service
将被创建,带有metadata.name
格式<QuayEcosystem-name>-quay-app
。编辑现有Service
的spec.selector
,使其与新Service
的spec.selector
匹配,以便进入旧负载均衡器端点的流量现在会被定向到新的 pod。您现在负责旧Service
;Quay Operator 将不管理它。 -
带有自定义主机名的
LoadBalancer
/NodePort
/Ingress
:将创建一个类型为LoadBalancer
的新的Service
,带有metadata.name
格式<QuayEcosystem-name>-quay-app
。将您的 DNS 设置更改为指向由新Service
提供的status.loadBalancer
端点。
Clair
不需要任何特别要求。
对象存储
QuayEcosystem
没有受管对象存储组件,因此对象存储始终被标记为非受管。不支持本地存储。
存储库镜像
不需要任何特别要求。