7. データバックアップ・リストア

7.1. 目的

本書では、Exastroシステムで利用する永続データのバックアップとリストア手順について説明します。
パブリッククラウドの仕組みにより、データバックアップの仕組みが利用可能であればそちらを利用しても問題ありません。

7.2. 前提条件

本頁で紹介するバックアップ・リストア手順では、下記の前提条件を満たしている必要があります。

7.2.1. 条件

  • 下記のコマンドが利用可能なこと
    • tar

    • kubectl

  • 作業環境のサーバで充分なディスクの空き容量があること

7.2.2. 暗号化キーのバックアップ

Exastro システムのパスワードや認証情報といった機密情報はすべて暗号化されています。
必ず、下記で取得した暗号化キーをバックアップして、適切に保管してください。

危険

暗号化キーを紛失した場合、バックアップデータからシステムを復旧した際にデータの復号ができなくなります。
リスト 7.1 コマンド(Exastro IT Automation ENCRYPT_KEY)
kubectl get secret ita-secret-ita-global --namespace exastro -o jsonpath='{.data.ENCRYPT_KEY}' | base64 -d
リスト 7.2 出力結果
JnIoXzJtPic2MXFqRl1yI1chMj8hWzQrNypmVn41Pk8=
リスト 7.3 コマンド(Exastro Platform ENCRYPT_KEY)
kubectl get secret platform-secret-pf-global --namespace exastro -o jsonpath='{.data.ENCRYPT_KEY}' | base64 -d
リスト 7.4 出力結果
bHFZe2VEVVM2PmFeQDMqNG4oZT4lTlglLjJJekxBTHE=

7.3. 概要

バックアップ・リストア対象となるデータは下記の3つです。
  • バックアップ・リストア対象
    • Exastro Platform のデータベース

    • Exastro IT Automation のデータベース

    • Exastro IT Automation の共有ファイル

    • Exastro IT Automation OASE のMongoDB

これらのデータを kubectl コマンドを利用してバックアップ・リストアします。
作業の流れは、まず、ユーザからのデータの書き込みを制限するために、リバースプロキシを停止します。
次にバックヤード処理を停止し、データのバックアップを実施します。
最後に、作業前の数に Pod 数を戻します。
リストアの際の作業も同様の流れになります。

危険

本手順では、サービスの停止が発生します。

7.4. バックアップ

7.4.1. サービス停止

  1. Pod 起動数の確認

    作業前の Pod 起動数の確認をし、状態を記録します。
    リスト 7.5 コマンド
     kubectl get deploy,statefulset -o jsonpath='{range .items[*]}{@.metadata.name}:{@.spec.replicas}{"\n"}' -n exastro
    
    リスト 7.6 実行結果
    ita-api-admin:1
    ita-api-oase-receiver:1
    ita-api-organization:1
    ita-by-ansible-execute:1
    ita-by-ansible-legacy-role-vars-listup:1
    ita-by-ansible-legacy-vars-listup:1
    ita-by-ansible-pioneer-vars-listup:1
    ita-by-ansible-towermaster-sync:1
    ita-by-cicd-for-iac:1
    ita-by-collector:1
    ita-by-conductor-regularly:1
    ita-by-conductor-synchronize:1
    ita-by-excel-export-import:1
    ita-by-hostgroup-split:1
    ita-by-menu-create:1
    ita-by-menu-export-import:1
    ita-by-oase-conclusion:1
    ita-by-terraform-cli-execute:1
    ita-by-terraform-cli-vars-listup:1
    ita-by-terraform-cloud-ep-execute:1
    ita-by-terraform-cloud-ep-vars-listup:1
    ita-web-server:1
    mariadb:1
    platform-api:1
    platform-auth:1
    platform-job:1
    platform-web:1
    keycloak:1
    mongo:1
    :
    
    各Deployment, StatefulSetのサービス名、replicas数が表示されます。

    警告

    バージョンによって、表示されるサービスが異なります。
  2. アプリケーションの停止

    アプリケーション (platform-auth) の Pod 起動数を 0 に変更し、アクセスを制限します。
    リスト 7.7 コマンド
    kubectl scale deploy,statefulset -n exastro --replicas=0 --all=true
    
    リスト 7.8 実行結果
    deployment.apps/ita-api-admin scaled
    deployment.apps/ita-api-oase-receiver scaled
    deployment.apps/ita-api-organization scaled
    deployment.apps/ita-by-ansible-execute scaled
    deployment.apps/ita-by-ansible-legacy-role-vars-listup scaled
    deployment.apps/ita-by-ansible-legacy-vars-listup scaled
    deployment.apps/ita-by-ansible-pioneer-vars-listup scaled
    deployment.apps/ita-by-ansible-towermaster-sync scaled
    deployment.apps/ita-by-cicd-for-iac scaled
    deployment.apps/ita-by-collector scaled
    deployment.apps/ita-by-conductor-regularly scaled
    deployment.apps/ita-by-conductor-synchronize scaled
    deployment.apps/ita-by-excel-export-import scaled
    deployment.apps/ita-by-hostgroup-split scaled
    deployment.apps/ita-by-menu-create scaled
    deployment.apps/ita-by-menu-export-import scaled
    deployment.apps/ita-by-oase-conclusion scaled
    deployment.apps/ita-by-terraform-cli-execute scaled
    deployment.apps/ita-by-terraform-cli-vars-listup scaled
    deployment.apps/ita-by-terraform-cloud-ep-execute scaled
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup scaled
    deployment.apps/ita-web-server scaled
    deployment.apps/mariadb scaled
    deployment.apps/platform-api scaled
    deployment.apps/platform-auth scaled
    deployment.apps/platform-job scaled
    deployment.apps/platform-web scaled
    statefulset.apps/keycloak scaled
    statefulset.apps/mongo scaled
    

    警告

    バージョンによって、表示されるサービスが異なります。
  3. データベースサービスのみ起動

    作業のため、データベースのサービスのみ再起動します。
    リスト 7.9 コマンド
    kubectl scale deployment mariadb -n exastro --replicas=1
    
    OASE ドライバをインストールしている場合は、MongoDB のサービスを起動します。
    リスト 7.10 コマンド
    kubectl scale statefulset mongo -n exastro --replicas=1
    
  4. Pod 起動数の確認

    データベース以外の Pod 数が 0 になっていることを確認します。
    リスト 7.11 コマンド
    kubectl get deploy,statefulset -n exastro
    
    リスト 7.12 実行結果
    NAME                                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/ita-api-admin                            0/0     0            0           26h
    deployment.apps/ita-api-oase-receiver                    0/0     0            0           26h
    deployment.apps/ita-api-organization                     0/0     0            0           26h
    deployment.apps/ita-by-ansible-execute                   0/0     0            0           26h
    deployment.apps/ita-by-ansible-legacy-role-vars-listup   0/0     0            0           26h
    deployment.apps/ita-by-ansible-legacy-vars-listup        0/0     0            0           26h
    deployment.apps/ita-by-ansible-pioneer-vars-listup       0/0     0            0           26h
    deployment.apps/ita-by-ansible-towermaster-sync          0/0     0            0           26h
    deployment.apps/ita-by-cicd-for-iac                      0/0     0            0           26h
    deployment.apps/ita-by-collector                         0/0     0            0           26h
    deployment.apps/ita-by-conductor-regularly               0/0     0            0           26h
    deployment.apps/ita-by-conductor-synchronize             0/0     0            0           26h
    deployment.apps/ita-by-excel-export-import               0/0     0            0           26h
    deployment.apps/ita-by-hostgroup-split                   0/0     0            0           26h
    deployment.apps/ita-by-menu-create                       0/0     0            0           26h
    deployment.apps/ita-by-menu-export-import                0/0     0            0           26h
    deployment.apps/ita-by-oase-conclusion                   0/0     0            0           26h
    deployment.apps/ita-by-terraform-cli-execute             0/0     0            0           26h
    deployment.apps/ita-by-terraform-cli-vars-listup         0/0     0            0           26h
    deployment.apps/ita-by-terraform-cloud-ep-execute        0/0     0            0           26h
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup    0/0     0            0           26h
    deployment.apps/ita-web-server                           0/0     0            0           26h
    deployment.apps/mariadb                                  1/1     1            1           26h
    deployment.apps/platform-api                             0/0     0            0           26h
    deployment.apps/platform-auth                            0/0     0            0           26h
    deployment.apps/platform-job                             0/0     0            0           26h
    deployment.apps/platform-web                             0/0     0            0           26h
    
    NAME                        READY   AGE
    statefulset.apps/keycloak   0/0     25h
    statefulset.apps/mongo      1/1     26h
    

    警告

    バージョンによって、表示されるサービスが異なります。

7.4.2. バックアップ

Exastro システム内で、Exastro Platform と Exastro IT Automation でデータベースを共有するか、分離するかによって手順が異なります。
  1. メンテナンス用コンテナの作成

    データベース、ファイルのバックアップ作業用コンテナの作成をします。
    リスト 7.13 コマンド
     1cat <<_EOF_ | kubectl apply -f - --namespace exastro
     2apiVersion: v1
     3kind: Pod
     4metadata:
     5  name: exastro-maintenance
     6  namespace: exastro
     7spec:
     8  containers:
     9  - command:
    10    - sh
    11    - -c
    12    args:
    13    - |
    14      #!/bin/bash
    15      sleep 3600
    16    env:
    17    - name: PF_DB_DATABASE
    18      valueFrom:
    19        configMapKeyRef:
    20          key: DB_DATABASE
    21          name: platform-params-pf-database
    22    - name: PF_DB_HOST
    23      valueFrom:
    24        configMapKeyRef:
    25          key: DB_HOST
    26          name: platform-params-pf-database
    27    - name: PF_DB_PORT
    28      valueFrom:
    29        configMapKeyRef:
    30          key: DB_PORT
    31          name: platform-params-pf-database
    32    - name: PF_DB_ADMIN_PASSWORD
    33      valueFrom:
    34        secretKeyRef:
    35          key: DB_ADMIN_PASSWORD
    36          name: platform-secret-pf-database
    37    - name: PF_DB_ADMIN_USER
    38      valueFrom:
    39        secretKeyRef:
    40          key: DB_ADMIN_USER
    41          name: platform-secret-pf-database
    42    - name: ITA_DB_DATABASE
    43      valueFrom:
    44        configMapKeyRef:
    45          key: DB_DATABASE
    46          name: ita-params-ita-database
    47    - name: ITA_DB_HOST
    48      valueFrom:
    49        configMapKeyRef:
    50          key: DB_HOST
    51          name: ita-params-ita-database
    52    - name: ITA_DB_PORT
    53      valueFrom:
    54        configMapKeyRef:
    55          key: DB_PORT
    56          name: ita-params-ita-database
    57    - name: ITA_STORAGEPATH
    58      valueFrom:
    59        configMapKeyRef:
    60          key: STORAGEPATH
    61          name: ita-params-ita-global
    62    - name: ITA_DB_ADMIN_PASSWORD
    63      valueFrom:
    64        secretKeyRef:
    65          key: DB_ADMIN_PASSWORD
    66          name: ita-secret-ita-database
    67    - name: ITA_DB_ADMIN_USER
    68      valueFrom:
    69        secretKeyRef:
    70          key: DB_ADMIN_USER
    71          name: ita-secret-ita-database
    72    image: mariadb:10.9
    73    imagePullPolicy: IfNotPresent
    74    name: exastro-maintenance
    75    resources: {}
    76    securityContext:
    77      allowPrivilegeEscalation: false
    78      readOnlyRootFilesystem: false
    79      runAsGroup: 1000
    80      runAsNonRoot: true
    81      runAsUser: 1000
    82    volumeMounts:
    83    - mountPath: /storage
    84      name: volume-ita-backup-storage
    85  volumes:
    86  - name: volume-ita-backup-storage
    87    persistentVolumeClaim:
    88      claimName: pvc-ita-global
    89  restartPolicy: Always
    90  securityContext: {}
    91  serviceAccount: default
    92  serviceAccountName: default
    93_EOF_
    
    インストール時に設定したMongoDBを利用している場合、MongoDBのバックアップ作業用コンテナの作成をします。
    リスト 7.14 コマンド
     1cat <<_EOF_ | kubectl apply -f - --namespace exastro
     2apiVersion: v1
     3kind: Pod
     4metadata:
     5  name: exastro-oase-maintenance
     6  namespace: exastro
     7spec:
     8  containers:
     9  - command:
    10    - sh
    11    - -c
    12    args:
    13    - |
    14      #!/bin/bash
    15      sleep 3600
    16    env:
    17    - name: ITA_MONGO_HOST
    18      valueFrom:
    19        configMapKeyRef:
    20          key: MONGO_HOST
    21          name: ita-params-mongo
    22    - name: ITA_MONGO_PORT
    23      valueFrom:
    24        configMapKeyRef:
    25          key: MONGO_PORT
    26          name: ita-params-mongo
    27    - name: ITA_MONGO_ADMIN_USER
    28      valueFrom:
    29        secretKeyRef:
    30          key: MONGO_ADMIN_USER
    31          name: ita-secret-mongo
    32    - name: ITA_MONGO_ADMIN_PASSWORD
    33      valueFrom:
    34        secretKeyRef:
    35          key: MONGO_ADMIN_PASSWORD
    36          name: ita-secret-mongo
    37    image: mongo:6.0
    38    imagePullPolicy: IfNotPresent
    39    name: exastro-oase-maintenance
    40    resources: {}
    41    securityContext:
    42      allowPrivilegeEscalation: false
    43      readOnlyRootFilesystem: false
    44    volumeMounts:
    45    - mountPath: /storage
    46      name: volume-ita-backup-storage
    47  volumes:
    48  - name: volume-ita-backup-storage
    49    persistentVolumeClaim:
    50      claimName: pvc-ita-global
    51  restartPolicy: Always
    52  securityContext: {}
    53  serviceAccount: default
    54  serviceAccountName: default
    55_EOF_
    
  2. データベースのバックアップ取得

    データベースに対して mysqldump バックアップを取得します。
    Exastro Platform と Exastro IT Automation でデータベースサーバを共有するか、分離するかによって手順が異なります。
    リスト 7.15 アプリケーション用データベースバックアップコマンド
    kubectl exec -it exastro-maintenance --namespace exastro -- sh -c 'mysqldump -h ${PF_DB_HOST} -P ${PF_DB_PORT} -u ${PF_DB_ADMIN_USER} -p${PF_DB_ADMIN_PASSWORD} --all-databases --ignore-table=mysql.global_priv --add-drop-table' | gzip > exastro_mysqldump_platform_db_`date +"%Y%m%d-%H%M%S"`.sql.gz
    
    リスト 7.16 ユーザ用データベースバックアップコマンド
    kubectl exec -it exastro-maintenance --namespace exastro -- sh -c 'mysqldump -h ${PF_DB_HOST} -P ${PF_DB_PORT} -u ${PF_DB_ADMIN_USER} -p${PF_DB_ADMIN_PASSWORD} --allow-keywords --no-create-info mysql global_priv --where="user NOT IN (\"mariadb.sys\", \"root\", \"keycloak\", \"admin\", \"healthcheck\", \"pf-user\", \"ITA_USER\")"' | gzip > exastro_mysqldump_platform_user_`date +"%Y%m%d-%H%M%S"`.sql.gz
    
  3. ファイルのバックアップ取得

    Exastro IT Automation のファイルのバックアップを取得します。
    リスト 7.21 コマンド
    kubectl exec -i exastro-maintenance --namespace exastro -- sh -c 'tar zcvf - ${ITA_STORAGEPATH}' > exastro_storage_backup_ita_`date +"%Y%m%d-%H%M%S"`.tar.gz
    
  4. MongoDBのバックアップ取得

    OASEでインストール時に設定したMongoDBを利用している場合、MongoDBに対して mongodump バックアップを取得します。
    リスト 7.22 コマンド
    kubectl exec -it exastro-oase-maintenance --namespace exastro -- sh -c 'mongodump --host=${ITA_MONGO_HOST} --port=${ITA_MONGO_PORT} --username=${ITA_MONGO_ADMIN_USER} --password=${ITA_MONGO_ADMIN_PASSWORD} --out=/storage/exastro_mongodump'
    
    sudo tar cvfz ~/exastro_mongodump_`date +"%Y%m%d-%H%M%S"`.tar.gz --directory=/var/data/exastro-suite/exastro-it-automation/ita-common exastro_mongodump --remove-files
    
  5. メンテナンス用コンテナの削除

    バックアップ作業用コンテナを削除します。
    リスト 7.23 コマンド
    kubectl delete pod exastro-maintenance --namespace exastro
    
    ※MongoDBを利用している場合
    kubectl delete pod exastro-oase-maintenance --namespace exastro
    

7.4.3. サービス再開

  1. サービス再開

    サービス停止時に取得した各 Deployment の Pod 起動数を元に戻します。
    リスト 7.24 コマンド
    kubectl scale deploy,statefulset -n exastro --replicas=1 --all=true
    
    個別にreplicas数を設定する場合は以下のコマンドで再開します。
    サービス名は、停止時に確認した内容を入力してください。
    リスト 7.25 コマンド
    kubectl scale deployment [サービス名] -n exastro --replicas=[replicas数]
    
    Ver.2.4.0以降、サービス名:keycloak、mongodbについては以下のコマンドで再開します。
    リスト 7.26 コマンド
    kubectl scale statefulset [サービス名] -n exastro --replicas=[replicas数]
    

    Tip

    サービス名を複数指定する場合は、カンマ区切りで複数のサービス名を指定することができます。
  2. Pod 起動数の確認

    上記で起動した対象の Pod 数が元に戻りすべて READY になっていることを確認します。
    リスト 7.27 コマンド
    kubectl get deploy,statefulset -n exastro
    
    リスト 7.28 実行結果
    NAME                                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/ita-api-admin                            1/1     1            1           26h
    deployment.apps/ita-api-oase-receiver                    1/1     1            1           26h
    deployment.apps/ita-api-organization                     1/1     1            1           26h
    deployment.apps/ita-by-ansible-execute                   1/1     1            1           26h
    deployment.apps/ita-by-ansible-legacy-role-vars-listup   1/1     1            1           26h
    deployment.apps/ita-by-ansible-legacy-vars-listup        1/1     1            1           26h
    deployment.apps/ita-by-ansible-pioneer-vars-listup       1/1     1            1           26h
    deployment.apps/ita-by-ansible-towermaster-sync          1/1     1            1           26h
    deployment.apps/ita-by-cicd-for-iac                      1/1     1            1           26h
    deployment.apps/ita-by-collector                         1/1     1            1           26h
    deployment.apps/ita-by-conductor-regularly               1/1     1            1           26h
    deployment.apps/ita-by-conductor-synchronize             1/1     1            1           26h
    deployment.apps/ita-by-excel-export-import               1/1     1            1           26h
    deployment.apps/ita-by-hostgroup-split                   1/1     1            1           26h
    deployment.apps/ita-by-menu-create                       1/1     1            1           26h
    deployment.apps/ita-by-menu-export-import                1/1     1            1           26h
    deployment.apps/ita-by-oase-conclusion                   1/1     1            1           26h
    deployment.apps/ita-by-terraform-cli-execute             1/1     1            1           26h
    deployment.apps/ita-by-terraform-cli-vars-listup         1/1     1            1           26h
    deployment.apps/ita-by-terraform-cloud-ep-execute        1/1     1            1           26h
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup    1/1     1            1           26h
    deployment.apps/ita-web-server                           1/1     1            1           26h
    deployment.apps/mariadb                                  1/1     1            1           26h
    deployment.apps/platform-api                             1/1     1            1           26h
    deployment.apps/platform-auth                            1/1     1            1           26h
    deployment.apps/platform-job                             1/1     1            1           26h
    deployment.apps/platform-web                             1/1     1            1           26h
    
    NAME                        READY   AGE
    statefulset.apps/keycloak   1/1     26h
    statefulset.apps/mongo      1/1     26h
    

    警告

    バージョンによって、表示されるサービスが異なります。

7.5. リストア

7.5.1. サービス停止

  1. Pod 起動数の確認

    作業前の Pod 起動数の確認をし、状態を記録します。
    リスト 7.29 コマンド
     kubectl get deploy,statefulset -o jsonpath='{range .items[*]}{@.metadata.name}:{@.spec.replicas}{"\n"}' -n exastro
    
    リスト 7.30 実行結果
    ita-api-admin:1
    ita-api-oase-receiver:1
    ita-api-organization:1
    ita-by-ansible-execute:1
    ita-by-ansible-legacy-role-vars-listup:1
    ita-by-ansible-legacy-vars-listup:1
    ita-by-ansible-pioneer-vars-listup:1
    ita-by-ansible-towermaster-sync:1
    ita-by-cicd-for-iac:1
    ita-by-collector:1
    ita-by-conductor-regularly:1
    ita-by-conductor-synchronize:1
    ita-by-excel-export-import:1
    ita-by-hostgroup-split:1
    ita-by-menu-create:1
    ita-by-menu-export-import:1
    ita-by-oase-conclusion:1
    ita-by-terraform-cli-execute:1
    ita-by-terraform-cli-vars-listup:1
    ita-by-terraform-cloud-ep-execute:1
    ita-by-terraform-cloud-ep-vars-listup:1
    ita-web-server:1
    mariadb:1
    platform-api:1
    platform-auth:1
    platform-job:1
    platform-web:1
    keycloak:1
    mongo:1
    :
    
    各Deployment, StatefulSetのサービス名、replicas数が表示されます。

    警告

    バージョンによって、表示されるサービスが異なります。
  2. アプリケーションの停止

    アプリケーション (platform-auth) の Pod 起動数を 0 に変更し、アクセスを制限します。
    リスト 7.31 コマンド
    kubectl scale deploy,statefulset -n exastro --replicas=0 --all=true
    
    リスト 7.32 実行結果
    deployment.apps/ita-api-admin scaled
    deployment.apps/ita-api-oase-receiver scaled
    deployment.apps/ita-api-organization scaled
    deployment.apps/ita-by-ansible-execute scaled
    deployment.apps/ita-by-ansible-legacy-role-vars-listup scaled
    deployment.apps/ita-by-ansible-legacy-vars-listup scaled
    deployment.apps/ita-by-ansible-pioneer-vars-listup scaled
    deployment.apps/ita-by-ansible-towermaster-sync scaled
    deployment.apps/ita-by-cicd-for-iac scaled
    deployment.apps/ita-by-collector scaled
    deployment.apps/ita-by-conductor-regularly scaled
    deployment.apps/ita-by-conductor-synchronize scaled
    deployment.apps/ita-by-excel-export-import scaled
    deployment.apps/ita-by-hostgroup-split scaled
    deployment.apps/ita-by-menu-create scaled
    deployment.apps/ita-by-menu-export-import scaled
    deployment.apps/ita-by-oase-conclusion scaled
    deployment.apps/ita-by-terraform-cli-execute scaled
    deployment.apps/ita-by-terraform-cli-vars-listup scaled
    deployment.apps/ita-by-terraform-cloud-ep-execute scaled
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup scaled
    deployment.apps/ita-web-server scaled
    deployment.apps/mariadb scaled
    deployment.apps/platform-api scaled
    deployment.apps/platform-auth scaled
    deployment.apps/platform-job scaled
    deployment.apps/platform-web scaled
    statefulset.apps/keycloak scaled
    statefulset.apps/mongo scaled
    

    警告

    バージョンによって、表示されるサービスが異なります。
  3. データベースサービスのみ起動

    作業のため、データベースのサービスのみ再起動します。
    リスト 7.33 コマンド
    kubectl scale deployment mariadb -n exastro --replicas=1
    
    OASE ドライバをインストールしている場合は、MongoDB のサービスを起動します。
    リスト 7.34 コマンド
    kubectl scale statefulset mongo -n exastro --replicas=1
    
  4. Pod 起動数の確認

    データベース以外の Pod 数が 0 になっていることを確認します。
    リスト 7.35 コマンド
    kubectl get deploy,statefulset -n exastro
    
    リスト 7.36 実行結果
    NAME                                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/ita-api-admin                            0/0     0            0           26h
    deployment.apps/ita-api-oase-receiver                    0/0     0            0           26h
    deployment.apps/ita-api-organization                     0/0     0            0           26h
    deployment.apps/ita-by-ansible-execute                   0/0     0            0           26h
    deployment.apps/ita-by-ansible-legacy-role-vars-listup   0/0     0            0           26h
    deployment.apps/ita-by-ansible-legacy-vars-listup        0/0     0            0           26h
    deployment.apps/ita-by-ansible-pioneer-vars-listup       0/0     0            0           26h
    deployment.apps/ita-by-ansible-towermaster-sync          0/0     0            0           26h
    deployment.apps/ita-by-cicd-for-iac                      0/0     0            0           26h
    deployment.apps/ita-by-collector                         0/0     0            0           26h
    deployment.apps/ita-by-conductor-regularly               0/0     0            0           26h
    deployment.apps/ita-by-conductor-synchronize             0/0     0            0           26h
    deployment.apps/ita-by-excel-export-import               0/0     0            0           26h
    deployment.apps/ita-by-hostgroup-split                   0/0     0            0           26h
    deployment.apps/ita-by-menu-create                       0/0     0            0           26h
    deployment.apps/ita-by-menu-export-import                0/0     0            0           26h
    deployment.apps/ita-by-oase-conclusion                   0/0     0            0           26h
    deployment.apps/ita-by-terraform-cli-execute             0/0     0            0           26h
    deployment.apps/ita-by-terraform-cli-vars-listup         0/0     0            0           26h
    deployment.apps/ita-by-terraform-cloud-ep-execute        0/0     0            0           26h
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup    0/0     0            0           26h
    deployment.apps/ita-web-server                           0/0     0            0           26h
    deployment.apps/mariadb                                  1/1     1            1           26h
    deployment.apps/platform-api                             0/0     0            0           26h
    deployment.apps/platform-auth                            0/0     0            0           26h
    deployment.apps/platform-job                             0/0     0            0           26h
    deployment.apps/platform-web                             0/0     0            0           26h
    
    NAME                        READY   AGE
    statefulset.apps/keycloak   0/0     25h
    statefulset.apps/mongo      1/1     26h
    

    警告

    バージョンによって、表示されるサービスが異なります。

7.5.2. リストア

Exastro システム内で、Exastro Platform と Exastro IT Automation でデータベースを共有するか、分離するかによって手順が異なります。
  1. メンテナンス用コンテナの作成

    データベース、ファイルのリストア作業用コンテナの作成をします。
    リスト 7.37 コマンド
     1cat <<_EOF_ | kubectl apply -f - --namespace exastro
     2apiVersion: v1
     3kind: Pod
     4metadata:
     5  name: exastro-maintenance
     6  namespace: exastro
     7spec:
     8  containers:
     9  - command:
    10    - sh
    11    - -c
    12    args:
    13    - |
    14      #!/bin/bash
    15      sleep 3600
    16    env:
    17    - name: PF_DB_DATABASE
    18      valueFrom:
    19        configMapKeyRef:
    20          key: DB_DATABASE
    21          name: platform-params-pf-database
    22    - name: PF_DB_HOST
    23      valueFrom:
    24        configMapKeyRef:
    25          key: DB_HOST
    26          name: platform-params-pf-database
    27    - name: PF_DB_PORT
    28      valueFrom:
    29        configMapKeyRef:
    30          key: DB_PORT
    31          name: platform-params-pf-database
    32    - name: PF_DB_ADMIN_PASSWORD
    33      valueFrom:
    34        secretKeyRef:
    35          key: DB_ADMIN_PASSWORD
    36          name: platform-secret-pf-database
    37    - name: PF_DB_ADMIN_USER
    38      valueFrom:
    39        secretKeyRef:
    40          key: DB_ADMIN_USER
    41          name: platform-secret-pf-database
    42    - name: ITA_DB_DATABASE
    43      valueFrom:
    44        configMapKeyRef:
    45          key: DB_DATABASE
    46          name: ita-params-ita-database
    47    - name: ITA_DB_HOST
    48      valueFrom:
    49        configMapKeyRef:
    50          key: DB_HOST
    51          name: ita-params-ita-database
    52    - name: ITA_DB_PORT
    53      valueFrom:
    54        configMapKeyRef:
    55          key: DB_PORT
    56          name: ita-params-ita-database
    57    - name: ITA_STORAGEPATH
    58      valueFrom:
    59        configMapKeyRef:
    60          key: STORAGEPATH
    61          name: ita-params-ita-global
    62    - name: ITA_DB_ADMIN_PASSWORD
    63      valueFrom:
    64        secretKeyRef:
    65          key: DB_ADMIN_PASSWORD
    66          name: ita-secret-ita-database
    67    - name: ITA_DB_ADMIN_USER
    68      valueFrom:
    69        secretKeyRef:
    70          key: DB_ADMIN_USER
    71          name: ita-secret-ita-database
    72    image: mariadb:10.9
    73    imagePullPolicy: IfNotPresent
    74    name: exastro-maintenance
    75    resources: {}
    76    securityContext:
    77      allowPrivilegeEscalation: false
    78      readOnlyRootFilesystem: false
    79      runAsGroup: 1000
    80      runAsNonRoot: true
    81      runAsUser: 1000
    82    volumeMounts:
    83    - mountPath: /storage
    84      name: volume-ita-backup-storage
    85  volumes:
    86  - name: volume-ita-backup-storage
    87    persistentVolumeClaim:
    88      claimName: pvc-ita-global
    89  restartPolicy: Always
    90  securityContext: {}
    91  serviceAccount: default
    92  serviceAccountName: default
    93_EOF_
    
    インストール時に設定したMongoDBを利用している場合、MongoDBのリストア作業用コンテナの作成をします。
    リスト 7.38 コマンド
     1cat <<_EOF_ | kubectl apply -f - --namespace exastro
     2apiVersion: v1
     3kind: Pod
     4metadata:
     5  name: exastro-oase-maintenance
     6  namespace: exastro
     7spec:
     8  containers:
     9  - command:
    10    - sh
    11    - -c
    12    args:
    13    - |
    14      #!/bin/bash
    15      sleep 3600
    16    env:
    17    - name: ITA_MONGO_HOST
    18      valueFrom:
    19        configMapKeyRef:
    20          key: MONGO_HOST
    21          name: ita-params-mongo
    22    - name: ITA_MONGO_PORT
    23      valueFrom:
    24        configMapKeyRef:
    25          key: MONGO_PORT
    26          name: ita-params-mongo
    27    - name: ITA_MONGO_ADMIN_USER
    28      valueFrom:
    29        secretKeyRef:
    30          key: MONGO_ADMIN_USER
    31          name: ita-secret-mongo
    32    - name: ITA_MONGO_ADMIN_PASSWORD
    33      valueFrom:
    34        secretKeyRef:
    35          key: MONGO_ADMIN_PASSWORD
    36          name: ita-secret-mongo
    37    image: mongo:6.0
    38    imagePullPolicy: IfNotPresent
    39    name: exastro-oase-maintenance
    40    resources: {}
    41    securityContext:
    42      allowPrivilegeEscalation: false
    43      readOnlyRootFilesystem: false
    44    volumeMounts:
    45    - mountPath: /storage
    46      name: volume-ita-backup-storage
    47  volumes:
    48  - name: volume-ita-backup-storage
    49    persistentVolumeClaim:
    50      claimName: pvc-ita-global
    51  restartPolicy: Always
    52  securityContext: {}
    53  serviceAccount: default
    54  serviceAccountName: default
    55_EOF_
    
  2. データベースのリストア実施

    データベースに対して mysqldump リストアを実施します。
    Exastro Platform と Exastro IT Automation でデータベースサーバを共有するか、分離するかによって手順が異なります。
    リスト 7.39 ユーザ用データベースリストアコマンド
    gzip -dc exastro_mysqldump_platform_user_YYYYMMDD-HHmmss.sql.gz | kubectl exec -i exastro-maintenance --namespace exastro -- sh -c 'mysql -h ${PF_DB_HOST} -P ${PF_DB_PORT} -u ${PF_DB_ADMIN_USER} -p${PF_DB_ADMIN_PASSWORD} mysql'
    
    リスト 7.40 アプリケーション用データベースリストアコマンド
    gzip -dc exastro_mysqldump_platform_db_YYYYMMDD-HHmmss.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'| kubectl exec -i exastro-maintenance --namespace exastro -- sh -c 'mysql -h ${PF_DB_HOST} -P ${PF_DB_PORT} -u ${PF_DB_ADMIN_USER} -p${PF_DB_ADMIN_PASSWORD}'
    
    リスト 7.41 データベース権限更新コマンド
    kubectl exec -it <MariaDB Pod名> --bash -c "mysql -u root -ppassword -e 'FLUSH PRIVILEGES;'"
    
  3. ファイルのリストア実施

    Exastro IT Automation のファイルのリストアを実施します。
    リスト 7.48 コマンド
    kubectl exec -i exastro-maintenance --namespace exastro -- sh -c 'tar zxvf - -C /' < exastro_storage_backup_ita_YYYYMMDD-HHmmss.tar.gz
    
  4. MongoDBのリストア実施

    OASEでインストール時に設定したMongoDBを利用している場合、MongoDBのリストアを実施します。
    リスト 7.49 コマンド
    tar -zxvf exastro_mongodump_YYYYMMDD-HHmmss.tar.gz -C /var/data/exastro-suite/exastro-it-automation/ita-common
    
    kubectl exec -it exastro-oase-maintenance --namespace exastro -- sh -c 'mongorestore --host=${ITA_MONGO_HOST} --port=${ITA_MONGO_PORT} --username=${ITA_MONGO_ADMIN_USER} --password=${ITA_MONGO_ADMIN_PASSWORD} /storage/exastro_mongodump'
    
    sudo rm -rf /var/data/exastro-suite/exastro-it-automation/ita-common/exastro_mongodump/
    
  5. メンテナンス用コンテナの削除

    バックアップ作業用コンテナを削除します。
    リスト 7.50 コマンド
    kubectl delete pod exastro-maintenance --namespace exastro
    
    ※MongoDBを利用している場合
    kubectl delete pod exastro-oase-maintenance --namespace exastro
    

7.5.3. サービス再開

  1. サービス再開

    サービス停止時に取得した各 Deployment の Pod 起動数を元に戻します。
    リスト 7.51 コマンド
    kubectl scale deploy,statefulset -n exastro --replicas=1 --all=true
    
    個別にreplicas数を設定する場合は以下のコマンドで再開します。
    サービス名は、停止時に確認した内容を入力してください。
    リスト 7.52 コマンド
    kubectl scale deployment [サービス名] -n exastro --replicas=[replicas数]
    
    Ver.2.4.0以降、サービス名:keycloak、mongodbについては以下のコマンドで再開します。
    リスト 7.53 コマンド
    kubectl scale statefulset [サービス名] -n exastro --replicas=[replicas数]
    

    Tip

    サービス名を複数指定する場合は、カンマ区切りで複数のサービス名を指定することができます。
  2. Pod 起動数の確認

    上記で起動した対象の Pod 数が元に戻りすべて READY になっていることを確認します。
    リスト 7.54 コマンド
    kubectl get deploy,statefulset -n exastro
    
    リスト 7.55 実行結果
    NAME                                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/ita-api-admin                            1/1     1            1           26h
    deployment.apps/ita-api-oase-receiver                    1/1     1            1           26h
    deployment.apps/ita-api-organization                     1/1     1            1           26h
    deployment.apps/ita-by-ansible-execute                   1/1     1            1           26h
    deployment.apps/ita-by-ansible-legacy-role-vars-listup   1/1     1            1           26h
    deployment.apps/ita-by-ansible-legacy-vars-listup        1/1     1            1           26h
    deployment.apps/ita-by-ansible-pioneer-vars-listup       1/1     1            1           26h
    deployment.apps/ita-by-ansible-towermaster-sync          1/1     1            1           26h
    deployment.apps/ita-by-cicd-for-iac                      1/1     1            1           26h
    deployment.apps/ita-by-collector                         1/1     1            1           26h
    deployment.apps/ita-by-conductor-regularly               1/1     1            1           26h
    deployment.apps/ita-by-conductor-synchronize             1/1     1            1           26h
    deployment.apps/ita-by-excel-export-import               1/1     1            1           26h
    deployment.apps/ita-by-hostgroup-split                   1/1     1            1           26h
    deployment.apps/ita-by-menu-create                       1/1     1            1           26h
    deployment.apps/ita-by-menu-export-import                1/1     1            1           26h
    deployment.apps/ita-by-oase-conclusion                   1/1     1            1           26h
    deployment.apps/ita-by-terraform-cli-execute             1/1     1            1           26h
    deployment.apps/ita-by-terraform-cli-vars-listup         1/1     1            1           26h
    deployment.apps/ita-by-terraform-cloud-ep-execute        1/1     1            1           26h
    deployment.apps/ita-by-terraform-cloud-ep-vars-listup    1/1     1            1           26h
    deployment.apps/ita-web-server                           1/1     1            1           26h
    deployment.apps/mariadb                                  1/1     1            1           26h
    deployment.apps/platform-api                             1/1     1            1           26h
    deployment.apps/platform-auth                            1/1     1            1           26h
    deployment.apps/platform-job                             1/1     1            1           26h
    deployment.apps/platform-web                             1/1     1            1           26h
    
    NAME                        READY   AGE
    statefulset.apps/keycloak   1/1     26h
    statefulset.apps/mongo      1/1     26h
    

    警告

    バージョンによって、表示されるサービスが異なります。