このページでは、Google Distributed Cloud(GDC)エアギャップでクラスタ ワークロードのバックアップ プランを作成して管理する方法について説明します。
バックアップ プランは、一連のバックアップの構成、ロケーション、管理機能を提供します。バックアップ プランには、ソースクラスタやバックアップするワークロードの選択などのバックアップ構成が含まれます。すべてのクラスタに少なくとも 1 つのバックアップ プランを提供することをおすすめします。
クラスタごとに 1 つ以上のバックアップ プランを作成できます。次のような理由で、クラスタのバックアップをパーティション分割することがあります。
- 1 日に 1 回で大規模なバックアップを作成するのではなく、1 日を通じて複数の小規模なバックアップを分散するようにする。
- クラスタの一部を他の部分よりも頻繁にバックアップする(たとえば、一部の名前空間を毎日バックアップし、他の名前空間は 1 時間ごとにバックアップする場合など)。
1 つのクラスタまたは仮想マシン(VM)は、1 つ以上のバックアップ プランに属することができます。バックアップ プランは複数のクラスタにまたがることはできませんが、同じクラスタに複数の VM が存在する場合は、1 つのバックアップ プランで複数の VM をキャプチャできます。すべてのバックアップ リソースと復元リソースをプロジェクト名に関連付ける必要があります。
始める前に
バックアップ プランを作成するには、次のものが必要です。
- 必要な ID とアクセスロール:
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
user-cluster-backup-admin)ロールの付与を依頼します。詳細については、ロールの定義をご覧ください。
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
- アプリケーション オペレーターの場合は、ユーザー クラスタ バックアップ管理者の権限を持つ管理者にバックアップ プランの作成を依頼してください。
- ユーザー クラスタをバックアップするときは、バックアップ プランの作成に使用したプロジェクトをそのクラスタに接続してください。
バックアップ プランの作成
バックアップ プランの cron スケジュールを定義し、そのスケジュールに従ってバックアップが自動的に作成されるようにすることをおすすめします。ワークロードを手動でバックアップすることもできます。詳細については、手動バックアップを作成するをご覧ください。
GDC コンソールまたは API を使用してバックアップ プランを作成します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [Create Backup Plan] をクリックします。
- [プランの詳細] セクションで、次の手順を完了して [続行] をクリックします。
- [クラスタ] リストで、バックアップするクラスタを選択します。
- [プロジェクト] リストで、プロジェクトを選択します。
- [バックアップ プラン名] フィールドに、選択したバックアップ プランの名前を入力します。
- (省略可)[バックアップ プランの説明] に、バックアップ プランの説明を入力します。
- [バックアップ リポジトリ] フィールドで、バックアップ リポジトリを選択します。バックアップ リポジトリは、オブジェクト ストレージ実装のセットです。
- [次へ] をクリックします。
[スコープと暗号化] セクションで、次の操作を行い、[続行] をクリックします。
バックアップ プランのスコープを次のいずれかから選択します。
- [クラスタ全体] をクリックして、バックアップ内のすべての名前空間リソースをバックアップします。
- [クラスタ内の選択した名前空間] をクリックして、バックアップするクラスタ内の名前空間を選択します。
- [クラスタ名前空間を編集]、[クラスタ名前空間を追加] の順にクリックして、名前空間を入力します。
- 名前空間とアプリケーション名を指定してリソースを追加するには、[このクラスタ内の選択した保護対象アプリケーション] をクリックします。
- [保護対象アプリケーションを編集]、[保護対象アプリケーションを追加] の順にクリックして、Namespace と Protected Application を入力します。
[シークレットを含める] をクリックして、Kubernetes
Secretリソースを含めます。バックアップにボリューム データを含める場合は、[永続ボリューム データを含める] をクリックします。バックアップ中に空のボリュームを作成する場合は、このチェックボックスをオフにします。
[スケジュールと保持] セクションで、次の操作を行い、[続行] をクリックします。
- スケジュールを定義するには、[CRON 文字列] フィールドに標準の cron 構文を使用して式を入力します。たとえば、式
10 3 * * *は、毎日 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 10 分です。 - [バックアップを削除するまでの日数] フィールドに、バックアップを保持する日数を設定します。指定した日数が経過すると、バックアップは自動的に削除されます。
- バックアップを削除できない日数を設定します。
- 保持ポリシーをロックするには、鍵アイコンをクリックして、ロックをオフからオンに切り替えます。
- スケジュールを定義するには、[CRON 文字列] フィールドに標準の cron 構文を使用して式を入力します。たとえば、式
バックアップ プランの詳細を確認して、[プランの作成] をクリックします。
API
クラスタに ClusterBackupPlan カスタム リソースを作成して、バックアップをスケジュール設定します。バックアップ プランは、backupSchedule に基づいてバックアップを定期的にスケジュールします。ClusterBackupPlan リソースは Namespace リソースです。次に ClusterBackupPlan の例を示します。
apiVersion: backup.gdc.goog/v1
kind: ClusterBackupPlan
metadata:
name: CLUSTER_BACKUP_PLAN
namespace: PROJECT_NAME
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: CLUSTER_NAME
backupSchedule:
cronSchedule: CRON_SCHEDULE
paused: BACKUP_SCHEDULE_STATUS
clusterBackupConfig:
backupScope:
selectedNamespaces:
namespaces: [NAME_SPACE]
clusterBackupRepositoryName: CLUSTER_BACKUP_REPOSITORY
includeVolumeData: VOLUME_DATA_INCLUDED
volumeStrategy: VOLUME_STRATEGY
includeSecrets: SECRETS_INCLUDED
retentionPolicy:
backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
backupRetainDays: BACKUP_RETAIN_DAYS
description: BACKUP_PLAN_DESCRIPTION
次のように置き換えます。
CLUSTER_BACKUP_PLAN: クラスタ バックアップ プランの名前。PROJECT_NAME: GDC プロジェクトの名前。CLUSTER_NAME: バックアップするクラスタの名前。外側のtargetClusterフィールドには次のコンポーネントがあります。targetClusterType: バックアップするクラスタのタイプ(UserCluster、ManagementAPIなど)。この例ではUserClusterを使用しています。targetClusterName:CLUSTER_NAMEによって設定されるnameを含みます。
CRON_SCHEDULE: バックアップのスケジュールを設定するタイミングを示す crontab スケジュール("*/30 * * * *"など)。バックアップ スケジュールの最小間隔は 10 分です。BACKUP_SCHEDULE_STATUS:trueの場合、定期的なバックアップはスケジュール設定されません。NAME_SPACE: バックアップに含める名前空間のリスト。外側のclusterBackupConfigフィールドには、バックアップの構成の詳細が含まれます。backupScope: バックアップされるリソースを示します。この例ではselectedNamespacesを使用しています。有効な値は次のとおりです。allNamespaces: すべての Namespace のすべてのリソースをキャプチャします。selectedNamespaces: 指定された Namespace のリストにあるリソースをキャプチャします。selectedApplication:protectedApplicationsで定義されたリソースをキャプチャします。
namespaces:backupScopeがselectedNamespacesの場合に適用されます。
CLUSTER_BACKUP_REPOSITORY:clusterBackupConfigのclusterBackupRepositoryNameの値。これは、バックアップを保存するターゲット リポジトリであり、ReadWriteとしてインポートする必要があります。VOLUME_DATA_INCLUDED: ボリューム データをバックアップするかどうかを指定します。この値は、デフォルトではfalseです。バックアップにボリューム データを含める場合は、これをtrueに設定します。VOLUME_STRATEGY: 実行するボリューム バックアップのタイプ。有効な値は次のとおりです。ProvisionerSpecific: 基盤となるストレージ プロビジョナーのバックアップと復元機能を活用します。includeVolumeDataがtrueの場合は、このオプションを使用します。LocalSnapshotOnly: ローカル ストレージ システム自体にのみボリュームの特定の時点のコピーを作成します。Portable: ストレージに依存しない方法でボリューム データをバックアップします。
SECRETS_INCLUDED: シークレットをバックアップするかどうかを指定します。この値は、デフォルトではfalseです。KubernetesSecretリソースをバックアップに含める場合は、これをtrueに設定します。BACKUP_DELETE_LOCK_DAYS: バックアップの作成後、指定した日数(10 daysなど)はバックアップの削除を防ぎます。BACKUP_RETAIN_DAYS: バックアップを保持する合計日数を定義します。この期間を過ぎると、バックアップは自動的に削除されます。この値を大きくするとストレージが枯渇する可能性があり、値を小さくするとデータ損失のリスクが増加する可能性があります。指定しない場合、デフォルトで 35 に設定されます。保持ポリシーは、ストレージの場所の保持ポリシーをオーバーライドすることはできません。また、90 日を超えることはできません。BACKUP_PLAN_DESCRIPTION: バックアップ プランの説明。
バックアップ プランが作成されると、バックアップ スケジュールに基づいて、指定されたバックアップ構成でバックアップが自動的に作成されます。
バックアップ プランの表示
バックアップ プランを表示するには、GDC コンソールまたは API を使用します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックし、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべてのバックアップ プランを表示するか、プロジェクトを選択してプロジェクト内のすべてのバックアップ プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべてのバックアップ プランを表示します。
- [バックアップ プラン] タブをクリックします。
- リスト内のバックアップ プランをクリックすると、その詳細が表示されます。ユーザー クラスタ バックアップ管理者の権限を持つユーザーは、組織内のすべてのバックアップ プランを表示できます。バックアップ作成者のロールを持つユーザーは、選択したプロジェクト内のすべてのバックアップ プランを表示できます。
API
バックアップ プランを表示するには、kubectl get コマンドを使用します。
kubectl get clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME -o yaml
次のように置き換えます。
CLUSTER_BACKUP_PLAN: 表示するバックアップ プランの名前。PROJECT_NAME: GDC プロジェクトの名前。
バックアップ プランを編集する
GDC コンソールまたは API を使用してバックアップ プランを編集します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックし、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべてのバックアップ プランを表示するか、プロジェクトを選択してプロジェクト内のすべてのバックアップ プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべてのバックアップ プランを表示します。
- [バックアップ プラン] タブをクリックします。
- 編集するバックアップ プランの名前をクリックします。
- [プランの構成] タブをクリックして、変更可能なフィールドを表示します。
[スケジュールと保持] の edit 編集アイコンをクリックして、そのリソースを編集します。
- スケジュールを更新するには、[CRON 文字列] フィールドに標準の cron 構文を使用して式を入力します。たとえば、式
10 3 * * *は、毎日 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 10 分です。 - [バックアップを削除するまでの日数] フィールドに、バックアップを保持する日数を設定します。指定した日数が経過すると、バックアップは自動的に削除されます。
[削除を禁止する期間] フィールドで、バックアップを削除できない日数を設定します。
保持ポリシーをロックするには、鍵アイコンをクリックして、ロックをオフからオンに切り替えます。
[保存] ボタンをクリックして変更を確定します。
- スケジュールを更新するには、[CRON 文字列] フィールドに標準の cron 構文を使用して式を入力します。たとえば、式
API
バックアップ プランを編集するには、kubectl edit コマンドを使用して ClusterBackupPlan カスタム リソースを変更します。このコマンドは、リソースの YAML 構成をデフォルトのテキスト エディタで開きます。
kubectl edit clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME
次のように置き換えます。
CLUSTER_BACKUP_PLAN: 編集するバックアップ プランの名前。PROJECT_NAME: GDC プロジェクトの名前。
エディタで、次のようなフィールドを変更できます。
spec.backupSchedule.cronSchedule: バックアップの頻度を更新します。spec.backupSchedule.paused: バックアップ スケジュールを有効または無効にします。spec.retentionPolicy.backupRetainDays: バックアップの保持期間を変更します。spec.retentionPolicy.backupDeleteLockDays: 削除ロック期間を変更します。spec.retentionPolicy.locked: 保持ポリシーをロックします。spec.deactivated: バックアップ プランを無効にします。このフィールドを「true」に設定すると、バックアップの作成とそれ以降の更新が禁止されます。
バックアップ プランを無効にする
GDC コンソールまたは API を使用してバックアップ プランを無効にします。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックし、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべてのバックアップ プランを表示するか、プロジェクトを選択してプロジェクト内のすべてのバックアップ プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべてのバックアップ プランを表示します。
- [バックアップ プラン] タブをクリックします。
- 無効にするバックアップ プランの名前をクリックします。
- [プランを無効化] ボタンをクリックします。
- 無効にするバックアップ プランの名前をフィールドに入力します。
[無効にする] ボタンをクリックして、このバックアップ プランの無効化を完了します。
API
バックアップ プランを無効にするには、deactivated フィールドを true に設定します。
kubectl patch clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME -p '{"spec":{"deactivated":true}}' --type=merge
次のように置き換えます。
CLUSTER_BACKUP_PLAN: 無効にするバックアップ プランの名前。PROJECT_NAME: GDC プロジェクトの名前。