このページでは、ProtectedApplication
リソースを使用して、Google Distributed Cloud(GDC)エアギャップでのバックアップと復元の動作をカスタマイズする方法について説明します。
このページで説明する手順は省略可能であり、ワークロードのバックアップと復元を正常に構成するために必須ではありません。ProtectedApplication
リソースは、個々のステートフル アプリケーションのバックアップと復元をカスタマイズする Namespace 内の Kubernetes リソース(省略可)です。ProtectedApplication
リソースがない場合、次の制限が適用されます。
- バックアップと復元のスコープの粒度を Namespace レベルに制限します。
- バックアップの実行中にワークロードでフラッシュ オペレーションと静止オペレーションは発生しません。このため、復元後に複数のディスクを持つ仮想マシンがクラッシュ整合性を持たない可能性があります。
ProtectedApplication
リソースは、個々のステートフル アプリケーションのバックアップと復元をカスタマイズするために使用される省略可能な Kubernetes Namespace リソースです。ProtectedApplication
リソースは、アプリケーション インスタンスに属する Kubernetes リソースを定義します。kubectl
コマンドを使用して、次のシナリオでアプリケーションのバックアップと復元を行うための専用のオーケストレーションを手動で設定できます。
- 名前空間内の他のリソースから独立してバックアップまたは復元される、一連のリソースを特定します。
ProtectedApplication
は、バックアップまたは復元スコープで識別できる最も粒度の細かい Namespace エンティティです。 ProtectedApplication
がバックアップの範囲内にある場合は、常に専用のバックアップ オーケストレーションを提供します。特に、ProtectedApplication
にPersistentVolumeClaim
(PVC)リソースが直接含まれている場合、またはStatefulSet
のテンプレートを介して含まれている場合は、ボリュームのバックアップの前後にフックを実行できます。フックは、アプリケーション コンテナで実行されるコマンドです。これらのフックは、フラッシュ、停止、停止解除によく使用され、アプリケーション整合性のあるバックアップを提供します。
始める前に
ProtectedApplication
リソースを使用するには、次のものが必要です。
- バックアップ プランを作成する前に、
ProtectedApplication
リソースを定義する必要があります。詳細については、一連のバックアップを計画するをご覧ください。 必要な ID とアクセスロール:
- プラットフォーム管理者(PA)ユーザーの場合:
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
user-cluster-backup-admin
)ロールの付与を依頼します。
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
- アプリケーション オペレーター(AO)ユーザーの場合:
- バックアップ作成者: 手動バックアップの作成と復元を行います。プロジェクト IAM 管理者に、バックアップ作成者(
backup-creator
)ロールを付与するよう依頼します。
- バックアップ作成者: 手動バックアップの作成と復元を行います。プロジェクト IAM 管理者に、バックアップ作成者(
- 詳細については、ロールの定義をご覧ください。
- プラットフォーム管理者(PA)ユーザーの場合:
保護されたアプリケーション リソースをデプロイする
バックアップ中にアプリケーションに関連付けられたすべてのリソースをバックアップし、復元中にすべてのリソースを復元する ProtectedApplication
リソースを含む Deployment
仕様の例を次に示します。
apiVersion: v1
kind: Namespace
metadata:
name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: protected-application-deployment
namespace: applications
labels:
app: protected
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: unprotected-application-deployment
namespace: applications
labels:
app: unprotected
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
name: protected-application-test
namespace: applications
spec:
applicationName: protectedApplication
resourceSelection:
type: Selector
selector:
matchLabels:
app: protected
components:
- name: protect-application-deployment
resourceKind: Deployment
resourceNames:
- protected-application-deployment
strategy:
type: BackupAllRestoreAll
backupScope
の selectedApplications
のリストで ProtectedApplication
を指定します。次に例を示します。
apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
name: protected-application-backupplan-test
namespace: applications
spec:
clusterName: "cluster-sample"
backupSchedule:
cronSchedule: "*/30 * * * *"
paused: true
backupConfig:
backupScope:
selectedApplications:
namespacedNames:
- name: protected-application-test
namespace: applications
backupRepository: "backup-repository"
retentionPolicy:
backupDeleteLockDays: 10
backupRetainDays: 10
この例には次の値が含まれています。
値 | 説明 |
---|---|
resourceSelection |
保護されたアプリケーションに属するリソースを識別する方法を定義します。
|
components |
保護されたアプリケーションのコンポーネント(デプロイやステートフル セットなど)のリスト:
|
次のステップ
- 保護されたアプリケーション戦略を選択するには、保護されたアプリケーション戦略をご覧ください。