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


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

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

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

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

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

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

また、バックアップ プランの cron スケジュールを定義し、そのスケジュールに従ってバックアップが自動的に作成されるようにすることをおすすめします。ワークロードを手動でバックアップすることもできます。バックアップ プランを作成した後、そのプランのバックアップを作成できます。

始める前に

必要なロール

バックアップ プランの作成と管理に必要な権限を取得するには、プロジェクトに対する 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
    --cron-schedule=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 暗号化についてをご覧ください。

  • SCHEDULE: (省略可)バックアップを自動的に作成し、標準の cron 構文をサポートするスケジュールを定義します。たとえば、"10 3 * * *" は毎日午前 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 10 分です。

  • RETAIN_DAYS:(SCHEDULE が設定されている場合は必須)バックアップを保持する日数。この期間が経過すると、このプランのバックアップは自動的に削除されます。

  • DELETE_LOCK_DAYS: (省略可)バックアップを削除できない日数。値を設定した場合、このプランで作成されたバックアップは、その期間が終了するまで削除できません(自動でも手動でも削除できません)。

  • --locked: (省略可)バックアップ プランの保持ポリシーをロックします。

オプションの完全なリストについては、gcloud beta container backup-restore backup-plans create のドキュメントをご覧ください。

日次スケジュールを使用してすべての Namespace の BackupPlan を作成する

次のコマンドは、毎日午前 5 時 20 分にすべての Namespace の日次バックアップをスケジュールするように BackupPlan を作成します。バックアップは 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

選択した名前空間の BackupPlan を 1 時間ごとのスケジュールで作成する

次のコマンドは、選択した名前空間(my-ns)の 1 時間ごとのバックアップを毎時 15 分にスケジュールする BackupPlan を作成します。バックアップは作成後 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 の BackupPlan を作成する

次のコマンドは、ProtectedApplication(my-ns/my-app)を選択するための BackupPlan を作成します。

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. [バックアップ スケジュール] セクションの [CRON 文字列] フィールドに、標準の cron 構文を使用して式を入力します。たとえば、10 3 * * * は毎日午前 3 時 10 分にバックアップを作成します。時刻はすべて UTC と解釈されます。バックアップ スケジュールの最小間隔は 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. バックアップ プラン名を入力し、確認ダイアログで [バックアップ プランを削除] をクリックします。

次のステップ