“オペレーターリファレンス”を参照し、新しいメジャーバージョンの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カスタムリソ-ス名>