このページでは、Google Kubernetes Engine(GKE)でワークロードをバックアップするために使用する Backup for GKE のバックアップ プランを作成する方法について説明します。
バックアップ プランは、一連のバックアップの構成、ロケーション、管理機能を提供します。バックアップ プランには、ソースクラスタ、バックアップするワークロードの選択、このプランで生成したバックアップ アーティファクトが保存されているリージョンなどのバックアップ構成が含まれます。
クラスタごとに 1 つ以上のバックアップ プランを作成できます。1 つのクラスタに複数のバックアップ プランが必要となる主な理由は 2 つあります。
- バックアップ アーティファクトを複数のリージョンに保存する。この場合、バックアップを保存するリージョンごとにバックアップ プランを作成します。
クラスタのバックアップをパーティション分割する。例:
- 1 日に 1 回で大規模なバックアップを作成するのではなく、1 日を通じて複数の小規模なバックアップを分散するようにする。
- クラスタの一部を他の部分よりも頻繁にバックアップする(たとえば、一部の名前空間を毎日バックアップし、他の名前空間は 1 時間ごとにバックアップする場合など)。
すべてのクラスタに少なくとも 1 つのバックアップ プランを作成することをおすすめします。
バックアップのスケジュール設定方法を使用してバックアップ プランを作成すると、バックアップを自動的に作成できます。スケジュールの設定方法にはスマート スケジュールと cron スケジュールがあります。バックアップ プランにはスマート スケジュールをおすすめします。これにより、目標復旧時点(RPO)の要件を満たすバックアップが自動的に作成されます。詳細については、自動バックアップの作成と削除をご覧ください。
バックアップのスケジュール設定方法を使用してバックアップ プランを作成しない場合、ワークロードを手動でバックアップする必要があります。バックアップ プランを作成した後に、そのプランからバックアップを作成できます。
始める前に
必要なロール
バックアップ プランの作成と管理に必要な権限を取得するには、プロジェクトに対する Backup for GKE 管理者(roles/gkebackup.admin
)IAM ロールのサブセットである Backup for GKE バックアップ管理者(roles/gkebackup.backupAdmin
)の付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
バックアップ プランを作成する
バックアップ プランを作成するには、gcloud CLI または Google Cloud コンソールを使用します。
gcloud
スケジュールを指定してバックアップ プランを作成するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--cluster=CLUSTER \
--all-namespaces \
--include-secrets \
--include-volume-data \
--encryption-key=ENCRYPTION_KEY
--target-rpo-minutes=TARGET_RPO_MINUTES \
--exclusion-windows-file=EXCLUSION_WINDOWS_FILE
--cron-schedule=CRON_SCHEDULE \
--backup-retain-days=RETAIN_DAYS \
--backup-delete-lock-days=DELETE_LOCK_DAYS \
--locked
次のように置き換えます。
BACKUP_PLAN
: 作成するバックアップ プランの名前。PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: リソースのコンピューティング リージョン(us-central1
など)。リソースのロケーションについてをご覧ください。CLUSTER
: クラスタの相対パス。- リージョン クラスタ:
projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
- ゾーンクラスタ:
projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
- リージョン クラスタ:
CLUSTER_NAME
: バックアップするクラスタの名前。--all-namespaces
: クラスタのすべての名前空間をバックアップします。または、次のように指定します。
- バックアップする ProtectedApplications のリストを
NAMESPACE1/APP1,NAMESPACE2/APP2,...
として持つ--selected-applications
- バックアップする名前空間のリストを
NAMESPACE1,NAMESPACE2,...
として持つ--selected-namespaces
バックアップ プランを作成するときに、このオプションのいずれかを指定する必要があります。
- バックアップする ProtectedApplications のリストを
--include-secrets
: バックアップのスコープ内にある場合、Secret
リソースを含めるオプションの引数。--include-volume-data
: バックアップに永続ボリューム データを含めるオプションの引数。復元中に空のボリュームを作成する場合は、この引数を設定しないでください。ENCRYPTION_KEY
: 顧客管理の暗号鍵のパスを定義するオプションの引数。CMEK 暗号化についてをご覧ください。TARGET_RPO_MINUTES
:EXCLUSION_WINDOWS_FILE
が設定されている場合、必須の引数。目標 RPO を分単位で指定します。スマート スケジューリングでは、この値を使用してバックアップが自動的に作成されます。最小値は 60 分(1 時間)、最大値は 86,400 分(60 日)です。1 つのバックアップ プランでTARGET_RPO_MINUTES
とCRON_SCHEDULE
の両方を同時に設定することはできません。EXCLUSION_WINDOWS_FILE
: バックアップできない時間枠を定義するオプションの引数。時刻はすべて UTC と解釈されます。この引数は、TARGET_RPO_MINUTES
が設定されている場合にのみ使用できます。CRON_SCHEDULE
: バックアップを自動的に作成し、標準の cron 構文をサポートする cron スケジュールを定義するオプションの引数。たとえば、"10 3 * * *"
は毎日午前 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 10 分です。1 つのバックアップ プランでCRON_SCHEDULE
とTARGET_RPO_MINUTES
の両方を同時に設定することはできません。RETAIN_DAYS
:TARGET_RPO_MINUTES
またはCRON_SCHEDULE
が設定されている場合、必須の引数です。バックアップを保持する日数を指定します。このプランのバックアップは、保持期間の終了後に自動的に削除されます。DELETE_LOCK_DAYS
: バックアップを削除できない日数を指定するオプションの引数。値を設定した場合、このプランで作成されたバックアップは、その期間が終了するまで削除できません(自動でも手動でも削除できません)。--locked
: バックアップ プランの保持ポリシーをロックするオプションの引数。
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans create
のドキュメントをご覧ください。
24 時間の RPO と 1 つの除外ウィンドウを使用して、すべての Namespace のバックアップ プランを作成する
exclusionWindows
の YAML 配列を含む window.yaml ファイルを作成します。
exclusionWindows:
- startTime:
hours: 1
minutes: 0
duration: "3600s"
singleOccurrenceDate:
day: 1
month: 3
year: 2024
次のコマンドは、すべての Namespace のバックアップ プランを作成します。目標 RPO は 24 時間で、2024 年 3 月 1 日の午前 1 時から午前 2 時まではバックアップが許可されません。バックアップは 7 日間保持され、作成後 3 日間ロックされます。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--location=LOCATION \
--cluster=CLUSTER \
--all-namespaces \
--include-secrets \
--include-volume-data \
--target-rpo-minutes=1440 \
--exclusion-windows-file=window.yaml \
--backup-retain-days=7 \
--backup-delete-lock-days=3 \
--locked
2 時間の RPO と複数の除外ウィンドウを使用して、すべての Namespace のバックアップ プランを作成する
window.yaml ファイルを作成します。このファイルには、exclusionWindows
の YAML 配列が含まれます。週単位のウィンドウと単発のウィンドウが 1 つずつ含まれます。
exclusionWindows:
- startTime:
hours: 15
minutes: 0
duration: "5400s"
daysOfWeek:
daysOfWeek:
- MONDAY
- FRIDAY
- startTime:
hours: 1
minutes: 0
duration: "3600s"
singleOccurrenceDate:
day: 1
month: 3
year: 2024
次のコマンドは、すべての Namespace のバックアップ プランを作成します。RPO は 2 時間で、2024 年 3 月 1 日の午前 1 時から午前 2 時まで、および毎週月曜日と金曜日の午後 3 時から午後 4 時 30 分までバックアップを禁止します。バックアップは 7 日間保持され、作成後 3 日間ロックされます。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--location=LOCATION \
--cluster=CLUSTER \
--all-namespaces \
--include-secrets \
--include-volume-data \
--target-rpo-minutes=120 \
--exclusion-windows-file=window.yaml \
--backup-retain-days=7 \
--backup-delete-lock-days=3 \
--locked
日次 cron スケジュールを使用して、すべての Namespace のバックアップ プランを作成する
次のコマンドは、毎日午前 5 時 20 分にすべての名前空間の日次バックアップをスケジュールするようにバックアップ プランを作成します。バックアップは 7 日間保持され、作成後 3 日間ロックされます。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--location=LOCATION \
--cluster=CLUSTER \
--all-namespaces \
--include-secrets \
--include-volume-data \
--cron-schedule="20 5 * * *" \
--backup-retain-days=7 \
--backup-delete-lock-days=3 \
--locked
選択した Namespace のバックアップ プランを 1 時間ごとの cron スケジュールで作成する
次のコマンドは、選択した Namespace(my-ns)の 1 時間ごとのバックアップを毎時 15 分にスケジュールするバックアップ プランを作成します。バックアップは作成後 3 日間保持されます。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--location=LOCATION \
--cluster=CLUSTER \
--selected-namespaces=my-ns \
--include-secrets \
--include-volume-data \
--cron-schedule="15 * * * *" \
--backup-retain-days=3
選択した ProtectedApplication
のバックアップ プランを作成する
次のコマンドは、ProtectedApplication(my-ns/my-app)を選択するためのバックアップ プランを作成します。
gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
--location=LOCATION \
--cluster=CLUSTER \
--selected-applications=my-ns1/my-app1,my-ns2/my-app2 \
--include-secrets \
--include-volume-data
コンソール
Google Cloud コンソールでバックアップ プランを作成するには、次の操作を行います。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
ナビゲーション メニューで [Backup for GKE] をクリックします。
[バックアップ プランの作成] をクリックします。
[プランの詳細] セクションで、次の操作を行います。
- バックアップするクラスタを選択します。
- バックアップ プラン名と説明(省略可)を入力します。
- バックアップのロケーションを選択します。
バックアップを自動的に作成するには、[バックアップ スケジュール] セクションで [バックアップ スケジュールを有効にする] チェックボックスをオンにし、次のいずれかの方法を選択します。
[スマート スケジュール] を選択して、次の操作を行います。
- [目標 RPO] フィールドにバックアップ プランの RPO を入力し、プルダウンから RPO 値(分、時間、日)を選択します。
- 省略可: バックアップの除外について、[Define a single recurring backup exclusion window] チェックボックスをオンにします。
- 除外ウィンドウで [日次] または [毎週] を選択します。
- [繰り返す曜日] で、バックアップ プランから除外する曜日を選択します。このフィールドは、除外期間が週単位の場合にのみ表示されます。
- [時間枠の開始時間] フィールドに、バックアップ プランの除外期間の開始時間を入力します。
- [期間] フィールドにバックアップ プランの除外期間を入力し、プルダウンから [秒]、[分]、または [時間] を選択します。
- 省略可: 1 回限りのバックアップ除外期間を 1 つ以上作成する場合は、[Define one or more backup exclusion dates] チェックボックスをオンにして、次の操作を行います。
- [除外日を追加] をクリックします。
- [Start date and time for exclusion window] フィールドで アイコンをクリックし、バックアップの日付と時刻を選択します。
- [期間] フィールドにバックアップ プランの除外期間を入力し、プルダウンから [秒]、[分]、または [時間] を選択します。
[cron のスケジュール] を選択し、標準の cron 構文を使用して CRON 式を入力します。たとえば、
10 3 * * *
は毎日午前 3 時 10 分にバックアップを作成します。バックアップ スケジュールの最小間隔は 10 分です。
[保持ポリシー] セクションで、次の操作を行います。
- 自動的に削除されるまでのバックアップの保持日数を設定します。
- バックアップを削除できない日数を設定します。
- 保持ポリシーをロックするには、鍵アイコンをクリックして、ロックをオフからオンに切り替えます。
[バックアップのスコープと暗号化の構成] セクションで、次の操作を行います。
バックアップ プランのスコープを選択します。
- [クラスタ全体(すべての名前空間を含む)] をクリックして、バックアップ内のすべての名前空間付きリソースをバックアップします。
- バックアップ プランに含める名前空間を選択するには、[このクラスタ内の選択した名前空間] をクリックします。
- 名前空間とアプリケーション名を指定してリソースを追加するには、[このクラスタ内の選択した保護対象アプリケーション] をクリックします。
[Secret] チェックボックスをオンにして、Kubernetes Secret リソースを含めます。
バックアップにボリューム データを含める場合は、[永続ボリューム データ] チェックボックスをオンにします。ボリューム データをスキップした場合、復元中はボリューム データを復元できません。ただし、復元時にボリューム データを選択する場合については、[新しいボリュームをプロビジョニングする] と [既存のボリュームを再利用する] の 2 つのオプションが用意されています。
CMEK 暗号化を有効にするには、まず適切な CMEK 鍵へのアクセス権を付与する必要があります(CMEK 暗号化についてをご覧ください)。
- [顧客管理の暗号鍵を使用する] チェックボックスをオンにして鍵を選択します。
バックアップ プランの詳細を確認して、[プランの作成] をクリックします。
Terraform
google_gke_backup_backup_plan
リソースを作成する
resource "google_gke_backup_backup_plan" "basic" {
name = "BACKUP_PLAN"
cluster = google_container_cluster.CLUSTER.id
location = "LOCATION"
retention_policy {
backup_retain_days = 7
}
backup_schedule {
cron_schedule = "17 3 * * *"
}
backup_config {
include_volume_data = true
include_secrets = true
all_namespaces = true
}
}
次のように置き換えます。
BACKUP_PLAN
: 作成するバックアップ プランの名前。CLUSTER
:google_container_cluster
リソースの名前。LOCATION
- バックアップを保存するリージョン。
詳細については、gke_backup_backup_plan をご覧ください。
バックアップ プランの表示
バックアップ プランとその詳細を表示するには、gcloud CLI または Google Cloud コンソールを使用します。
gcloud
プロジェクトとリージョン内のすべてのバックアップ プランを一覧取得するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans list \
--project=PROJECT_ID \
--location=LOCATION
list
コマンドの場合のみ、PROJECT_ID
以外のパラメータの値として -
を指定できます。-
値はワイルドカードとして機能します。コマンドライン オプションを指定しない、またはプロパティを設定しない場合は、-
値がパラメータのデフォルトです。
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans list
のドキュメントをご覧ください。
バックアップ プランの詳細を表示するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans describe BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans describe
のドキュメントをご覧ください。
コンソール
Google Cloud コンソールでバックアップ プランを表示する手順は次のとおりです。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
ナビゲーション メニューで [Backup for GKE] をクリックします。
[バックアップ プラン] タブをクリックします。
クラスタを開き、プラン名をクリックします。
[詳細] タブをクリックして、プランの詳細を表示します。
バックアップ プランを更新する
バックアップ プランの情報(説明、バックアップ スコープ、バックアップ モード、暗号化、バックアップ スケジュールなど)を更新できます。バックアップの保持期間やバックアップを削除できない期間など、バックアップ プランの保持ポリシーを変更することもできます。
バックアップ プランを更新するには、gcloud CLI または Google Cloud コンソールを使用します。
gcloud
新しい説明の追加などでバックアップ プランを更新するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--description=DESCRIPTION
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans update
のドキュメントをご覧ください。
コンソール
Google Cloud コンソールでバックアップ プランを更新するには、次の操作を行います。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
ナビゲーション メニューで [Backup for GKE] をクリックします。
[バックアップ プラン] タブをクリックします。
クラスタを開き、プラン名をクリックします。
[詳細] タブをクリックして、プランの詳細を編集します。
[edit編集] をクリックしてプラン セクションを編集し、[変更を保存] をクリックします。
バックアップ スケジュールの一時停止
バックアップ スケジュールは一時停止できます。スケジュールが一時停止されている間、自動バックアップは作成されません。バックアップの手動作成は可能です。
gcloud
バックアップ スケジュールを一時停止するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--paused
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans update
のドキュメントをご覧ください。
コンソール
Google Cloud コンソールでバックアップ スケジュールを一時停止する手順は次のとおりです。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
ナビゲーション メニューで [Backup for GKE] をクリックします。
[バックアップ プラン] タブをクリックします。
クラスタを開き、プラン名をクリックします。
[スケジュールを一時停止] をクリックし、確認ダイアログで [スケジュールを一時停止] をクリックします。
バックアップ プランの削除
バックアップ プランを削除するには、gcloud CLI または Google Cloud コンソールを使用します。バックアップ プランにバックアップが含まれている場合、バックアップ プランは削除できません。
gcloud
バックアップ プランを削除するには、次のコマンドを実行します。
gcloud beta container backup-restore backup-plans delete BACKUP_PLAN \
--project=PROJECT_ID \
--location=LOCATION
オプションの完全なリストについては、gcloud beta container backup-restore backup-plans delete
のドキュメントをご覧ください。
コンソール
Google Cloud コンソールでバックアップ プランを削除するには、次の操作を行います。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
ナビゲーション メニューで [Backup for GKE] をクリックします。
[バックアップ プラン] タブをクリックします。
クラスタを開き、プラン名をクリックします。
[deleteプランを削除] をクリックします。
バックアップ プラン名を入力し、確認ダイアログで [バックアップ プランを削除] をクリックします。
次のステップ
- 一連の復元を計画する方法について学習する。
- ワークロードの手動バックアップについて学習する。