“オペレーターリファレンス”を参照し、新しいメジャーバージョンの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を指定します。 
  | 
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)は十分なディスク容量を用意してください。
新しい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カスタムリソ-ス名>