4.21. OADP と 3scale
4.21.1. OADP を使用した 3scale API Management のバックアップと復元
Red Hat 3scale API Management を使用すると、内部ユーザーまたは外部ユーザーの API を管理できます。3scale のコンポーネントは、オンプレミスやクラウドに、またはマネージドサービスとしてデプロイできます。要件に応じてこれらを組み合わせてデプロイすることもできます。
OpenShift API for Data Protection (OADP) を使用すると、アプリケーションリソース、永続ボリューム、および設定をバックアップして、3scale API Management デプロイメントを保護できます。
OpenShift API for Data Protection (OADP) Operator を使用すると、実行中のサービスに影響を与えることなく、3scale API Management のクラスター上のストレージデータベースをバックアップおよび復元できます。
3scale API Management を使用して次の操作を実行するように OADP を設定できます。
- 3scale API Management のバックアップ の手順に従って、3scale コンポーネントのバックアップを作成する。
- 3scale API Management の復元 の手順に従って、コンポーネントを復元し、3scale Operator およびデプロイメントをスケールアップする。
4.21.2. OADP を使用した 3scale API Management のバックアップ
3scale Operator と、MySQL、Redis などのデータベースをバックアップすることで、Red Hat 3scale API Management のコンポーネントをバックアップできます。
前提条件
- Red Hat 3scale API Management をインストールして設定した。詳細は、OpenShift への 3scale API Management のインストール および Red Hat 3scale API Management を参照してください。
4.21.2.1. Data Protection Application の作成
Red Hat 3scale API Management 用の Data Protection Application (DPA) カスタムリソース (CR) を作成できます。
手順
次の設定で 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> prefix: <prefix> config: region: <region> profile: "default" s3ForcePathStyle: "true" s3Url: <s3_url> credential: key: cloud name: cloud-credentials
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 Copied! 次のコマンドを実行して DPA CR を作成します。
oc create -f dpa.yaml
$ oc create -f dpa.yaml
Copy to Clipboard Copied!
4.21.2.2. 3scale API Management Operator、シークレット、APIManager のバックアップ
Red Hat 3scale API Management Operator のリソースと、Secret
および APIManager カスタムリソース (CR) の両方をバックアップできます。
前提条件
- Data Protection Application (DPA) を作成した。
手順
次の設定を含む YAML ファイルを作成して、3scale Operator の CR (
operatorgroup
、namespaces
、subscriptions
など) をバックアップします。例:
backup.yaml
ファイルapiVersion: velero.io/v1 kind: Backup metadata: name: operator-install-backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: false includedNamespaces: - threescale includedResources: - operatorgroups - subscriptions - namespaces itemOperationTimeout: 1h0m0s snapshotMoveData: false ttl: 720h0m0s
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 Copied! 注記ReplicationControllers
、Deployment
、Pod
オブジェクトをバックアップおよび復元して、手動で設定されたすべての環境がバックアップおよび復元されるようにすることもできます。復元フローには影響ありません。次のコマンドを実行してバックアップ CR を作成します。
oc create -f backup.yaml
$ oc create -f backup.yaml
Copy to Clipboard Copied! 出力例
backup.velero.io/operator-install-backup created
backup.velero.io/operator-install-backup created
Copy to Clipboard Copied! 次の設定を含む YAML ファイルを作成して、
Secret
CR をバックアップします。例:
backup-secret.yaml
ファイルapiVersion: velero.io/v1 kind: Backup metadata: name: operator-resources-secrets 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
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 Copied! - 1
- バックアップ内の
metadata.name
パラメーターの値は、Secret
の復元時に使用されるmetadata.backupName
パラメーターで使用される値と同じです。
次のコマンドを実行して、
Secret
バックアップ CR を作成します。oc create -f backup-secret.yaml
$ oc create -f backup-secret.yaml
Copy to Clipboard Copied! 出力例
backup.velero.io/operator-resources-secrets created
backup.velero.io/operator-resources-secrets created
Copy to Clipboard Copied! 次の設定の YAML ファイルを作成して、APIManager CR をバックアップします。
例: backup-apimanager.yaml ファイル
apiVersion: velero.io/v1 kind: Backup metadata: name: operator-resources-apim 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
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 Copied! - 1
- バックアップ内の
metadata.name
パラメーターの値は、APIManager の復元時に使用されるmetadata.backupName
パラメーターで使用される値と同じです。
次のコマンドを実行して APIManager CR を作成します。
oc create -f backup-apimanager.yaml
$ oc create -f backup-apimanager.yaml
Copy to Clipboard Copied! 出力例
backup.velero.io/operator-resources-apim created
backup.velero.io/operator-resources-apim created
Copy to Clipboard Copied!
4.21.2.3. MySQL データベースのバックアップ
永続ボリューム要求 (PVC) を作成してアタッチし、指定したパスにダンプされたデータを含めることで、MySQL データベースをバックアップできます。
前提条件
- Red Hat 3scale API Management Operator をバックアップした。
手順
さらに PVC を追加するには、次の設定で YAML ファイルを作成します。
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
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 Copied! 次のコマンドを実行して追加の PVC を作成します。
oc create -f ts_pvc.yml
$ oc create -f ts_pvc.yml
Copy to Clipboard Copied! MySQL ダンプを使用するように
system-mysql
デプロイメントを編集して、PVC をシステムデータベース Pod にアタッチします。oc edit deployment system-mysql -n threescale
$ oc edit deployment system-mysql -n threescale
Copy to Clipboard Copied! 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 ...
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 Copied! - 1
- ダンプされたデータが含まれる PVC。
MySQL データベースをバックアップするために、次の設定を含む YAML ファイルを作成します。
mysql.yaml
ファイルの例apiVersion: velero.io/v1 kind: Backup metadata: name: mysql-backup 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 container: system-mysql onError: Fail timeout: 5m includedNamespaces: - threescale includedResources: - deployment - pods - replicationControllers - persistentvolumeclaims - persistentvolumes itemOperationTimeout: 1h0m0s labelSelector: matchLabels: app: 3scale-api-management threescale_component_element: mysql snapshotMoveData: false ttl: 720h0m0s
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 Copied! 次のコマンドを実行して、MySQL データベースをバックアップします。
oc create -f mysql.yaml
$ oc create -f mysql.yaml
Copy to Clipboard Copied! 出力例
backup.velero.io/mysql-backup created
backup.velero.io/mysql-backup created
Copy to Clipboard Copied!
検証
次のコマンドを実行して、MySQL のバックアップが完了したことを確認します。
oc get backups.velero.io mysql-backup -o yaml
$ oc get backups.velero.io mysql-backup -o yaml
Copy to Clipboard Copied! 出力例
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
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 Copied!
4.21.2.4. バックエンドの Redis データベースのバックアップ
必要なアノテーションを追加し、includedResources
パラメーターを使用してバックアップするリソースをリストすることで、Redis データベースをバックアップできます。
前提条件
- Red Hat 3scale API Management Operator をバックアップした。
- MySQL データベースをバックアップした。
- バックアップを実行する前に、Redis キューが空になっている。
手順
次のコマンドを実行して、
backend-redis
デプロイメントのアノテーションを編集します。oc edit deployment backend-redis -n threescale
$ oc edit deployment backend-redis -n threescale
Copy to Clipboard Copied! 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"]
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 Copied! Redis データベースをバックアップするために、次の設定を含む YAML ファイルを作成します。
redis-backup.yaml
ファイルの例apiVersion: velero.io/v1 kind: Backup metadata: name: redis-backup 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
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 Copied! - 1
- バックアップ内の
metadata.name
パラメーターの値は、Redis データベースの復元時に使用されるmetadata.backupName
パラメーターで使用される値と同じです。
次のコマンドを実行して、Redis データベースをバックアップします。
oc create -f redis-backup.yaml
$ oc create -f redis-backup.yaml
Copy to Clipboard Copied! 出力例
backup.velero.io/redis-backup created
backup.velero.io/redis-backup created
Copy to Clipboard Copied!
検証
次のコマンドを実行して、Redis のバックアップが完了したことを確認します。
oc get backups.velero.io redis-backup -o yaml
$ oc get backups.velero.io redis-backup -o yaml
Copy to Clipboard Copied! 出力例
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
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 Copied!
4.21.3. OADP を使用した 3scale API Management の復元
バックアップした 3scale Operator リソースを復元することにより、Red Hat 3scale API Management コンポーネントを復元できます。MySQL や Redis などのデータベースを復元することもできます。
データが復元されたら、3scale Operator とデプロイメントをスケールアップできます。
前提条件
- Red Hat 3scale API Management をインストールして設定した。詳細は、OpenShift への 3scale API Management のインストール および Red Hat 3scale API Management を参照してください。
- 3scale Operator と、MySQL、Redis などのデータベースをバックアップした。
- 3scale の復元先のクラスターが、バックアップ元と同じクラスターである。
- 別のクラスターで 3scale を復元する場合は、バックアップ元のクラスターと Operator の復元先のクラスターが、同じカスタムドメインを使用している。
4.21.3.1. 3scale API Management Operator、シークレット、APIManager の復元
以下の手順を使用して、Red Hat 3scale API Management Operator のリソースと、Secret
および APIManager カスタムリソース (CR) の両方を復元できます。
前提条件
- 3scale Operator をバックアップした。
- MySQL および Redis データベースをバックアップした。
バックアップされたのと同じクラスター上でデータベースを復元しようとしている。
バックアップ元とは異なるクラスターに Operator を復元する場合は、復元先のクラスターで
nodeAgent
を有効にして OADP をインストールして設定します。OADP の設定がソースクラスターと同じであることを確認してください。
手順
次のコマンドを実行して、3scale Operator のカスタムリソース定義 (CRD) と
threescale
namespace を削除します。oc delete project threescale
$ oc delete project threescale
Copy to Clipboard Copied! 出力例
"threescale" project deleted successfully
"threescale" project deleted successfully
Copy to Clipboard Copied! 3scale Operator を復元するために、次の設定を含む YAML ファイルを作成します。
restore.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: operator-installation-restore namespace: openshift-adp spec: backupName: operator-install-backup 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
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 Copied! - 1
- 3scale Operator のバックアップを復元します。
次のコマンドを実行して、3scale Operator を復元します。
oc create -f restore.yaml
$ oc create -f restore.yaml
Copy to Clipboard Copied! 出力例
restore.velerio.io/operator-installation-restore created
restore.velerio.io/operator-installation-restore created
Copy to Clipboard Copied! 次のコマンドを実行して、
s3-credentials
Secret
オブジェクトを手動で作成します。oc apply -f - <<EOF --- apiVersion: v1 kind: Secret metadata: name: s3-credentials namespace: threescale stringData: AWS_ACCESS_KEY_ID: <ID_123456> AWS_SECRET_ACCESS_KEY: <ID_98765544> AWS_BUCKET: <mybucket.example.com> AWS_REGION: <us-east-1> type: Opaque EOF
$ 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 Copied! 次のコマンドを実行して、3scale Operator をスケールダウンします。
oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
Copy to Clipboard Copied! 出力例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaled
Copy to Clipboard Copied! Secret
を復元するために、次の設定を含む YAML ファイルを作成します。restore-secret.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: operator-resources-secrets namespace: openshift-adp spec: backupName: operator-resources-secrets 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
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 Copied! - 1
Secret
のバックアップを復元します。
次のコマンドを実行して、
Secret
を復元します。oc create -f restore-secrets.yaml
$ oc create -f restore-secrets.yaml
Copy to Clipboard Copied! 出力例
restore.velerio.io/operator-resources-secrets created
restore.velerio.io/operator-resources-secrets created
Copy to Clipboard Copied! APIManager を復元するために、次の設定を含む YAML ファイルを作成します。
restore-apimanager.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: operator-resources-apim namespace: openshift-adp spec: backupName: operator-resources-apim 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
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 Copied! 次のコマンドを実行して、APIManager を復元します。
oc create -f restore-apimanager.yaml
$ oc create -f restore-apimanager.yaml
Copy to Clipboard Copied! 出力例
restore.velerio.io/operator-resources-apim created
restore.velerio.io/operator-resources-apim created
Copy to Clipboard Copied! 次のコマンドを実行して、3scale Operator をスケールアップします。
oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
Copy to Clipboard Copied! 出力例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaled
Copy to Clipboard Copied!
4.21.3.2. MySQL データベースの復元
MySQL データベースを復元すると、次のリソースが再作成されます。
-
Pod
、ReplicationController
、およびDeployment
オブジェクト。 - 追加の永続ボリューム (PV) と関連する永続ボリューム要求 (PVC)。
-
example-claim
PVC に含まれる MySQL ダンプ。
データベースに関連付けられているデフォルトの PV と PVC は削除しないでください。削除すると、バックアップが削除されます。
前提条件
-
Secret
および APIManager カスタムリソース (CR) を復元した。
手順
次のコマンドを実行して、Red Hat 3scale API Management Operator をスケールダウンします。
oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
Copy to Clipboard Copied! 出力例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaled
Copy to Clipboard Copied! 3scale Operator をスケールダウンするには、次のスクリプトを作成します。
vi ./scaledowndeployment.sh
$ vi ./scaledowndeployment.sh
Copy to Clipboard Copied! スクリプトの例:
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
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 Copied! 次のスクリプトを実行して、すべてのデプロイメント 3scale コンポーネントをスケールダウンします。
./scaledowndeployment.sh
$ ./scaledowndeployment.sh
Copy to Clipboard Copied! 出力例
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
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 Copied! 次のコマンドを実行して、
system-mysql
Deployment
オブジェクトを削除します。oc delete deployment system-mysql -n threescale
$ oc delete deployment system-mysql -n threescale
Copy to Clipboard Copied! 出力例
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "system-mysql" deleted
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 Copied! MySQL データベースを復元するための次の YAML ファイルを作成します。
restore-mysql.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: restore-mysql namespace: openshift-adp spec: backupName: mysql-backup 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 container: system-mysql execTimeout: 80s onError: Fail waitTimeout: 5m itemOperationTimeout: 1h0m0s restorePVs: true
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 Copied! 次のコマンドを実行して、MySQL データベースを復元します。
oc create -f restore-mysql.yaml
$ oc create -f restore-mysql.yaml
Copy to Clipboard Copied! 出力例
restore.velerio.io/restore-mysql created
restore.velerio.io/restore-mysql created
Copy to Clipboard Copied!
検証
次のコマンドを実行して、
PodVolumeRestore
の復元が完了したことを確認します。oc get podvolumerestores.velero.io -n openshift-adp
$ oc get podvolumerestores.velero.io -n openshift-adp
Copy to Clipboard Copied! 出力例
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
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 Copied! 次のコマンドを実行して、追加の PVC が復元されたことを確認します。
oc get pvc -n threescale
$ oc get pvc -n threescale
Copy to Clipboard Copied! 出力例
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
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 Copied!
4.21.3.3. バックエンドの Redis データベースの復元
デプロイメントを削除し、復元しないリソースを指定することにより、バックエンドの Redis データベースを復元できます。
前提条件
-
Red Hat 3scale API Management Operator のリソースと、
Secret
および APIManager カスタムリソースを復元した。 - MySQL データベースを復元した。
手順
次のコマンドを実行して、
backend-redis
デプロイメントを削除します。oc delete deployment backend-redis -n threescale
$ oc delete deployment backend-redis -n threescale
Copy to Clipboard Copied! 出力例
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "backend-redis" deleted
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 Copied! Redis データベースを復元するために、次の設定を含む YAML ファイルを作成します。
restore-backend.yaml
ファイルの例apiVersion: velero.io/v1 kind: Restore metadata: name: restore-backend namespace: openshift-adp spec: backupName: redis-backup 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
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 Copied! - 1
- Redis のバックアップを復元します。
次のコマンドを実行して、Redis データベースを復元します。
oc create -f restore-backend.yaml
$ oc create -f restore-backend.yaml
Copy to Clipboard Copied! 出力例
restore.velerio.io/restore-backend created
restore.velerio.io/restore-backend created
Copy to Clipboard Copied!
検証
次のコマンドを実行して、
PodVolumeRestore
の復元が完了したことを確認します。oc get podvolumerestores.velero.io -n openshift-adp
$ oc get podvolumerestores.velero.io -n openshift-adp
Copy to Clipboard Copied! 出力例:
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
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 Copied!
4.21.3.4. 3scale API Management Operator とデプロイメントのスケールアップ
Red Hat 3scale API Management Operator と、手動でスケールダウンしたデプロイメントをスケールアップできます。数分後には、3scale インストールが完全に機能し、バックアップされた状態と一致するはずです。
前提条件
-
3scale Operator のリソースと、
Secret
および APIManager カスタムリソース (CR) の両方を復元した。 - MySQL とバックエンドの Redis データベースを復元した。
-
スケールアップされたデプロイメントや、追加の Pod が実行されていないことを確認した。復元後、デプロイメントから切り離された状態で実行されている
system-mysql
またはbackend-redis
Pod が存在する可能性がありますが、復元が成功したら削除できます。
手順
次のコマンドを実行して、3scale Operator をスケールアップします。
oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
Copy to Clipboard Copied! 出力例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaled
Copy to Clipboard Copied! 次のコマンドを実行して、3scale Pod が実行中であることを確認して、3scale Operator がデプロイされたかどうかを確認します。
oc get pods -n threescale
$ oc get pods -n threescale
Copy to Clipboard Copied! 出力例
NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5s
NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5s
Copy to Clipboard Copied! デプロイメントをスケールアップするためのスクリプトを作成します。
vi ./scaledeployment.sh
$ vi ./scaledeployment.sh
Copy to Clipboard Copied! スクリプトファイルの例:
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
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 Copied! 次のスクリプトを実行して、デプロイメントをスケールアップします。
./scaledeployment.sh
$ ./scaledeployment.sh
Copy to Clipboard Copied! 出力例
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
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 Copied! 次のコマンドを実行して、3scale UI にログインするための
3scale-admin
ルートを取得します。oc get routes -n threescale
$ oc get routes -n threescale
Copy to Clipboard Copied! 出力例
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
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 Copied! この例では、
3scale-admin.apps.custom-cluster-name.openshift.com
が 3scale-admin URL です。- この出力の URL を使用して、3scale Operator に管理者としてログインします。バックアップを作成したときのデータが利用可能かどうかを確認します。