一連のバックアップを計画する


このページでは、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

    バックアップ プランを作成するときに、このオプションのいずれかを指定する必要があります。

  • --include-secrets: バックアップのスコープ内にある場合、Secret リソースを含めるオプションの引数。

  • --include-volume-data: バックアップに永続ボリューム データを含めるオプションの引数。復元中に空のボリュームを作成する場合は、この引数を設定しないでください。

  • ENCRYPTION_KEY: 顧客管理の暗号鍵のパスを定義するオプションの引数。CMEK 暗号化についてをご覧ください。

  • TARGET_RPO_MINUTES: EXCLUSION_WINDOWS_FILE が設定されている場合、必須の引数。目標 RPO を分単位で指定します。スマート スケジューリングでは、この値を使用してバックアップが自動的に作成されます。最小値は 60 分(1 時間)、最大値は 86,400 分(60 日)です。1 つのバックアップ プランで TARGET_RPO_MINUTESCRON_SCHEDULE の両方を同時に設定することはできません。

  • EXCLUSION_WINDOWS_FILE: バックアップできない時間枠を定義するオプションの引数。時刻はすべて UTC と解釈されます。この引数は、TARGET_RPO_MINUTES が設定されている場合にのみ使用できます。

  • CRON_SCHEDULE: バックアップを自動的に作成し、標準の cron 構文をサポートする cron スケジュールを定義するオプションの引数。たとえば、"10 3 * * *" は毎日午前 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 10 分です。1 つのバックアップ プランで CRON_SCHEDULETARGET_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 コンソールでバックアップ プランを作成するには、次の操作を行います。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [バックアップ プランの作成] をクリックします。

  4. [プランの詳細] セクションで、次の操作を行います。

    1. バックアップするクラスタを選択します。
    2. バックアップ プラン名と説明(省略可)を入力します。
    3. バックアップのロケーションを選択します。
  5. バックアップを自動的に作成するには、[バックアップ スケジュール] セクションで [バックアップ スケジュールを有効にする] チェックボックスをオンにし、次のいずれかの方法を選択します。

    1. [スマート スケジュール] を選択して、次の操作を行います。

      1. [目標 RPO] フィールドにバックアップ プランの RPO を入力し、プルダウンから RPO 値(時間)を選択します。
      2. 省略可: バックアップの除外について、[Define a single recurring backup exclusion window] チェックボックスをオンにします。
        1. 除外ウィンドウで [日次] または [毎週] を選択します。
        2. [繰り返す曜日] で、バックアップ プランから除外する曜日を選択します。このフィールドは、除外期間が週単位の場合にのみ表示されます。
        3. [時間枠の開始時間] フィールドに、バックアップ プランの除外期間の開始時間を入力します。
        4. [期間] フィールドにバックアップ プランの除外期間を入力し、プルダウンから []、[]、または [時間] を選択します。
      3. 省略可: 1 回限りのバックアップ除外期間を 1 つ以上作成する場合は、[Define one or more backup exclusion dates] チェックボックスをオンにして、次の操作を行います。
        1. [除外日を追加] をクリックします。
        2. [Start date and time for exclusion window] フィールドで アイコンをクリックし、バックアップの日付時刻を選択します。
        3. [期間] フィールドにバックアップ プランの除外期間を入力し、プルダウンから []、[]、または [時間] を選択します。
    2. [cron のスケジュール] を選択し、標準の cron 構文を使用して CRON 式を入力します。たとえば、10 3 * * * は毎日午前 3 時 10 分にバックアップを作成します。バックアップ スケジュールの最小間隔は 10 分です。

  6. [保持ポリシー] セクションで、次の操作を行います。

    1. 自動的に削除されるまでのバックアップの保持日数を設定します。
    2. バックアップを削除できない日数を設定します。
    3. 保持ポリシーをロックするには、鍵アイコンをクリックして、ロックをオフからオンに切り替えます。
  7. [バックアップのスコープと暗号化の構成] セクションで、次の操作を行います。

    1. バックアップ プランのスコープを選択します。

      • [クラスタ全体(すべての名前空間を含む)] をクリックして、バックアップ内のすべての名前空間付きリソースをバックアップします。
      • バックアップ プランに含める名前空間を選択するには、[このクラスタ内の選択した名前空間] をクリックします。
      • 名前空間とアプリケーション名を指定してリソースを追加するには、[このクラスタ内の選択した保護対象アプリケーション] をクリックします。
    2. [Secret] チェックボックスをオンにして、Kubernetes Secret リソースを含めます。

    3. バックアップにボリューム データを含める場合は、[永続ボリューム データ] チェックボックスをオンにします。ボリューム データをスキップした場合、復元中はボリューム データを復元できません。ただし、復元時にボリューム データを選択する場合については、[新しいボリュームをプロビジョニングする] と [既存のボリュームを再利用する] の 2 つのオプションが用意されています。

    4. CMEK 暗号化を有効にするには、まず適切な CMEK 鍵へのアクセス権を付与する必要があります(CMEK 暗号化についてをご覧ください)。

      1. [顧客管理の暗号鍵を使用する] チェックボックスをオンにして鍵を選択します。
  8. バックアップ プランの詳細を確認して、[プランの作成] をクリックします。

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 コンソールでバックアップ プランを表示する手順は次のとおりです。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [バックアップ プラン] タブをクリックします。

  4. クラスタを開き、プラン名をクリックします。

  5. [詳細] タブをクリックして、プランの詳細を表示します。

バックアップ プランを更新する

バックアップ プランの情報(説明、バックアップ スコープ、バックアップ モード、暗号化、バックアップ スケジュールなど)を更新できます。バックアップの保持期間やバックアップを削除できない期間など、バックアップ プランの保持ポリシーを変更することもできます。

バックアップ プランを更新するには、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 コンソールでバックアップ プランを更新するには、次の操作を行います。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [バックアップ プラン] タブをクリックします。

  4. クラスタを開き、プラン名をクリックします。

  5. [詳細] タブをクリックして、プランの詳細を編集します。

  6. [編集] をクリックしてプラン セクションを編集し、[変更を保存] をクリックします。

バックアップ スケジュールの一時停止

バックアップ スケジュールは一時停止できます。スケジュールが一時停止されている間、自動バックアップは作成されません。バックアップの手動作成は可能です。

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 コンソールでバックアップ スケジュールを一時停止する手順は次のとおりです。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [バックアップ プラン] タブをクリックします。

  4. クラスタを開き、プラン名をクリックします。

  5. [スケジュールを一時停止] をクリックし、確認ダイアログで [スケジュールを一時停止] をクリックします。

バックアップ プランの削除

バックアップ プランを削除するには、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 コンソールでバックアップ プランを削除するには、次の操作を行います。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [バックアップ プラン] タブをクリックします。

  4. クラスタを開き、プラン名をクリックします。

  5. [プランを削除] をクリックします。

  6. バックアップ プラン名を入力し、確認ダイアログで [バックアップ プランを削除] をクリックします。

次のステップ