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 つのクラスタからバックアップし、別のクラスタに復元できます。バックアップを自動的に実行するようにスケジュールできます。これにより、インシデントが発生した場合にワークロードを迅速に復元できます。
Backup for GKE は、プロジェクト間でのクラスタのバックアップと復元をサポートしています。そのクラスタと同じプロジェクト内の GKE クラスタのバックアップ プランも作成できます。プロジェクト間のバックアップと復元オペレーションは現在プレビュー版です。プロジェクト間のバックアップと復元に関するサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。同様に、そのクラスタと同じプロジェクト内の GKE クラスタの復元プランを作成できます。
ワークロードを復元すると、ターゲット クラスタに 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 サービスは、クライアントが操作するための API エンドポイントを提供します。ほとんどの Google Cloud API と同様に、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アーティファクトが保存されているリージョンなどのバックアップ構成が含まれます。リージョンはサポートされているロケーションのいずれかになります。バックアップが保存されるリージョンが GKE クラスタのリージョンと異なる場合は、アウトバウンドのネットワーク データ転送料金が適用されます。詳細については、Backup for GKE の料金をご覧ください。RestorePlan: 再利用可能な復元テンプレートを提供します。このリソースには、バックアップを復元するターゲット クラスタ、ソース バックアップ プラン、復元のスコープ、競合処理、変換ルールなどの復元構成が含まれています。復元プランを作成する前に、ターゲット クラスタを作成する必要があります。Backup for GKE は、復元中にターゲット クラスタを作成しません。
エージェントの概要
Backup for GKE エージェントは、Backup for GKE サービスによってバックアップされるように構成した GKE クラスタにデプロイされ、実行されます。エージェントは、次のようにバックアップと復元のアクティビティを実行します。
バックアップ:
- バックアップ プロセスをオーケストレートします。
- Kubernetes API サーバーからリソースを取得し、アーカイブにシリアル化して、アーカイブを保存します。
PersistentVolumeClaimsに関連付けられた基盤となる Volume のバックアップを作成します。
復元:
- 復元プロセスをオーケストレートします。
- ストレージから Kubernetes リソースのアーカイブを取得して、選択したリソースを抽出し、これらのリソースに適切な変更を加えてからターゲット クラスタに作成します。
- ボリュームを作成し、ターゲット クラスタの Kubernetes 構成に接続します。
管理者はエージェントを操作しません。エージェントは、バックアップと復元用のクラウド リソースの作成時に Backup for GKE がクラスタに自動的に作成したカスタム Kubernetes リソース(BackupJob と RestoreJob)によって起動されます。ただし、管理者は、クラスタ内にオプションの ProtectedApplication Kubernetes リソースを作成することで、バックアップのオーケストレーションに影響を与えることができます。これらの ProtectedApplication リソースは Backup for GKE に固有のもので、バックアップと復元のスコープを定義するためのきめ細かいオプションを提供します。
エージェントのプレビュー版と一般提供版の違いについては、プレビュー エージェントの非推奨をご覧ください。
ゾーンの冗長性
次のセクションでは、Backup for GKE のゾーン冗長性について説明します。
- Backup for GKE アーティファクトは、リージョン内の複数のゾーンに複製されるため、ゾーンで停止が発生しても継続的に動作します。
- サービスとしての Backup for GKE は、各リージョン内の少なくとも 3 つのゾーンに複製され、冗長性と復元力を高めています。
- Backup for GKE は、データを保存する際にゾーンレベルの決定を行いません。Backup for GKE は、基盤となるリージョン ファシリティを使用してゾーンレベルのレプリケーションを処理します。
バックアップの対象外
Kubernetes リソースと基盤となる永続ボリュームをバックアップできるのは、Backup for GKE のみです。Backup for GKE で、以下のものはバックアップされません。
- ノード構成、ノードプール、初期クラスタサイズ、有効な機能などの GKE クラスタ構成情報。
- バックアップによって参照されるコンテナ イメージ。ワークロードを記述し、コンテナ イメージを参照する Kubernetes リソースのみがバックアップされます。バックアップ内のワークロードのマニフェストで参照されているイメージがイメージ リポジトリから削除されている場合、この構成を復元しても、ワークロードは正常に復元されません。
- クラスタ外のサービスの構成情報または状態(Cloud SQL や外部ロードバランサなど)。
- バックアップされるのは、Persistent Disk タイプのボリュームだけです。Filestore NFS や Google Cloud NetApp Volume などの他のボリューム タイプはバックアップされません。 ただし、Backup for GKE を使用すると、Filestore ボリュームでバックアップされたワークロードにソリューションを提供できます。詳細については、Backup for GKE を使用して Filestore ボリュームを処理するをご覧ください。
次のステップ
- Backup for GKE のインストールについて学習する。
- 一連のバックアップの計画について学習する。