4.21. OADP 和 3scale


4.21.1. 使用 OADP 备份和恢复 3scale API 管理

使用红帽 3scale API 管理,您可以管理内部或外部用户的 API。您可以在内部、云端、托管服务或根据您的要求任意组合部署 3scale 组件。

使用 OpenShift API for Data Protection (OADP),您可以通过备份应用程序资源、持久性卷和配置来保护 3scale API 管理部署。

注意

您可以使用 OpenShift API for Data Protection (OADP) Operator 来备份和恢复 3scale API 管理 on-cluster 存储数据库,而不影响正在运行的服务

您可以配置 OADP,以使用 3scale API 管理执行以下操作:

4.21.2. 使用 OADP 备份 3scale API 管理

您可以通过备份 3scale operator 和 MySQL 和 Redis 等数据库来备份 Red Hat 3scale API 管理组件。

先决条件

4.21.2.1. 创建数据保护应用程序

您可以为 Red Hat 3scale API Management 创建数据保护应用程序(DPA)自定义资源(CR)。

流程

  1. 使用以下配置创建 YAML 文件:

    dpa.yaml 文件示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: dpa-sample
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - openshift
            - aws
            - csi
          resourceTimeout: 10m
        nodeAgent:
          enable: true
          uploaderType: kopia
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 
    1
    
              prefix: <prefix> 
    2
    
            config:
              region: <region> 
    3
    
              profile: "default"
              s3ForcePathStyle: "true"
              s3Url: <s3_url> 
    4
    
            credential:
              key: cloud
              name: cloud-credentials
    Copy to Clipboard Toggle word wrap

    1
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    2
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero。
    3
    指定备份存储位置的区域。
    4
    指定您用于存储备份的对象存储的 URL。
  2. 运行以下命令来创建 DPA CR:

    $ oc create -f dpa.yaml
    Copy to Clipboard Toggle word wrap

您可以备份 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。

先决条件

  • 您创建了数据保护应用程序 (DPA)。

流程

  1. 通过创建带有以下配置的 YAML 文件来备份 3scale operator CR,如 operatorgroup命名空间 和订阅 :

    backup.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: operator-install-backup 
    1
    
      namespace: openshift-adp
    spec:
      csiSnapshotTimeout: 10m0s
      defaultVolumesToFsBackup: false
      includedNamespaces:
      - threescale   
    2
    
      includedResources:
      - operatorgroups
      - subscriptions
      - namespaces
      itemOperationTimeout: 1h0m0s
      snapshotMoveData: false
      ttl: 720h0m0s
    Copy to Clipboard Toggle word wrap

    1
    备份中的 metadata.name 参数的值与恢复 3scale Operator 时使用的 metadata.backupName 参数的值相同。
    2
    安装 3scale Operator 的命名空间。
    注意

    您还可以备份和恢复 ReplicationControllerDeploymentPod 对象,以确保所有手动设置环境都已备份和恢复。这不会影响恢复流。

  2. 运行以下命令来创建备份 CR:

    $ oc create -f backup.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    backup.velero.io/operator-install-backup created
    Copy to Clipboard Toggle word wrap

  3. 通过使用以下配置创建 YAML 文件来备份 Secret CR:

    backup-secret.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: operator-resources-secrets 
    1
    
      namespace: openshift-adp
    spec:
      csiSnapshotTimeout: 10m0s
      defaultVolumesToFsBackup: false
      includedNamespaces:
      - threescale
      includedResources:
      - secrets
      itemOperationTimeout: 1h0m0s
      labelSelector:
        matchLabels:
          app: 3scale-api-management
      snapshotMoveData: false
      snapshotVolumes: false
      ttl: 720h0m0s
    Copy to Clipboard Toggle word wrap

    1
    备份中的 metadata.name 参数的值与恢复 Secret 时使用的 metadata.backupName 参数的值相同。
  4. 运行以下命令来创建 Secret 备份 CR:

    $ oc create -f backup-secret.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    backup.velero.io/operator-resources-secrets created
    Copy to Clipboard Toggle word wrap

  5. 通过创建带有以下配置的 YAML 文件来备份 APIManager CR:

    backup-apimanager.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: operator-resources-apim 
    1
    
      namespace: openshift-adp
    spec:
      csiSnapshotTimeout: 10m0s
      defaultVolumesToFsBackup: false
      includedNamespaces:
      - threescale
      includedResources:
      - apimanagers
      itemOperationTimeout: 1h0m0s
      snapshotMoveData: false
      snapshotVolumes: false
      storageLocation: ts-dpa-1
      ttl: 720h0m0s
      volumeSnapshotLocations:
      - ts-dpa-1
    Copy to Clipboard Toggle word wrap

    1
    备份中的 metadata.name 参数的值与恢复 APIManager 时使用的 metadata.backupName 参数的值相同。
  6. 运行以下命令来创建 APIManager CR:

    $ oc create -f backup-apimanager.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    backup.velero.io/operator-resources-apim created
    Copy to Clipboard Toggle word wrap

4.21.2.3. 备份 MySQL 数据库

您可以通过创建并附加持久性卷声明(PVC)来备份 MySQL 数据库,以便在指定路径中包含转储的数据。

先决条件

  • 您已备份了 Red Hat 3scale API Management operator。

流程

  1. 使用以下配置创建 YAML 文件来添加额外 PVC:

    ts_pvc.yaml 文件示例

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: example-claim
      namespace: threescale
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: gp3-csi
      volumeMode: Filesystem
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来创建额外 PVC:

    $ oc create -f ts_pvc.yml
    Copy to Clipboard Toggle word wrap
  3. 通过编辑 system-mysql 部署以使用 MySQL 转储,将 PVC 附加到系统数据库 pod:

    $ oc edit deployment system-mysql -n threescale
    Copy to Clipboard Toggle word wrap
      volumeMounts:
        - name: example-claim
          mountPath: /var/lib/mysqldump/data
        - name: mysql-storage
          mountPath: /var/lib/mysql/data
        - name: mysql-extra-conf
          mountPath: /etc/my-extra.d
        - name: mysql-main-conf
          mountPath: /etc/my-extra
        ...
          serviceAccount: amp
      volumes:
            - name: example-claim
              persistentVolumeClaim:
                claimName: example-claim 
    1
    
        ...
    Copy to Clipboard Toggle word wrap
    1
    包含转储数据的 PVC。
  4. 使用以下配置创建 YAML 文件以备份 MySQL 数据库:

    mysql.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: mysql-backup 
    1
    
      namespace: openshift-adp
    spec:
      csiSnapshotTimeout: 10m0s
      defaultVolumesToFsBackup: true
      hooks:
        resources:
        - name: dumpdb
          pre:
          - exec:
              command:
              - /bin/sh
              - -c
              - mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD system --no-tablespaces
                > /var/lib/mysqldump/data/dump.sql 
    2
    
              container: system-mysql
              onError: Fail
              timeout: 5m
      includedNamespaces:
      - threescale
      includedResources: 
    3
    
      - deployment
      - pods
      - replicationControllers
      - persistentvolumeclaims
      - persistentvolumes
      itemOperationTimeout: 1h0m0s
      labelSelector:
        matchLabels:
          app: 3scale-api-management
          threescale_component_element: mysql
      snapshotMoveData: false
      ttl: 720h0m0s
    Copy to Clipboard Toggle word wrap

    1
    备份中的 metadata.name 参数的值与恢复 MySQL 数据库时使用的 metadata.backupName 参数的值相同。
    2
    备份数据的目录。
    3
    要备份的资源。
  5. 运行以下命令备份 MySQL 数据库:

    $ oc create -f mysql.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    backup.velero.io/mysql-backup created
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证 MySQL 备份是否已完成:

    $ oc get backups.velero.io mysql-backup -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    status:
    completionTimestamp: "2025-04-17T13:25:19Z"
    errors: 1
    expiration: "2025-05-17T13:25:16Z"
    formatVersion: 1.1.0
    hookStatus: {}
    phase: Completed
    progress: {}
    startTimestamp: "2025-04-17T13:25:16Z"
    version: 1
    Copy to Clipboard Toggle word wrap

4.21.2.4. 备份后端 Redis 数据库

您可以通过添加所需的注解并使用 includedResources 参数列出哪些资源来备份 Redis 数据库。

先决条件

  • 备份 Red Hat 3scale API Management Operator。
  • 您备份了 MySQL 数据库。
  • 在执行备份前,Redis 队列已排空。

流程

  1. 运行以下命令,编辑 backend-redis 部署上的注解:

    $ oc edit deployment backend-redis -n threescale
    Copy to Clipboard Toggle word wrap
    annotations:
    post.hook.backup.velero.io/command: >-
             ["/bin/bash", "-c", "redis-cli CONFIG SET auto-aof-rewrite-percentage
             100"]
           pre.hook.backup.velero.io/command: >-
             ["/bin/bash", "-c", "redis-cli CONFIG SET auto-aof-rewrite-percentage
             0"]
    Copy to Clipboard Toggle word wrap
  2. 使用以下配置创建 YAML 文件以备份 Redis 数据库:

    redis-backup.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: redis-backup 
    1
    
      namespace: openshift-adp
    spec:
      csiSnapshotTimeout: 10m0s
      defaultVolumesToFsBackup: true
      includedNamespaces:
      - threescale
      includedResources:
      - deployment
      - pods
      - replicationcontrollers
      - persistentvolumes
      - persistentvolumeclaims
      itemOperationTimeout: 1h0m0s
      labelSelector:
        matchLabels:
          app: 3scale-api-management
          threescale_component: backend
          threescale_component_element: redis
      snapshotMoveData: false
      snapshotVolumes: false
      ttl: 720h0m0s
    Copy to Clipboard Toggle word wrap

    1
    备份中的 metadata.name 参数的值与恢复 Redis 数据库时使用的 metadata.backupName 参数的值相同。
  3. 运行以下命令备份 Redis 数据库:

    $ oc create -f redis-backup.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    backup.velero.io/redis-backup created
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证 Redis 备份是否已完成:

    $ oc get backups.velero.io redis-backup -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    status:
    completionTimestamp: "2025-04-17T13:25:19Z"
    errors: 1
    expiration: "2025-05-17T13:25:16Z"
    formatVersion: 1.1.0
    hookStatus: {}
    phase: Completed
    progress: {}
    startTimestamp: "2025-04-17T13:25:16Z"
    version: 1
    Copy to Clipboard Toggle word wrap

4.21.3. 使用 OADP 恢复 3scale API 管理

您可以通过恢复备份的 3scale operator 资源来恢复 Red Hat 3scale API Management 组件。您还可以恢复 MySQL 和 Redis 等数据库。

恢复数据后,您可以扩展 3scale 操作器和部署。

先决条件

  • 已安装并配置了 Red Hat 3scale API Management。如需更多信息,请参阅在 OpenShift 和 Red Hat 3scale API Management 上安装 3scale API 管理。
  • 您备份了 3scale 操作器和数据库,如 MySQL 和 Redis。
  • 确保您在从备份的同一集群中恢复 3scale。
  • 如果要在不同的集群中恢复 3scale,请确保原始备份集群和您要恢复 Operator 的集群使用相同的自定义域。

您可以按照以下流程恢复 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。

先决条件

  • 备份 3scale Operator。
  • 您备份了 MySQL 和 Redis 数据库。
  • 您可以在备份的同一集群中恢复数据库。

    如果要将 Operator 恢复到您备份的不同集群,请在目标集群上安装和配置 OADP,并在目标集群中启用 nodeAgent。确保 OADP 配置与源集群中的相同。

流程

  1. 运行以下命令,删除 3scale operator 自定义资源定义(CRD)和 threescale 命名空间:

    $ oc delete project threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    "threescale" project deleted successfully
    Copy to Clipboard Toggle word wrap

  2. 使用以下配置创建 YAML 文件,以恢复 3scale Operator:

    restore.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: operator-installation-restore
      namespace: openshift-adp
    spec:
      backupName: operator-install-backup 
    1
    
      excludedResources:
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
      - csinodes.storage.k8s.io
      - volumeattachments.storage.k8s.io
      - backuprepositories.velero.io
      itemOperationTimeout: 4h0m0s
    Copy to Clipboard Toggle word wrap

    1
    恢复 3scale Operator 的备份
  3. 运行以下命令来恢复 3scale Operator:

    $ oc create -f restore.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    restore.velerio.io/operator-installation-restore created
    Copy to Clipboard Toggle word wrap

  4. 运行以下命令手动创建 s3-credentials Secret 对象:

    $ oc apply -f - <<EOF
    ---
    apiVersion: v1
    kind: Secret
    metadata:
          name: s3-credentials
          namespace: threescale
    stringData:
      AWS_ACCESS_KEY_ID: <ID_123456> 
    1
    
      AWS_SECRET_ACCESS_KEY: <ID_98765544> 
    2
    
      AWS_BUCKET: <mybucket.example.com> 
    3
    
      AWS_REGION: <us-east-1> 
    4
    
    type: Opaque
    EOF
    Copy to Clipboard Toggle word wrap
    1
    将 <ID_123456> 替换为您的 AWS 凭证 ID。
    2
    将 <ID_98765544> 替换为您的 AWS 凭证 KEY。
    3
    将 <mybucket.example.com> 替换为您的目标存储桶名称。
    4
    将 <us-east-1> 替换为存储桶的 AWS 区域。
  5. 运行以下命令缩减 3scale Operator:

    $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps/threescale-operator-controller-manager-v2 scaled
    Copy to Clipboard Toggle word wrap

  6. 使用以下配置创建 YAML 文件,以恢复 Secret

    restore-secret.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: operator-resources-secrets
      namespace: openshift-adp
    spec:
      backupName: operator-resources-secrets 
    1
    
      excludedResources:
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
      - csinodes.storage.k8s.io
      - volumeattachments.storage.k8s.io
      - backuprepositories.velero.io
      itemOperationTimeout: 4h0m0s
    Copy to Clipboard Toggle word wrap

    1
    恢复 Secret 备份。
  7. 运行以下命令来恢复 Secret

    $ oc create -f restore-secrets.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    restore.velerio.io/operator-resources-secrets created
    Copy to Clipboard Toggle word wrap

  8. 使用以下配置创建 YAML 文件以恢复 APIManager:

    restore-apimanager.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: operator-resources-apim
      namespace: openshift-adp
    spec:
      backupName: operator-resources-apim 
    1
    
      excludedResources: 
    2
    
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
      - csinodes.storage.k8s.io
      - volumeattachments.storage.k8s.io
      - backuprepositories.velero.io
      itemOperationTimeout: 4h0m0s
    Copy to Clipboard Toggle word wrap

    1
    恢复 APIManager 备份。
    2
    您不想恢复的资源。
  9. 运行以下命令来恢复 APIManager:

    $ oc create -f restore-apimanager.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    restore.velerio.io/operator-resources-apim created
    Copy to Clipboard Toggle word wrap

  10. 运行以下命令扩展 3scale Operator:

    $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps/threescale-operator-controller-manager-v2 scaled
    Copy to Clipboard Toggle word wrap

4.21.3.2. 恢复 MySQL 数据库

恢复 MySQL 数据库重新创建以下资源:

  • PodReplicationControllerDeployment 对象。
  • 其他持久性卷(PV)和关联的持久性卷声明(PVC)。
  • example-claim PVC 包含的 MySQL 转储。
警告

不要删除与数据库关联的默认 PV 和 PVC。如果这样做,您的备份会被删除。

先决条件

  • 您恢复了 Secret 和 APIManager 自定义资源(CR)。

流程

  1. 运行以下命令缩减 Red Hat 3scale API Management Operator:

    $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps/threescale-operator-controller-manager-v2 scaled
    Copy to Clipboard Toggle word wrap

  2. 创建以下脚本以缩减 3scale Operator:

    $ vi ./scaledowndeployment.sh
    Copy to Clipboard Toggle word wrap

    脚本示例:

    for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do
        oc scale deployment/$deployment --replicas=0 -n threescale
    done
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令缩减所有部署 3scale 组件:

    $ ./scaledowndeployment.sh
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps.openshift.io/apicast-production scaled
    deployment.apps.openshift.io/apicast-staging scaled
    deployment.apps.openshift.io/backend-cron scaled
    deployment.apps.openshift.io/backend-listener scaled
    deployment.apps.openshift.io/backend-redis scaled
    deployment.apps.openshift.io/backend-worker scaled
    deployment.apps.openshift.io/system-app scaled
    deployment.apps.openshift.io/system-memcache scaled
    deployment.apps.openshift.io/system-mysql scaled
    deployment.apps.openshift.io/system-redis scaled
    deployment.apps.openshift.io/system-searchd scaled
    deployment.apps.openshift.io/system-sidekiq scaled
    deployment.apps.openshift.io/zync scaled
    deployment.apps.openshift.io/zync-database scaled
    deployment.apps.openshift.io/zync-que scaled
    Copy to Clipboard Toggle word wrap

  4. 运行以下命令来删除 system-mysql Deployment 对象:

    $ oc delete deployment system-mysql -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+
    deployment.apps.openshift.io "system-mysql" deleted
    Copy to Clipboard Toggle word wrap

  5. 创建以下 YAML 文件以恢复 MySQL 数据库:

    restore-mysql.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: restore-mysql
      namespace: openshift-adp
    spec:
      backupName: mysql-backup 
    1
    
      excludedResources:
        - nodes
        - events
        - events.events.k8s.io
        - backups.velero.io
        - restores.velero.io
        - csinodes.storage.k8s.io
        - volumeattachments.storage.k8s.io
        - backuprepositories.velero.io
        - resticrepositories.velero.io
      hooks:
        resources:
          - name: restoreDB
            postHooks:
              - exec:
                  command:
                    - /bin/sh
                    - '-c'
                    - >
                      sleep 30
    
                      mysql -h 127.0.0.1 -D system -u root
                      --password=$MYSQL_ROOT_PASSWORD <
                      /var/lib/mysqldump/data/dump.sql 
    2
    
                  container: system-mysql
                  execTimeout: 80s
                  onError: Fail
                  waitTimeout: 5m
      itemOperationTimeout: 1h0m0s
      restorePVs: true
    Copy to Clipboard Toggle word wrap

    1
    恢复 MySQL 备份。
    2
    从中恢复数据的路径。
  6. 运行以下命令来恢复 MySQL 数据库:

    $ oc create -f restore-mysql.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    restore.velerio.io/restore-mysql created
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令验证 PodVolumeRestore 恢复是否已完成:

    $ oc get podvolumerestores.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                    NAMESPACE    POD                     UPLOADER TYPE   VOLUME                  STATUS      TOTALBYTES   BYTESDONE   AGE
    restore-mysql-rbzvm     threescale   system-mysql-2-kjkhl    kopia           mysql-storage           Completed   771879108    771879108   40m
    restore-mysql-z7x7l     threescale   system-mysql-2-kjkhl    kopia           example-claim           Completed   380415       380415      40m
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令验证额外的 PVC 是否已恢复:

    $ oc get pvc -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                    STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    backend-redis-storage   Bound    pvc-3dca410d-3b9f-49d4-aebf-75f47152e09d   1Gi        RWO            gp3-csi        <unset>                 68m
    example-claim           Bound    pvc-cbaa49b0-06cd-4b1a-9e90-0ef755c67a54   1Gi        RWO            gp3-csi        <unset>                 57m
    mysql-storage           Bound    pvc-4549649f-b9ad-44f7-8f67-dd6b9dbb3896   1Gi        RWO            gp3-csi        <unset>                 68m
    system-redis-storage    Bound    pvc-04dadafd-8a3e-4d00-8381-6041800a24fc   1Gi        RWO            gp3-csi        <unset>                 68m
    system-searchd          Bound    pvc-afbf606c-d4a8-4041-8ec6-54c5baf1a3b9   1Gi        RWO            gp3-csi        <unset>                 68m
    Copy to Clipboard Toggle word wrap

4.21.3.3. 恢复后端 Redis 数据库

您可以通过删除部署并指定您不想恢复的资源来恢复后端 Redis 数据库。

先决条件

  • 您恢复了 Red Hat 3scale API Management operator 资源、Secret 和 APIManager 自定义资源。
  • 您恢复了 MySQL 数据库。

流程

  1. 运行以下命令来删除 backend-redis 部署:

    $ oc delete deployment backend-redis -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+
    
    deployment.apps.openshift.io "backend-redis" deleted
    Copy to Clipboard Toggle word wrap

  2. 使用以下配置创建 YAML 文件,以恢复 Redis 数据库:

    restore-backend.yaml 文件示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: restore-backend
      namespace: openshift-adp
    spec:
      backupName: redis-backup 
    1
    
      excludedResources:
        - nodes
        - events
        - events.events.k8s.io
        - backups.velero.io
        - restores.velero.io
        - resticrepositories.velero.io
        - csinodes.storage.k8s.io
        - volumeattachments.storage.k8s.io
        - backuprepositories.velero.io
      itemOperationTimeout: 1h0m0s
      restorePVs: true
    Copy to Clipboard Toggle word wrap

    1
    恢复 Redis 备份。
  3. 运行以下命令来恢复 Redis 数据库:

    $ oc create -f restore-backend.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    restore.velerio.io/restore-backend created
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令验证 PodVolumeRestore 恢复是否已完成:

    $ oc get podvolumerestores.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap

    输出示例:

    NAME                    NAMESPACE    POD                     UPLOADER TYPE   VOLUME                  STATUS      TOTALBYTES   BYTESDONE   AGE
    restore-backend-jmrwx   threescale   backend-redis-1-bsfmv   kopia           backend-redis-storage   Completed   76123        76123       21m
    Copy to Clipboard Toggle word wrap

4.21.3.4. 扩展 3scale API 管理操作器和部署

您可以扩展 Red Hat 3scale API Management operator 以及手动缩减的任何部署。几分钟后,3scale 安装应完全正常工作,其状态应与备份的状态匹配。

先决条件

  • 您恢复了 3scale operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。
  • 您恢复了 MySQL 和后端 Redis 数据库。
  • 确保没有扩展部署,或者没有额外的 pod 运行。一些 system-mysqlbackend-redis pod 在恢复后从部署分离,可以在恢复成功后删除。

流程

  1. 运行以下命令扩展 3scale Operator:

    $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps/threescale-operator-controller-manager-v2 scaled
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令,确保 3scale pod 正在运行以验证 3scale Operator 是否已部署:

    $ oc get pods -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME									                    READY        STATUS	  RESTARTS	 AGE
    threescale-operator-controller-manager-v2-79546bd8c-b4qbh	1/1	         Running  0          2m5s
    Copy to Clipboard Toggle word wrap

  3. 创建以下脚本以扩展部署:

    $ vi ./scaledeployment.sh
    Copy to Clipboard Toggle word wrap

    脚本文件示例:

    for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do
        oc scale deployment/$deployment --replicas=1 -n threescale
    done
    Copy to Clipboard Toggle word wrap

  4. 运行以下命令来扩展部署:

    $ ./scaledeployment.sh
    Copy to Clipboard Toggle word wrap

    输出示例

    deployment.apps.openshift.io/apicast-production scaled
    deployment.apps.openshift.io/apicast-staging scaled
    deployment.apps.openshift.io/backend-cron scaled
    deployment.apps.openshift.io/backend-listener scaled
    deployment.apps.openshift.io/backend-redis scaled
    deployment.apps.openshift.io/backend-worker scaled
    deployment.apps.openshift.io/system-app scaled
    deployment.apps.openshift.io/system-memcache scaled
    deployment.apps.openshift.io/system-mysql scaled
    deployment.apps.openshift.io/system-redis scaled
    deployment.apps.openshift.io/system-searchd scaled
    deployment.apps.openshift.io/system-sidekiq scaled
    deployment.apps.openshift.io/zync scaled
    deployment.apps.openshift.io/zync-database scaled
    deployment.apps.openshift.io/zync-que scaled
    Copy to Clipboard Toggle word wrap

  5. 运行以下命令,获取 3scale-admin 路由以登录到 3scale UI:

    $ oc get routes -n threescale
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                         HOST/PORT                                                                   PATH   SERVICES             PORT      TERMINATION     WILDCARD
    backend                      backend-3scale.apps.custom-cluster-name.openshift.com                         backend-listener     http      edge/Allow      None
    zync-3scale-api-b4l4d        api-3scale-apicast-production.apps.custom-cluster-name.openshift.com          apicast-production   gateway   edge/Redirect   None
    zync-3scale-api-b6sns        api-3scale-apicast-staging.apps.custom-cluster-name.openshift.com             apicast-staging      gateway   edge/Redirect   None
    zync-3scale-master-7sc4j     master.apps.custom-cluster-name.openshift.com                                 system-master        http      edge/Redirect   None
    zync-3scale-provider-7r2nm   3scale-admin.apps.custom-cluster-name.openshift.com                           system-provider      http      edge/Redirect   None
    zync-3scale-provider-mjxlb   3scale.apps.custom-cluster-name.openshift.com                                 system-developer     http      edge/Redirect   None
    Copy to Clipboard Toggle word wrap

    在本例中,3scale-admin.apps.custom-cluster-name.openshift.com 是 3scale-admin URL。

  6. 以管理员身份,使用此输出中的 URL 登录 3scale 操作器。您可以验证数据在进行备份时可用。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat