Backup for GKE


Backup for GKE は、GKE クラスタでワークロードをバックアップおよび復元するためのサービスです。次の 2 つのコンポーネントがあります。

  • サービスのコントロール プレーンとして機能する Google Cloud API
  • バックアップと復元を行う各クラスタで有効にする必要がある、GKE アドオン(Backup for GKE エージェント)。

ワークロードのバックアップは、障害復旧、CI / CD パイプライン、ワークロードのクローン作成、アップグレードのシナリオで役立ちます。ワークロードを保護することで、ビジネス クリティカルなリカバリ ポイントの目標を達成できます。

はじめに

有効にすると、Backup for GKE サービスは GKE UI、Google Cloud CLI、REST API と統合され、開発とオペレーションに一貫したワークフローを提供します。バックアップには 2 つの形式のデータが含まれます。

  • 構成のバックアップ: クラスタの状態をキャプチャして、バックアップを実行するクラスタの API サーバーから抽出された一連の Kubernetes リソースのマニフェスト。
  • ボリュームのバックアップ: 構成のバックアップにある PersistentVolumeClaim リソースに対応するボリュームのバックアップのセット。

バックアップまたは復元するワークロードを選択することも、すべてのワークロードをバックアップまたは復元することもできます。ワークロードを 1 つのクラスタからバックアップし、別のクラスタに復元できます。バックアップを自動的に実行するようにスケジュールできます。これにより、インシデントが発生した場合にワークロードを迅速に復元できます。

ワークロードを復元すると、ターゲット クラスタに Kubernetes リソースが再作成されます。リソースの作成後、ワークロードの機能の復元はクラスタの調整プロセスの対象となります(たとえば、Pod はノードにスケジュールされ、Pod はそのノードで開始されます)。復元中に、必要に応じて変換ルールを適用できます。これらのルールが一連のリソースに一致すると、これらのリソースの属性の現在の値が新しい値に置き換えられます。

選択的バックアップおよび復元と置換の組み合わせは、次のようなバックアップと復元のシナリオをサポートするように設計されています。

  • クラスタ内のすべてのワークロードをバックアップし、障害復旧のために別のクラスタに復元します。
  • すべてのワークロードをバックアップしますが、ソースクラスタ内の単一ワークロードを選択してロールバックします。
  • 1 つの名前空間内のリソースをバックアップし、別の名前空間にクローンを作成します。
  • クラスタ間でワークロードを移行するか、クローンを作成します。
  • ワークロードのストレージ パラメータを変更します(たとえば、ワークロードをゾーン永続ディスクからリージョン永続ディスクに移動します)。

ワークロードをバックアップまたは復元するには、Backup for GKE サービスを有効にしてターゲット クラスタを作成する必要があります。

アーキテクチャ

Backup for GKE は、次の 2 つの主要コンポーネントで構成されています。

  • Google Cloud で実行され、リソースベースの REST API をサポートするサービス。このサービスは、Backup for GKE のコントロール プレーンとして機能します。このサービスには、この API を操作する Google Cloud コンソール UI 要素が含まれています。
  • バックアップまたは復元が実行されるすべてのクラスタで実行されるエージェント。エージェントは、Backup for GKE API を使用して、これらのクラスタでバックアップと復元のオペレーションを実行します。

次の図に、Backup for GKE のさまざまなコンポーネントの関係を示します。

Backup for GKE アーキテクチャ

サービスの概要

Backup for GKE サービスは、クライアントが操作するための API エンドポイントを提供します。ほとんどの Google Cloud APIs と同様に、Backup for GKE API はリソース階層内のアプリケーション固有のクラウド リソースに対して機能します。Backup for GKE は、これらのアプリケーション固有のリソースのデータベースを管理します。Service API メソッドは、これらのリソースに対する作成、読み取り、更新、削除オペレーションにほぼ対応しています。

クラウド リソース モデルには、アクティブなリソースタイプが 2 つあります。

  • Backup: 特定の時点における GKE クラスタの特定の部分をバックアップします。Backup リソースを作成すると、バックアップ プロセスが開始されます(最終的に、ターゲット Kubernetes リソースのコピーが保存され、ターゲット永続ディスク ボリュームのスナップショットが作成されます)。Backup を削除すると、保存されているこれらのアーティファクトが削除されます。
  • Restore: 特定の Backup で選択した部分を GKE クラスタに復元します。Restore リソースを作成すると、復元プロセスが開始されます。Restore を削除しても悪影響はありません。復元のレコードがデータベースから削除されるだけです。

Backup for GKE には、次の 2 つの構成とリソース制御タイプがあります。

  • BackupPlan: バックアップのチェーンを表す Backup リソースの親リソース。このリソースには、ソースクラスタ、バックアップするワークロードの選択、このプランで生成した Backup アーティファクトが保存されているリージョンなどのバックアップ構成が含まれます。
  • RestorePlan: 再利用可能な復元テンプレートを提供します。このリソースには、バックアップを復元するターゲット クラスタ、ソース バックアップ プラン、復元スコープ、競合処理、変換ルールなどの復元構成が含まれています。

エージェントの概要

Backup for GKE エージェントは、Backup for GKE サービスによってバックアップされるように構成した GKE クラスタにデプロイされ、実行されます。エージェントは、次のようにバックアップと復元のアクティビティを実行します。

  • バックアップ:

    • バックアップ プロセスをオーケストレートします。
    • Kubernetes API サーバーからリソースを取得し、アーカイブにシリアル化して、アーカイブを保存します。
    • PersistentVolumeClaims に関連付けられた基盤となる Volume のバックアップを作成します。
  • 復元:

    • 復元プロセスをオーケストレートします。
    • ストレージから Kubernetes リソースのアーカイブを取得して、選択したリソースを抽出し、これらのリソースに適切な変更を加えてからターゲット クラスタに作成します。
    • ボリュームを作成し、ターゲット クラスタの Kubernetes 構成に接続します。

管理者はエージェントを操作しません。エージェントは、バックアップと復元用のクラウド リソースの作成時に Backup for GKE がクラスタに自動的に作成したカスタム Kubernetes リソース(BackupJobRestoreJob)によって起動されます。ただし、管理者は、クラスタ内にオプションの ProtectedApplication Kubernetes リソースを作成することで、バックアップのオーケストレーションに影響を与えることができます。これらの ProtectedApplication リソースは Backup for GKE に固有のもので、バックアップと復元のスコープを定義するためのきめ細かいオプションを提供します。

エージェントのプレビュー版と一般提供版の違いについては、プレビュー エージェントの非推奨をご覧ください。

バックアップの対象外

Kubernetes リソースと基盤となる永続ボリュームをバックアップできるのは、Backup for GKE のみです。Backup for GKE で、以下のものはバックアップされません。

  • ノード構成、ノードプール、初期クラスタサイズ、有効な機能などの GKE クラスタ構成情報。
  • バックアップによって参照されるコンテナ イメージ。ワークロードを記述し、コンテナ イメージを参照する Kubernetes リソースのみがバックアップされます。バックアップ内のワークロードのマニフェストで参照されているイメージがイメージ リポジトリから削除されている場合、この構成を復元しても、ワークロードは正常に復元されません。
  • クラスタ外のサービスの構成情報または状態(Cloud SQL や外部ロードバランサなど)。

次のステップ