第6章 コントロールプレーンのバックアップおよび復元
6.1. etcd のバックアップ
etcd は OpenShift Container Platform のキーと値のストアであり、すべてのリソースオブジェクトの状態を保存します。
クラスターの etcd データを定期的にバックアップし、OpenShift Container Platform 環境外の安全な場所に保存するのが理想的です。インストールの 24 時間後に行われる最初の証明書のローテーションが完了するまで etcd のバックアップを実行することはできません。ローテーションの完了前に実行すると、バックアップに期限切れの証明書が含まれることになります。etcd スナップショットは I/O コストが高いため、ピーク使用時間以外に etcd バックアップを取得することも推奨します。
クラスターを更新する前に、必ず etcd のバックアップを作成してください。クラスターを復元するときに、同じ z-stream リリースから取得した etcd バックアップを使用する必要があるため、更新する前にバックアップを作成することが重要です。たとえば、OpenShift Container Platform 4.17.5 クラスターでは、4.17.5 から取得した etcd バックアップを使用する必要があります。
コントロールプレーンホストでバックアップスクリプトの単一の呼び出しを実行して、クラスターの etcd データをバックアップします。各コントロールプレーンホストのバックアップを取得しないでください。
etcd のバックアップを作成したら、以前のクラスターの状態に復元 できます。
6.1.1. etcd データのバックアップ
以下の手順に従って、etcd スナップショットを作成し、静的 Pod のリソースをバックアップして etcd データをバックアップします。このバックアップは保存でき、etcd を復元する必要がある場合に後で使用することができます。
単一のコントロールプレーンホストからのバックアップのみを保存します。クラスター内の各コントロールプレーンホストからのバックアップは取得しないでください。
前提条件
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
- クラスター全体のプロキシーが有効になっているかどうかを確認している。 ヒント- oc get proxy cluster -o yamlの出力を確認して、プロキシーが有効にされているかどうかを確認できます。プロキシーは、- httpProxy、- httpsProxy、および- noProxyフィールドに値が設定されている場合に有効にされます。
手順
- コントロールプレーンノードの root としてデバッグセッションを開始します。 - oc debug --as-root node/<node_name> - $ oc debug --as-root node/<node_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- デバッグシェルで root ディレクトリーを - /hostに変更します。- chroot /host - sh-4.4# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クラスター全体のプロキシーが有効になっている場合は、次のコマンドを実行して、 - NO_PROXY、- HTTP_PROXY、および- HTTPS_PROXY環境変数をエクスポートします。- export HTTP_PROXY=http://<your_proxy.example.com>:8080 - $ export HTTP_PROXY=http://<your_proxy.example.com>:8080- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - export HTTPS_PROXY=https://<your_proxy.example.com>:8080 - $ export HTTPS_PROXY=https://<your_proxy.example.com>:8080- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - export NO_PROXY=<example.com> - $ export NO_PROXY=<example.com>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- デバッグシェルで - cluster-backup.shスクリプトを実行し、バックアップの保存先となる場所を渡します。ヒント- cluster-backup.shスクリプトは etcd Cluster Operator のコンポーネントとして維持され、- etcdctl snapshot saveコマンドに関連するラッパーです。- /usr/local/bin/cluster-backup.sh /home/core/assets/backup - sh-4.4# /usr/local/bin/cluster-backup.sh /home/core/assets/backup- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - スクリプトの出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - この例では、コントロールプレーンホストの - /home/core/assets/backup/ディレクトリーにファイルが 2 つ作成されます。- 
									snapshot_<datetimestamp>.db: このファイルは etcd スナップショットです。cluster-backup.shスクリプトで、その有効性を確認します。
- static_kuberesources_<datetimestamp>.tar.gz: このファイルには、静的 Pod のリソースが含まれます。etcd 暗号化が有効にされている場合、etcd スナップショットの暗号化キーも含まれます。注記- etcd 暗号化が有効にされている場合、セキュリティー上の理由から、この 2 つ目のファイルを etcd スナップショットとは別に保存することが推奨されます。ただし、このファイルは etcd スナップショットから復元するために必要になります。 - etcd 暗号化はキーではなく値のみを暗号化することに注意してください。つまり、リソースタイプ、namespace、およびオブジェクト名は暗号化されません。 
 
- 
									
6.1.3. 自動 etcd バックアップの作成
etcd の自動バックアップ機能は、繰り返しバックアップとシングルバックアップの両方をサポートします。繰り返しバックアップでは、ジョブがトリガーされるたびにシングルバックアップを開始する cron ジョブが作成されます。
etcd バックアップの自動化はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
etcd の自動バックアップを有効にするには、次の手順を実行します。
						クラスターで TechPreviewNoUpgrade 機能セットを有効にすると、マイナーバージョンの更新ができなくなります。TechPreviewNoUpgrade 機能セットは無効にできません。実稼働クラスターではこの機能セットを有効にしないでください。
					
前提条件
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
- 
							OpenShift CLI (oc) にアクセスできる。
手順
- 次の内容で、 - enable-tech-preview-no-upgrade.yamlという名前の- FeatureGateカスタムリソース (CR) ファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- CR を適用し、自動バックアップを有効にします。 - oc apply -f enable-tech-preview-no-upgrade.yaml - $ oc apply -f enable-tech-preview-no-upgrade.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 関連する API を有効にするのに時間がかかります。次のコマンドを実行して、カスタムリソース定義 (CRD) が作成されたことを確認します。 - oc get crd | grep backup - $ oc get crd | grep backup- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - backups.config.openshift.io 2023-10-25T13:32:43Z etcdbackups.operator.openshift.io 2023-10-25T13:32:04Z - backups.config.openshift.io 2023-10-25T13:32:43Z etcdbackups.operator.openshift.io 2023-10-25T13:32:04Z- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
6.1.3.1. シングル etcd バックアップの作成
次の手順でカスタムリソース (CR) を作成して適用することで、シングル etcd バックアップを作成します。
前提条件
- 
								cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
- 
								OpenShift CLI (oc) にアクセスできる。
手順
- 動的にプロビジョニングされたストレージが利用可能な場合は、次の手順を実行して、単一の自動 etcd バックアップを作成します。 - 次の例のような内容で、 - etcd-backup-pvc.yamlという名前の永続ボリューム要求 (PVC) を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- PVC に利用できるストレージの量。この値は、要件に合わせて調整します。
 
- 以下のコマンドを実行して PVC を適用します。 - oc apply -f etcd-backup-pvc.yaml - $ oc apply -f etcd-backup-pvc.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、PVC が作成されたことを確認します。 - oc get pvc - $ oc get pvc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE etcd-backup-pvc Bound 51s - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE etcd-backup-pvc Bound 51s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- 動的 PVC は、マウントされるまで - Pending状態から遷移しません。
- 次の例のような内容で、 - etcd-single-backup.yamlという名前の CR ファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- バックアップを保存する PVC の名前。この値は、使用している環境に応じて調整してください。
 
- CR を適用してシングルバックアップを開始します。 - oc apply -f etcd-single-backup.yaml - $ oc apply -f etcd-single-backup.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 動的にプロビジョニングされたストレージが利用できない場合は、次の手順を実行して、単一の自動 etcd バックアップを作成します。 - 次の内容で、 - etcd-backup-local-storage.yamlという名前の- StorageClassCR ファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - StorageClassCR を適用します。- oc apply -f etcd-backup-local-storage.yaml - $ oc apply -f etcd-backup-local-storage.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような内容の - etcd-backup-pv-fs.yamlという名前の PV を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、PV が作成されたことを確認します。 - oc get pv - $ oc get pv- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE etcd-backup-pv-fs 100Gi RWO Retain Available etcd-backup-local-storage 10s - NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE etcd-backup-pv-fs 100Gi RWO Retain Available etcd-backup-local-storage 10s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような内容で、 - etcd-backup-pvc.yamlという名前の PVC を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- PVC に利用できるストレージの量。この値は、要件に合わせて調整します。
 
- 以下のコマンドを実行して PVC を適用します。 - oc apply -f etcd-backup-pvc.yaml - $ oc apply -f etcd-backup-pvc.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような内容で、 - etcd-single-backup.yamlという名前の CR ファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- バックアップを保存する永続ボリューム要求 (PVC) の名前。この値は、使用している環境に応じて調整してください。
 
- CR を適用してシングルバックアップを開始します。 - oc apply -f etcd-single-backup.yaml - $ oc apply -f etcd-single-backup.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
6.1.3.2. 繰り返し etcd バックアップの作成
etcd の自動繰り返しバックアップを作成するには、次の手順に従います。
可能であれば、動的にプロビジョニングされたストレージを使用して、作成された etcd バックアップデータを安全な外部の場所に保存します。動的にプロビジョニングされたストレージが利用できない場合は、バックアップの復元にアクセスしやすくするために、バックアップデータを NFS 共有に保存することを検討してください。
前提条件
- 
								cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
- 
								OpenShift CLI (oc) にアクセスできる。
手順
- 動的にプロビジョニングされたストレージが利用可能な場合は、次の手順を実行して、自動化された繰り返しバックアップを作成します。 - 次の例のような内容で、 - etcd-backup-pvc.yamlという名前の永続ボリューム要求 (PVC) を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- PVC に利用できるストレージの量。この値は、要件に合わせて調整します。
 注記- 次の各プロバイダーでは、 - accessModesキーと- storageClassNameキーを変更する必要があります。- Expand - Provider - accessModes値- storageClassName値- versioned-installer-efc_operator-ciプロファイルを持つ AWS- - ReadWriteMany- efs-sc- Google Cloud Platform - - ReadWriteMany- filestore-csi- Microsoft Azure - - ReadWriteMany- azurefile-csi
- 以下のコマンドを実行して PVC を適用します。 - oc apply -f etcd-backup-pvc.yaml - $ oc apply -f etcd-backup-pvc.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、PVC が作成されたことを確認します。 - oc get pvc - $ oc get pvc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE etcd-backup-pvc Bound 51s - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE etcd-backup-pvc Bound 51s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- 動的 PVC は、マウントされるまで - Pending状態から遷移しません。
 
- 動的にプロビジョニングされたストレージが使用できない場合は、次の手順を実行してローカルストレージ PVC を作成します。 警告- 保存されているバックアップデータが格納されたノードを削除するか、該当ノードへのアクセスを失うと、データが失われる可能性があります。 - 次の内容で、 - etcd-backup-local-storage.yamlという名前の- StorageClassCR ファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - StorageClassCR を適用します。- oc apply -f etcd-backup-local-storage.yaml - $ oc apply -f etcd-backup-local-storage.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 適用された - StorageClassから、次の例のような内容の- etcd-backup-pv-fs.yamlという名前の PV を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow ヒント- 次のコマンドを実行して、使用可能なノードのリストを表示します。 - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、PV が作成されたことを確認します。 - oc get pv - $ oc get pv- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE etcd-backup-pv-fs 100Gi RWX Delete Available etcd-backup-local-storage 10s - NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE etcd-backup-pv-fs 100Gi RWX Delete Available etcd-backup-local-storage 10s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような内容で、 - etcd-backup-pvc.yamlという名前の PVC を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- PVC に利用できるストレージの量。この値は、要件に合わせて調整します。
 
- 以下のコマンドを実行して PVC を適用します。 - oc apply -f etcd-backup-pvc.yaml - $ oc apply -f etcd-backup-pvc.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- etcd-recurring-backups.yamlという名前のカスタムリソース定義 (CRD) ファイルを作成します。作成された CRD の内容は、自動化されたバックアップのスケジュールと保持タイプを定義します。- 15 個のバックアップを保持する - RetentionNumberのデフォルトの保持タイプでは、次の例のような内容を使用します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 定期的なバックアップのCronTabスケジュール。この値は、必要に応じて調整します。
 - バックアップの最大数に基づいて保持を使用するには、次のキーと値のペアを - etcdキーに追加します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 警告- 既知の問題により、保持されるバックアップの数が設定された値に 1 を加えた数になります。 - バックアップのファイルサイズに基いて保持する場合は、以下を使用します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 保持するバックアップの最大ファイルサイズ (ギガバイト単位)。この値は、必要に応じて調整します。指定しない場合、デフォルトは 10 GB になります。
 警告- 既知の問題により、保持されるバックアップの最大サイズが設定値より最大 10 GB 大きくなります。 
- 次のコマンドを実行して、CRD で定義される cron ジョブを作成します。 - oc create -f etcd-recurring-backup.yaml - $ oc create -f etcd-recurring-backup.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 作成された cron ジョブを検索するには、次のコマンドを実行します。 - oc get cronjob -n openshift-etcd - $ oc get cronjob -n openshift-etcd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow