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


このページでは、Google Kubernetes Engine(GKE)でワークロードをバックアップするために使用する Backup for GKE のバックアップ プランを作成する方法について説明します。

バックアップ プランは、一連のバックアップの構成、ロケーション、管理機能を提供します。バックアップ プランには、ソースクラスタ、バックアップするワークロードの選択、このプランで生成したバックアップ アーティファクトが保存されているリージョンなどのバックアップ構成が含まれます。

クラスタごとに 1 つ以上のバックアップ プランを作成できます。1 つのクラスタに複数のバックアップ プランが必要となる主な理由は 2 つあります。

  • バックアップ アーティファクトを複数のリージョンに保存する。この場合、バックアップを保存するリージョンごとにバックアップ プランを作成します。
  • クラスタのバックアップをパーティション分割する。例:

    • 1 日に 1 回で大規模なバックアップを作成するのではなく、1 日を通じて複数の小規模なバックアップを分散するようにする。
    • クラスタの一部を他の部分よりも頻繁にバックアップする(たとえば、一部の名前空間を毎日バックアップし、他の名前空間は 1 時間ごとにバックアップする場合など)。

すべてのクラスタに少なくとも 1 つのバックアップ プランを作成することをおすすめします。

Backup for GKE は、プロジェクト間でのクラスタのバックアップをサポートしていません。バックアップ プランを作成できるのは、クラスタが作成されている同じプロジェクト内のクラスタに限られます。

バックアップのスケジュール設定方法を使用してバックアップ プランを作成すると、バックアップを自動的に作成できます。スケジュールの設定方法にはスマート スケジュールと 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. [編集] をクリックしてプラン セクションを編集し、[変更を保存] をクリックします。

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

バックアップ プランを手動または自動で一時停止して、バックアップ スケジュールを一時停止できます。バックアップ プランが一時停止されている間、自動バックアップは作成されません。ただし、手動バックアップは作成できます。手順については、手動バックアップを作成するをご覧ください。

  • 手動の一時停止: Google Cloud コンソール、gcloud、terraform を使用して、バックアップ プランを手動で一時停止できます。
  • 自動一時停止: Backup for GKE は、次のシナリオでバックアップ プランを自動的に一時停止できます。

    • バックアップ(スケジュールまたは手動)を開始するときに、次のいずれかのエラーが発生した場合:

      • StatusInvalidCluster: StatusInvalidCluster エラーは、クラスタ名が無効であるか、クラスタのメタデータ情報を使用できない回復不能な状態を示します。
      • GKEMetadataNotEnabledOnNodepool: GKEMetadataNotEnabledOnNodepool エラーは、クラスタで GKE 用 Workload Identity 連携が有効になっているが、どのノードプールにも GKE_METADATA が構成されておらず、エージェントが正しく機能しないという回復不能な状態を表します。
      • AgentNotInstalled: AgentNotInstalled エラーは、クラスタに必要なエージェント カスタム リソース定義がインストールされていない、復元不可能な状態を示します。これは、エージェントのインストールが正しく行われていないことを意味します。
    • バックアップが 1 時間以上 [作成中] フェーズのままである場合は、クラスタと Google Cloud 間の接続の問題、またはエージェントの構成ミスを示している可能性があります。

    • 次の条件がすべて満たされている場合、バックアップの失敗が繰り返されないようにします。

      • バックアップ プランには、successful または failed に関係なく、少なくとも 3 つのバックアップがあります。
      • 直近の 2 回のバックアップ試行は失敗しました。
      • 最後に正常に完了したバックアップから 30 日以上経過している。

      バックアップの失敗が原因でバックアップ プランが一時停止された場合は、[バックアップ プラン] の詳細ページの [現在の RPO リスク] フィールドと、最近失敗したバックアップの [ステータスの理由] フィールドを確認して、バックアップ エラーの問題をトラブルシューティングできます。一時停止が意図したものではなく、問題が解決した場合は、バックアップ プランを再開して自動バックアップを続行します。

一時停止したバックアップ プランのアラートを設定し、根本的な問題が解決したら一時停止を解除できます。手順については、一時停止したバックアップ プランのアラートを設定するをご覧ください。

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. [スケジュールを一時停止] をクリックし、確認ダイアログで [スケジュールを一時停止] をクリックします。

Terraform

   resource "google_gke_backup_backup_plan" "basic" {
     name = "BACKUP_PLAN"
     cluster = google_container_cluster.CLUSTER.id
     location = "LOCATION"
     backup_schedule {
       paused = True
     }
     backup_config {
       include_volume_data = true
       include_secrets = true
       all_namespaces = true
     }
   }

次のように置き換えます。

  • BACKUP_PLAN: 一時停止するバックアップ プランの名前。
  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: バックアップ プランのロケーション。

バックアップ プランを再開する

Console

Google Cloud コンソールでバックアップ プランを再開する手順は次のとおりです。

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

    Google Kubernetes Engine に移動

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

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

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

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

Terraform

   resource "google_gke_backup_backup_plan" "basic" {
     name = "BACKUP_PLAN"
     cluster = google_container_cluster.CLUSTER.id
     location = "LOCATION"
     backup_schedule {
       paused = false
     }
     backup_config {
       include_volume_data = true
       include_secrets = true
       all_namespaces = true
     }
   }

次のように置き換えます。

  • BACKUP_PLAN: 再開するバックアップ プランの名前。
  • CLUSTER: google_container_cluster リソースの名前。
  • LOCATION: バックアップ プランのロケーション。

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

バックアップ プランを削除するには、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. バックアップ プラン名を入力し、確認ダイアログで [バックアップ プランを削除] をクリックします。

次のステップ