7.3. 升级 Red Hat Quay Operator 的 geo-replication 部署

使用以下步骤升级地理复制的 Red Hat Quay Operator。

重要
  • 当将 geo-replicated Red Hat Quay Operator 部署升级到下一个 y-stream 版本(例如,Red Hat Quay 3.7 → Red Hat Quay 3.8),您必须在升级前停止操作。
  • 故障时间从一个 y-stream 版本升级到下一个版本会间歇性。
  • 在升级前,强烈建议您备份 Red Hat Quay Operator 部署。
步骤

此流程假设您在三个(或更多)系统上运行 Red Hat Quay Operator。对于此过程,我们将假设三个名为 System A、 System BSystem C 的系统。系统 A 将充当部署 Red Hat Quay Operator 的主要系统。

  1. 在 System B 和 System C 上,缩减您的 Red Hat Quay Operator 部署。这可以通过禁用自动扩展并覆盖 Red Hat Quay、镜像 worker 和 Clair 的副本计数(如果被管理)来实现。使用以下 quayregistry.yaml 文件作为参考:

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      name: registry
      namespace: ns
    spec:
      components:
        …
        - kind: horizontalpodautoscaler
          managed: false 1
        - kind: quay
          managed: true
          overrides: 2
            replicas: 0
        - kind: clair
          managed: true
          overrides:
            replicas: 0
        - kind: mirror
          managed: true
          overrides:
            replicas: 0
        …
    1
    禁用 Quay、Clair 和 mirroring worker 的自动扩展
    2
    将访问数据库和对象的组件的副本数设置为 0
    注意

    您必须保留在 System A 上运行的 Red Hat Quay Operator。不要更新 System A 上的 quayregistry.yaml 文件。

  2. 等待 registry-quay-appregistry-quay-mirrorregistry-clair-app pod 消失。输入以下命令检查其状态:

    oc get pods -n <quay-namespace>

    输出示例

    quay-operator.v3.7.1-6f9d859bd-p5ftc               1/1     Running     0             12m
    quayregistry-clair-postgres-7487f5bd86-xnxpr       1/1     Running     1 (12m ago)   12m
    quayregistry-quay-app-upgrade-xq2v6                0/1     Completed   0             12m
    quayregistry-quay-config-editor-6dfdcfc44f-hlvwm   1/1     Running     0             73s
    quayregistry-quay-redis-84f888776f-hhgms           1/1     Running     0             12m

  3. 在 System A 上,启动 Red Hat Quay Operator 升级到最新的 y-stream 版本。这是手动过程。有关升级安装的 Operator 的更多信息,请参阅 升级已安装的 Operator。如需有关 Red Hat Quay 升级路径的更多信息,请参阅升级 Red Hat Quay Operator
  4. 安装新的 Red Hat Quay Operator 后,集群上所需的升级会自动完成。之后,新的 Red Hat Quay pod 会使用最新的 y-stream 版本启动。另外,还会调度并启动新的 Quay pod。
  5. 通过进入到 Red Hat Quay UI 确认更新是否正常工作:

    1. OpenShift 控制台中,导航到 OperatorsInstalled Operators,然后点击 Registry Endpoint 链接。

      重要

      在 Red Hat Quay UI 可用前,不要执行以下步骤。在系统 A 上提供 UI 前,不要升级 System B 和 System C 上的 Red Hat Quay Operator。

  6. 确认更新在 System A 上正常工作后,在 System B 和 System C 上启动 Red Hat Quay Operator。Operator 升级会导致升级的 Red Hat Quay 安装,并重启 pod。

    注意

    因为数据库架构对于新的 y-stream 安装正确,System B 和 System C 上的新 pod 应该快速启动。

7.3.1. 从 Red Hat Quay Operator 部署中删除地理复制站点

通过按照以下流程,Red Hat Quay 管理员可以删除地理复制设置中的站点。

先决条件

  • 已登陆到 OpenShift Container Platform。
  • 您已为 Red Hat Quay geo-replication 配置至少两个站点,例如 usstorageeustorage
  • 每个站点都有自己的组织、存储库和镜像标签。

步骤

  1. 运行以下命令,在所有定义的站点间同步 Blob:

    $ python -m util.backfillreplication
    警告

    在从 Red Hat Quay config.yaml 文件中删除存储引擎 前,您必须确保 所有 Blob 在所有定义的站点间同步。在继续操作前,请完成此步骤。

  2. 在站点 usstorage 的 Red Hat Quay config.yaml 文件中,删除 eustorage 站点的 DISTRIBUTED_STORAGE_CONFIG 条目。
  3. 输入以下命令识别您的 Quay 应用程序 pod:

    $ oc get pod -n <quay_namespace>

    输出示例

    quay390usstorage-quay-app-5779ddc886-2drh2
    quay390eustorage-quay-app-66969cd859-n2ssm

  4. 输入以下命令在 usstorage pod 中打开交互式 shell 会话:

    $ oc rsh quay390usstorage-quay-app-5779ddc886-2drh2
  5. 输入以下命令永久删除 eustorage 站点:

    重要

    无法撤销以下操作。请谨慎使用。

    sh-4.4$ python -m util.removelocation eustorage

    输出示例

    WARNING: This is a destructive operation. Are you sure you want to remove eustorage from your storage locations? [y/n] y
    Deleted placement 30
    Deleted placement 31
    Deleted placement 32
    Deleted placement 33
    Deleted location eustorage