ページの先頭行へ戻る
Enterprise Postgres 15 オペレーターユーザーズガイド

6.4.3 FEPのメジャーバージョンアップグレード

6.4.3.1 新規FEPClusterCRの作成

“オペレーターリファレンス”を参照し、新しいメジャーバージョンのFEPClusterカスタムリソースを定義します。このとき、“6.4.1 データソースのFEPClusterの事前作業”と同様に、アップグレード実行コンテナの接続を許可してください。

さらに、下記のFEPClusterカスタムリソースの定義例のように“spec.fepChildCrVal.upgrade”フィールドを定義することで、FEPのメジャーバージョンアップグレードが実行されます。

アップグレード実行コンテナではデータソースのFEPClusterから取得したダンプファイルを格納するためのPVを利用します。

Kubernetes環境でPVの自動プロビジョニング機能を有効にしていない場合は、FEPClusterカスタムリソースを作成する前に、新規作成のFEPCluster用のPVに加えて、アップグレード用のPVを作成します。

また、“6.4.1 データソースのFEPClusterの事前作業”と同様に、“spec.fepChildCrVal.customPgHba”を編集して、アップグレード実行コンテナの接続を許可します。

アップグレードを実行するFEPClusterカスタムリソースの定義例

apiVersion: fep.fujitsu.io/v2
kind: FEPCluster
metadata:
  name: destination-fep
  namespace: my-namespace
spec:
  fep:
    ...
  fepChildCrVal:
    upgrade
      sourceCluster: source-fep-cluster
      storage:
        size: 8Gi
    customPgHba: |
      host  all  all  destination-fep-upgrade-pod.destination-fep-upgrade-headless-svc.my-namespace.svc.cluster.local  trust
    ...

FEPClusterカスタムリソースのフィールド“spec.fepChildCrVal.upgrade”

フィールド

デフォルト値

説明

spec.fepChildCrVal.upgrade

オプション

このフィールドが定義されるとメジャーバージョンアップグレードを実行します。

ただし、spec.fepChildCrVal.restoreが定義されているとFEPClusterの構築が停止します。

spec.fepChildCrVal.upgrade.sourceCluster

データ移行元のFEPClusterCR名を指定します。

spec.fepChildCrVal.upgradeを定義する場合、必ず指定します。

spec.fepChildCrVal.upgrade.mcSpec.limits

cpu: 200m

memory: 300Mi

オプション

アップグレード実行コンテナに割り当てるリソースの上限値を指定します。

spec.fepChildCrVal.upgrade.mcSpec.requests

cpu: 100m

memory: 200Mi

オプション

アップグレード実行コンテナに割り当てるリソースの下限値を指定します。

spec.fepChildCrVal.upgrade.image

オプション

省略時はオペレーターコンテナ環境からimageのURLが取得されます。

spec.fepChildCrVal.upgrade.imagePullPolicy

IfNotPresent

オプション

コンテナイメージのpull policyを指定します。

  • Always

  • IfNotPresent

  • Never

spec.fepChildCrVal.upgrade.source.pgAdminTls.certificateName

オプション

データソースのFEPClusterがアップグレード実行コンテナの認証方法を"cert"にしていた場合、データソースのFEPClusterのspec.fepChildCrVal.sysUsers.pgAdminTls.certificateNameを定義しているシークレットの証明書を利用します。

上記のパラメータが定義されていない場合、このパラメータでデータソースのPostgresユーザー"postgres"の証明書を含むKubernetes TLSシークレットを指します。

シークレットの作成方法は“4.7.1 証明書を手動で管理する方法”を参照してください。

spec.fepChildCrVal.upgrade.destination.pgAdminTls.certificateName

オプション

新規作成のFEPClusterがアップグレード実行コンテナの認証方法を"cert"にしていた場合、新規作成のFEPClusterのspec.fepChildCrVal.sysUsers.pgAdminTls.certificateNameを定義しているシークレットの証明書を利用します。

上記のパラメータが定義されていない場合、このパラメータで新規作成のPostgresユーザー"postgres"の証明書を含むKubernetes TLSシークレットを指します。

シークレットの作成方法は“4.7.1 証明書を手動で管理する方法”を参照してください。

spec.fepChildCrVal.upgrade.storage

オプション

ダンプファイルを格納するためのストレージを定義します。

spec.fepChildCrVal.upgrade.storage.storageClass

オプション

省略された場合、運用している環境のデフォルトのストレージクラスを利用します。

spec.fepChildCrVal.upgrade.storage.size

2Gi

オプション

ダンプファイルを格納するストレージのサイズを指定します。

spec.fepChildCrVal.upgrade.storage.accessModes

ReadWriteOnce

オプション

ダンプファイルを格納するストレージのアクセスモード

アクセスモードの配列として指定します。

例: [ReadWriteMany]

省略すると、[ReadWriteOnce]として扱われます。

注意

データベースに接続し、以下のSQLを実行して、事前にデータベースのサイズを確認してください。

$ SELECT pg_size_pretty(sum(pg_database_size(datname))) AS dbsize FROM pg_database;

アップグレード実行コンテナで利用する、pg_dumpallコマンドはデータベースのデータをSQLコマンドとして出力するため、実際に作成されるファイルは次のとおりです。

例えば、整数型の2147483647は、データベースデータの場合は4バイトです。

ただし、SQLコマンドはそれらを文字列として出力するため、これは10バイトです。したがって、ダンプファイルを格納するストレージ(PV)は十分なディスク容量を用意してください。

6.4.3.2 FEPメジャーアップグレードの完了確認

新しいFEPClusterにデータを移行し、FEPのメジャーバージョンアップグレードが成功すると下記のeventが出力されます。

$ kubectl get event
LAST SEEN  TYPE    REASON                OBJECT                           MESSAGE
164m       Normal  SuccessfulFepUpgrade  fepupgrade/<新規FEPClusterCR名>  <namespace>, Successfully FEP Upgrade

また、FEPClusterCRのYAMLに下記のアノテーションが追記されます。

apiVersion: fep.fujitsu.io/v2
kind: FEPCluster
metadata:
  annotations:
    FEPUpgradeDone: true
...
  name: destination-fep-cluster
  namespace: my-namespace
spec:
...

注意

FEPのメジャーアップグレードに失敗すると下記のようなeventが出力されます。

$ kubectl get event
LAST SEEN   TYPE     REASON            OBJECT                           MESSAGE
164m        Warning  FailedFepUpgrade  fepupgrade/<新規FEPClusterCR名>  <namespace>, Error/Failure in FEP Upgrade

OBJECTカラムに記載されているKubernetesリソースの情報を取得し、出力されているメッセージを確認のうえで、新規のFEPClusterカスタムリソースを再作成してください。

$ kubectl describe fepupgrade/<新規FEPClusterカスタムリソ-ス名>