バックアップと復元
Red Hat Advanced Cluster Security for Kubernetes のバックアップと復元
概要
第1章 Red Hat Advanced Cluster Security for Kubernetes のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes のデータバックアップを実行し、インフラストラクチャーの障害やデータの破損が発生した場合にデータの復元に使用できます。
Amazon S3、S3 API 互換サービス、または Google Cloud Storage と統合することで、Central データベースの自動バックアップを設定できます。roxctl CLI を使用して、Central データベースのオンデマンドバックアップを実行できます。RHACS Operator または Helm Chart のインストール方法を使用して、Central デプロイメントをバックアップすることもできます。
要件に応じて、2 種類のバックアップを作成できます。
- Central データベースのバックアップ: RHACS 設定、リソース、イベント、および証明書が含まれます。データベース障害やデータ破損などの予期せぬ事態が発生した場合は、バックアップを使用して Central データベースを回復し、以前の機能状態に復元できます。これにより、重要なデータの可用性と整合性が確保され、大幅に中断したり重要な情報を失うことなく、通常の運用を継続できるようになります。
- すべてのカスタムデプロイメント設定のバックアップ: Helm チャートまたは RHACS Operator を使用して RHACS をインストールした場合は、インストールに固有の設定、パラメーター、およびカスタマイズをバックアップできます。RHACS インストールが誤って削除されるか、別のクラスターまたは namespace に移行する必要がある場合は、デプロイメント設定のバックアップがあると、シームレスなリカバリープロセスが可能になります。さらに、バックアップからカスタム設定を復元することで、Central インストールに固有の要件と設定を効率的に元に戻し、システムの一貫性と正確なデプロイメントを確保できます。
1.1. 外部データベースおよびクラウドユーザーのバックアップに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
外部データベースを使用する場合や、クラウドユーザーの場合は、バックアップを異なる方法で管理する必要があります。
外部データベースのバックアップ
外部データベースを使用する場合は、自動バックアップオプションを使用したり、Red Hat Advanced Cluster Security for Kubernetes (RHACS) 内からバックアッププロセスを開始したりできません。
- 外部データベースをアップグレードする場合は、バックアップを開始する前に Central をスケールダウンする必要があります。Central は、データベースへの接続を成功するまで試みます。これにより、アップグレードプロセス時に問題が発生する可能性があります。
- 管理するデータベースの場合は、データベースベンダーが推奨するバックアップ手順を使用する必要があります。
クラウドユーザーのバックアップ
クラウドユーザーの場合、自動バックアップオプションを使用したり、統合からバックアッププロセスを開始したりできません。データのバックアップは Red Hat が行います。
1.1.1. PostgreSQL データベースおよび証明書のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) インスタンスを外部 PostgreSQL データベースにバックアップすることで、ベンダー推奨の手順に従ってデータのセキュリティーと整合性を確保できます。このプロセスでは、まず PostgreSQL データベースをバックアップしてから、次に RHACS 証明書をバックアップします。
手順
PostgreSQL データベースをバックアップするには、次のコマンドを実行します。
$ pg_dump -U <username> -d <database_name> -f <output_file_path>ここでは、以下のようになります。
<username>- ダンプの実行に必要な権限が割り当てられたユーザーの名前を指定します。
<database_name>- データベースの実際の名前を指定します。
<output_file_path>- バックアップファイルの保存先と名前を指定します。
RHACS 証明書をバックアップするには、次のコマンドを実行します。
$ roxctl central backup --certs-only=true
バックアップファイルにはシークレットと証明書が含まれるため、バックアップファイルを安全に保存する必要があります。
1.2. roxctl CLI を使用した Central データベースのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Central データベースのバックアップは、データの整合性とシステムの信頼性を確保するために重要です。必要な設定、リソース、イベント、証明書を含むデータベースを定期的にバックアップすることで、データベースの障害、破損、偶発的なデータ損失を防ぎます。
roxctl CLI を使用し、backup コマンドでバックアップを作成できます。このコマンドを実行するには、API トークンまたは管理者パスワードが必要です。
Red Hat は、Amazon S3 または Google Cloud Storage とのインテグレーションにより、Central データベースのバックアップをサポートしています。
S3 API 互換 ストレージへのバックアップは動作が保証されません。Red Hat は、RHACS のバックアップに関して、すべての S3 API 互換プロバイダーをテストおよびサポートしているわけではありません。
1.2.1. API トークンを使用したオンデマンドバックアップ リンクのコピーリンクがクリップボードにコピーされました!
API トークンを使用して、RHACS のデータベース全体をバックアップできます。
前提条件
-
Adminロールを持つ API トークンがある。 -
roxctlCLI をインストールしている。
手順
次のコマンドを実行して、
ROX_API_TOKENおよびROX_ENDPOINT環境変数を設定します。$ export ROX_API_TOKEN=<api_token>$ export ROX_ENDPOINT=<address>:<port_number>次のコマンドを実行して、Central のバックアップを開始します。
$ roxctl central backup1 - 1
--outputオプションを使用して、バックアップファイルの場所を指定できます。
デフォルトでは、
roxctlCLI はコマンドを実行するディレクトリーにバックアップファイルを保存します。
1.2.2. 管理者パスワードを使用したオンデマンドバックアップ リンクのコピーリンクがクリップボードにコピーされました!
管理者パスワードを使用して、RHACS のデータベース全体をバックアップできます。
前提条件
- 管理者パスワードがある。
-
roxctlCLI をインストールしている。
手順
次のコマンドを実行して、
ROX_ENDPOINT環境変数を設定します。$ export ROX_ENDPOINT=<address>:<port_number>次のコマンドを実行して、Central のバックアップを開始します。
$ roxctl -p <admin_password> central backup1 - 1
<admin_password>には、管理者のパスワードを指定します。
デフォルトでは、
roxctlCLI がコマンドを実行したディレクトリーにバックアップファイルを保存します。--outputオプションを使用して、バックアップファイルの場所を指定できます。
1.3. Central デプロイメントのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Central インスタンスのデプロイメントをバックアップできます。これは、同じ設定値を使用して Central を別の namespace またはクラスターに移行する場合に便利です。
Red Hat は、roxctl CLI を使用したデプロイメント設定のバックアップをサポートしていません。oc または kubectl CLI を使用して、Central インスタンスに関連するマニフェストをバックアップし、設定を復元できます。
1.3.1. RHACS Operator を使用したデプロイメントのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
RHACS Operator を使用して RHACS をインストールすると、OpenShift Container Platform は Central デプロイメントのすべてのカスタム設定を Central カスタムリソース内に保存します。Central カスタムリソース、central-tls シークレット、および管理者パスワードをバックアップできます。central-tls シークレットには、セキュリティーで保護されたクラスターでの認証と API トークンへの署名のための証明書が含まれています。
手順
次のコマンドを実行して、Central カスタムリソースを YAML ファイルに保存します。
$ oc get central -n _<central-namespace>_ _<central-name>_ -o yaml > central-cr.yaml次のコマンドを実行して、
central-tlsを JSON ファイルに保存します。$ oc get secret -n _<central-namespace>_ central-tls -o json | jq 'del(.metadata.ownerReferences)' > central-tls.jsonJSON ファイル内の管理者パスワードに対して次のコマンドを実行します。
$ oc get secret -n _<central-namespace>_ central-htpasswd -o json | jq 'del(.metadata.ownerReferences)' > central-htpasswd.json
1.3.2. Helm を使用したデプロイメントのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Helm チャートを使用して RHACS をインストールすると、Helm チャートに適用するカスタム値内に Central デプロイメントのすべてのカスタム設定が保存されます。
カスタム値をバックアップし、YAML ファイルに保存できます。
手順
次のコマンドを実行して、カスタム Helm チャートの値を YAML ファイルにバックアップします。
$ helm get values --all -n _<central-namespace>_ _<central-helm-release>_ -o yaml > central-values-backup.yaml
第2章 バックアップからの復元 リンクのコピーリンクがクリップボードにコピーされました!
roxctl コマンドラインインターフェイス (CLI) を使用して、既存のバックアップから Red Hat Advanced Cluster Security for Kubernetes (RHACS) を復元できます。
要件とバックアップしたデータに応じて、次のタイプのバックアップから復元できます。
- 外部 PostgreSQL データベースを復元する: 外部 PostgreSQL データベースを使用する場合は、これを使用して RHACS インスタンスを復元します。既存のデータベース設定を維持しながら、システムデータを復元できます。
- Central 証明書を復元して Central を再デプロイする: これを使用して、データベースの復元後に Central 証明書を復元し、Central をデプロイし直します。これにより、セキュアなクラスターおよび API トークンの認証証明書が有効なままになります。
- Restore Central database from the Central database backup: これを使用して、データベース障害またはデータ破損イベントから回復します。Central データベースを以前の正常な状態に復元および回復できます。
- Restore Central from the Central deployment backup: Central を別のクラスターまたは namespace に移行する場合は、これを使用します。このオプションは、Central インストールの設定を復元します。
2.1. 外部 PostgreSQL データベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
外部 PostgreSQL データベースを復元することで、既存のデータベース設定を維持しながら、バックアップから Red Hat Advanced Cluster Security for Kubernetes (RHACS) インスタンスを回復できます。
この手順では、RHACS システムデータを含むデータベースの復元に重点を置いています。ベンダーが推奨する pg_restore コマンドを使用すると、PostgreSQL データベースの復元を実行できます。
前提条件
-
Central が
0にスケールダウンされている。
手順
PostgreSQL の復元を実行するには、以下のコマンドを実行します。
$ pg_restore -U <username> -d <database_name> <path_to_backup_file>ここでは、以下のようになります。
<username>- 実際のユーザー名を指定します。
<database_name>- ターゲットデータベースの名前を指定します。
<path_to_backup_file>-
復元するファイルの場所と名前を指定します。
.tar、.gz、または別のカスタムファイル形式を使用できます。
外部 PostgreSQL データベースを復元した後、RHACS Central 証明書を復元する必要があります。
2.2. Central 証明書の復元および Central の再デプロイ リンクのコピーリンクがクリップボードにコピーされました!
セキュアクラスターの認証証明書と API トークンが再デプロイされた Central インスタンスに対して有効な状態にするには、Central 証明書を復元して Central を再デプロイする必要があります。
手順
roxctl central generate interactiveコマンドを実行し、バックアップファイルへのパスを指定すると、必要なマニフェストとスクリプトを含む central-bundle フォルダーが作成されます。その後、これらのファイルを使用して Central をインストールし、すべての認証証明書と API トークンが有効であることを確認できます。
詳細は、「roxctl CLI を使用した証明書の復元」を参照してください。
2.3. roxctl CLI を使用した Central データベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
roxctl CLI を使用し、restore コマンドで Red Hat Advanced Cluster Security for Kubernetes を復元できます。このコマンドを実行するには、API トークンまたは管理者パスワードが必要です。
2.3.1. API トークンを使用した復元 リンクのコピーリンクがクリップボードにコピーされました!
API トークンを使用して、RHACS のデータベース全体を復元できます。
前提条件
- RHACS バックアップファイルがある。
- 管理者ロールを持つ API トークンがある。
-
roxctlCLI をインストールしている。
手順
次のコマンドを実行して、
ROX_API_TOKENおよびROX_ENDPOINT環境変数を設定します。$ export ROX_API_TOKEN=<api_token>$ export ROX_ENDPOINT=<address>:<port_number>次のコマンドを実行して、Central データベースを復元します。
$ roxctl central db restore <backup_file>1 - 1
<backup_file>には、復元するバックアップファイルの名前を指定します。
2.3.2. 管理者パスワードを使用した復元 リンクのコピーリンクがクリップボードにコピーされました!
管理者パスワードを使用して、RHACS のデータベース全体を復元できます。
前提条件
- RHACS バックアップファイルがある。
- 管理者パスワードがある。
-
roxctlCLI をインストールしている。
2.3.3. 復元操作の再開 リンクのコピーリンクがクリップボードにコピーされました!
復元操作中に接続が中断された場合、またはオフラインにする必要があった場合は、復元操作を再開できます。
-
再開操作を実行しているマシンにアクセスできない場合は、
roxctl central db restore statusコマンドを使用して、進行中の復元操作の状況を確認してください。 -
接続が中断された場合、
roxctlCLI は、接続が再び利用可能になるとすぐに自動的にタスクの復元を試みます。自動接続の再試行は、timeoutオプションで指定された時間に準じて行われます。 -
--timeoutオプションを使用して、時間を秒、分、または時間で指定します。roxctlCLI は、その時間が経過すると復元操作の再開を停止します。このオプションが指定されていない場合、デフォルトのタイムアウトは 10 分です。 -
リストア操作が停止した場合、またはリストア操作をキャンセルする場合は、
roxctl central db restore cancelコマンドを使用して、実行中のリストア操作をキャンセルします。 - 復元操作がスタックしている場合は、その操作をキャンセルしているか、時間が経過したら、元のコマンドを再度実行して以前の復元を再開できます。
- 中断している間、RHACS は進行中の復元操作を 24 時間キャッシュします。元の復元コマンドを再度実行すると、この操作を再開できます。
-
--timeoutオプションは、クライアント側の接続の再試行のみを制御し、サーバー側の 24 時間の復元キャッシュには影響しません。 - Central Pod の再起動後に復元を再開できません。
- 復元操作が中断された場合は、24 時間以内に Central が再起動する前に再起動する必要があります。そうしなければ、RHACS が復元操作をキャンセルします。
2.4. roxctl CLI を使用した Central デプロイメントの復元 リンクのコピーリンクがクリップボードにコピーされました!
作成したバックアップを使用して、Central デプロイメントを元の設定に復元できます。
まず roxctl CLI を使用して証明書を復元し、次に Central インストールスクリプトを実行して Central デプロイメントを復元する必要があります。
2.4.1. roxctl CLI を使用して証明書を復元する リンクのコピーリンクがクリップボードにコピーされました!
roxctl CLI を使用して Kubernetes マニフェストを生成し、RHACS Central コンポーネントをクラスターにインストールします。これにより、セキュリティーで保護されたクラスターの認証証明書と API トークンが復元されたバージョンでも有効なままであることを確認できます。RHACS Central の別のインスタンスをバックアップした場合は、そのバックアップの証明書ファイルを使用できます。
roxctl CLI では、Central デプロイメント全体を復元することはできません。代わりに、まず roxctl CLI を使用して、中央データバックアップ内の証明書を使用して新しいマニフェストを生成します。その後、これらのマニフェストを使用して Central をインストールします。
前提条件
- Red Hat Advanced Cluster Security for Kubernetes バックアップファイルが必要です。
-
roxctlCLI をインストールしている。
手順
対話型インストールコマンドを実行します。
$ roxctl central generate interactive次のプロンプトに対して、Red Hat Advanced Cluster Security for Kubernetes バックアップファイルのパスを入力します。
Enter path to the backup bundle from which to restore keys and certificates (optional): _<backup-file-path>_- 後続のその他のプロンプトでは、Enter キー を押してデフォルト値を受け入れるか、必要に応じてカスタム値を入力します。
完了すると、対話型インストールコマンドは、Central-bundle という名前のフォルダーを作成します。このフォルダーには、Central をデプロイするために必要な YAML マニフェストとスクリプトが含まれています。
2.4.2. Central インストールスクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
対話型インストーラーを実行したら、setup.sh スクリプトを実行して Central をインストールできます。
手順
setup.shスクリプトを実行して、イメージレジストリーアクセスを設定します。$ ./central-bundle/central/scripts/setup.shPolicy as code 機能 (テクノロジープレビュー) を有効にするには、
helm/chart/crds/config.stackrox.io_securitypolicies.yamlの .zip ファイルにあるconfig.stackrox.ioCRD を手動で適用します。重要Policy as code はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat では、実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
CRD を適用するには、以下のコマンドを実行します。
- 必要なリソースを作成します。
- デプロイメントの進行状況を確認します。
Central の実行後、RHACS ポータルの IP アドレスを見つけて、ブラウザーで開きます。プロンプトに応答するときに選択した公開方法に応じて、次のいずれかの方法を使用して IP アドレスを取得します。
Expand 公開方法 コマンド アドレス 例 ルート
oc -n stackrox get route central出力の
HOST/PORT列の下のアドレスhttps://central-stackrox.example.routeノードポート
oc get node -owide && oc -n stackrox get svc central-loadbalancerサービス用に表示されたポート上の任意のノードの IP またはホスト名
https://198.51.100.0:31489ロードバランサー
oc -n stackrox get svc central-loadbalancerEXTERNAL-IP、またはポート 443 でサービスに表示されるホスト名
https://192.0.2.0なし
central-bundle/central/scripts/port-forward.sh 8443https://localhost:8443https://localhost:8443
対話型インストール中に自動生成されたパスワードを選択した場合は、次のコマンドを実行して、Central にログインするためのパスワードを確認できます。
$ cat central-bundle/password
2.5. RHACS Operator を使用した Central デプロイメントの復元 リンクのコピーリンクがクリップボードにコピーされました!
RHACS Operator を使用して、Central デプロイメントを元の設定に復元できます。正常に復元するには、Central カスタムリソース (central-tls) と管理者パスワードのバックアップが必要です。
前提条件
-
central-tlsバックアップファイルがある。 - Central カスタムリソースバックアップファイルがある。
- 管理者パスワードのバックアップファイルがある。
手順
central-tlsバックアップファイルを使用してリソースを作成します。$ oc apply -f central-tls.jsoncentral-htpasswdバックアップファイルを使用してシークレットを作成します。$ oc apply -f central-htpasswd.jsonCentral-cr.yamlファイルを使用して、Central デプロイメントを作成します。$ oc apply -f central-cr.yaml
2.6. Helm を使用して中央デプロイメントを復元する リンクのコピーリンクがクリップボードにコピーされました!
Helm を使用すると、Central デプロイメントを元の設定に復元できます。正常に復元するには、Central カスタムリソース、central-tls シークレット、および管理者パスワードのバックアップが必要です。
前提条件
- Helm 値のバックアップファイルがある。
- Red Hat Advanced Cluster Security for Kubernetes バックアップファイルがある。
-
roxctlCLI をインストールしている。
手順
RHACS データベースのバックアップファイルから
value-private.yamlを生成します。$ roxctl central generate k8s pvc --backup-bundle _<path-to-backup-file>_ --output-format "helm-values"helm installコマンドを実行し、バックアップファイルを指定します。$ helm install -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f central-values-backup.yaml -f central-bundle/values-private.yaml
2.7. Central の別のクラスターまたは namespace への復元 リンクのコピーリンクがクリップボードにコピーされました!
RHACS Central データベースとデプロイメントのバックアップを使用して、Central を別のクラスターまたは namespace に復元できます。
次のリストは、インストール手順の概要を示しています。
インストール方法に応じて、最初に次のトピックの手順に従って Central デプロイメントを復元する必要があります。
重要- 古い Central インスタンスによって発行された保護されたクラスターと API トークンが有効なままになるように、バックアップされた Central 証明書を必ず使用してください。
- 別の namespace にデプロイする場合は、バックアップされたリソースまたはコマンドの namespace を変更する必要があります。
- roxctl CLI を使用した Central データベースの復元 の指示に従って、Central データベースを復元します。
- 古い RHACS Central インスタンスを指す外部 DNS エントリーがある場合は、作成した新しい RHACS Central インスタンスを指すように再設定する必要があります。