Kubernetes アプリケーションを追加して NetApp Backup and Recovery で保護する
NetApp Backup and Recovery の Web UI またはカスタムリソースファイルを使用して、Kubernetes アプリケーションを保護対象として追加します。標準の Kubernetes リソースを使用する名前空間ベースのアプリケーション、または1つ以上の仮想マシンを使用する VM ベースのアプリケーションを追加できます。
必須 NetApp Console ロール
Backup and Recovery スーパー管理者、または Backup and Recovery バックアップ管理者。"NetApp Backup and Recoveryのアクセス ロールについて学習します". "すべてのサービスに対するNetApp Consoleのアクセスロールについて学習します".
新しいKubernetesアプリケーションを追加して保護する
Kubernetes アプリケーションを保護するには、まず NetApp Backup and Recovery でアプリケーションを作成します。アプリケーションを作成すると、NetApp Backup and Recovery は Kubernetes クラスタ上で実行されているアプリケーションを認識します。
Kubernetesアプリケーションを追加して保護する前に、"Kubernetesワークロードを発見する" 。
-
NetApp Backup and Recoveryで、Inventory を選択します。
-
ページ右上のワークロード一覧で、*Kubernetes*が選択されていることを確認してください。
-
ワークロードの項目で View を選択すると、Kubernetes リソースが表示されます。
-
*アプリケーション*タブを選択します。
-
*アプリケーションの作成*を選択します。
-
アプリケーションの名前を入力します。
-
*クラスター*リストから、アプリケーションをホストしているクラスターを選択します。
-
*フィルター*で*名前空間*を選択すると、アプリケーションを名前空間でフィルタリングできます。
-
必要に応じて、次のいずれかのフィールドを選択して、保護するリソースを検索します。
-
関連する名前空間
-
リソースの種類
-
ラベルセレクター
-
クラスターレベルでスコープが設定されたリソースを追加するには、*クラスタースコープのリソースを追加*を選択します。それらを含めると、アプリケーション作成時にアプリケーションに追加されます。
-
必要に応じて、「検索」を選択し、検索条件に基づいてリソースを検索します。
NetApp Backup and Recoveryでは、検索パラメータや検索結果は保存されません。これらのパラメータは、選択したKubernetesクラスタ内でアプリケーションに含めることができるリソースを検索するために使用されます。
-
-
-
Backup and Recoveryでは、検索条件に一致するリソースの一覧が表示されます。
-
保護するリソースがリストに含まれている場合は、[次へ] を選択します。
-
オプションで、*ポリシー*領域で、既存の保護ポリシーを選択してアプリケーションを保護するか、新しいポリシーを作成します。ポリシーを選択しない場合、アプリケーションは保護ポリシーなしで作成されます。後で"保護ポリシーを追加する"できます。
-
*プレスクリプトとポストスクリプト*領域で、バックアップ操作の前または後に実行するプレスクリプトまたはポストスクリプトの実行フックを有効にして構成します。プレスクリプトまたはポストスクリプトを有効にするには、少なくとも1つ作成しておく必要があります。"実行フックテンプレート" 。
-
*作成*を選択します。
アプリケーションが作成され、Kubernetesインベントリの*Applications*タブにあるアプリケーション一覧に表示されます。NetApp Backup and Recoveryは、設定に基づいてアプリケーションを保護し、その進行状況は*Monitoring*エリアで確認できます。
-
NetApp Backup and Recoveryで、Inventory を選択します。
-
ページ右上のワークロード一覧で、*Kubernetes*が選択されていることを確認してください。
-
ワークロードの項目で View を選択すると、Kubernetes リソースが表示されます。
-
*アプリケーション*タブを選択します。
-
*アプリケーションの作成*を選択します。
-
アプリケーションの名前を入力します。
-
*クラスター*リストから、アプリケーションをホストしているクラスターを選択します。
-
*フィルター*で*仮想マシン*を選択すると、VMベースのアプリケーションを作成できます。
-
名前空間を選択し、必要に応じてラベルセレクタを含めることで、アプリケーションに追加する仮想マシンを検索します。
リストから仮想マシンを選択した場合、アプリケーション定義は静的になります。つまり、後から新しい仮想マシンをアプリケーションに追加することはできません(追加および保護するには、アプリケーションを編集する必要があります)。ラベルセレクタを使用する場合、個々の仮想マシンを選択したり、生成されたリストを編集したりすることはできませんが、後でセレクタに一致する仮想マシンはすべて自動的に含まれ、保護されます。 選択した仮想マシンが右側のリストに表示されます。
-
リストに保護する VM が含まれている場合は、* Next * を選択します。
-
オプションで、*ポリシー*領域で、既存の保護ポリシーを選択してアプリケーションを保護するか、新しいポリシーを作成します。ポリシーを選択しない場合、アプリケーションは保護ポリシーなしで作成されます。後で"保護ポリシーを追加する"できます。
-
*プレスクリプトとポストスクリプト*領域で、バックアップ操作の前または後に実行するプレスクリプトまたはポストスクリプトの実行フックを有効にして構成します。プレスクリプトまたはポストスクリプトを有効にするには、少なくとも1つ作成しておく必要があります。"実行フックテンプレート" 。
-
*作成*を選択します。
アプリケーションが作成され、Kubernetesインベントリの「アプリケーション」タブにあるアプリケーション一覧に表示されます。NetApp Backup and Recoveryは、お客様の設定に基づいてアプリケーションの保護を有効にします。進行状況は「監視」エリアで確認できます。
-
デスティネーション アプリケーションの CR ファイルを作成します:
-
カスタムリソース(CR)ファイルを作成し、名前を付けます(例:
my-app-name.yaml)。 -
次の属性を設定します:
-
metadata.name:(必須)アプリケーションのカスタム リソースの名前。保護操作に必要な他の CR ファイルはこの値を参照するため、選択した名前を書き留めておいてください。
-
spec.includedNamespaces:(必須)ネームスペースとラベルセレクタを使用して、アプリケーションが使用するネームスペースとリソースを指定します。アプリケーションネームスペースはこのリストに含まれている必要があります。ラベルセレクタはオプションであり、指定された各ネームスペース内のリソースをフィルタリングするために使用できます。
-
spec.includedClusterScopedResources:(オプション)この属性を使用して、アプリケーション定義に含めるクラスタスコープのリソースを指定します。この属性を使用すると、グループ、バージョン、種類、ラベルに基づいてこれらのリソースを選択できます。
-
groupVersionKind:(必須)クラスタースコープのリソースの API グループ、バージョン、および種類を指定します。
-
labelSelector:(オプション)ラベルに基づいてクラスタースコープのリソースをフィルタリングします。
-
-
-
必要に応じて、次のアノテーションを設定します:
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze:(オプション)このアノテーションは、KubeVirt環境など、スナップショットの前にファイルシステムのフリーズが発生する仮想マシンから定義されたアプリケーションにのみ適用されます。スナップショット作成中にこのアプリケーションがファイルシステムに書き込みできるかどうかを指定します。trueに設定すると、アプリケーションはグローバル設定を無視し、スナップショット作成中にファイルシステムへの書き込みが可能になります。falseに設定すると、アプリケーションはグローバル設定を無視し、スナップショット作成中はファイルシステムがフリーズします。指定されていても、アプリケーション定義に仮想マシンが含まれていない場合、このアノテーションは無視されます。指定されていない場合、アプリケーションは "グローバル ファイルシステム フリーズ設定"に従います。
-
protect.trident.netapp.io/protection-command:(オプション)この注釈を使用して、NetApp Backup and Recoveryにアプリケーションの保護または保護の停止を指示します。指定可能な値は `protect`または `unprotect`です。
-
protect.trident.netapp.io/protection-policy-name:(オプション)このアノテーションを使用して、このアプリケーションを保護するために使用するNetApp Backup and Recovery保護ポリシーの名前を指定します。この保護ポリシーは、NetApp Backup and Recoveryにすでに存在している必要があります。
-
-
アプリケーションがすでに作成された後にこのアノテーションを適用する必要がある場合は、次のコマンドを使用できます:
kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"
+
YAMLの例:
+
apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
annotations:
protect.trident.netapp.io/skip-vm-freeze: "false"
protect.trident.netapp.io/protection-command: "protect"
protect.trident.netapp.io/protection-policy-name: "policy-name"
name: my-app-name
namespace: my-app-namespace
spec:
includedNamespaces:
- namespace: namespace-1
labelSelector:
matchLabels:
app: example-app
- namespace: namespace-2
labelSelector:
matchLabels:
app: another-example-app
includedClusterScopedResources:
- groupVersionKind:
group: rbac.authorization.k8s.io
kind: ClusterRole
version: v1
labelSelector:
matchLabels:
mylabel: test
-
(オプション)特定のラベルでマークされたリソースを含めるか除外するかを指定するフィルタリングを追加します:
-
resourceFilter.resourceSelectionCriteria:(フィルタリングに必須) `Include`または `Exclude`を使用して、resourceMatchersで定義されたリソースを含めるか除外します。含めるまたは除外するリソースを定義するには、以下のresourceMatchersパラメータを追加します:
-
resourceFilter.resourceMatchers:resourceMatcherオブジェクトの配列。この配列に複数の要素を定義すると、それらはOR演算として一致し、各要素内のフィールド(グループ、種類、バージョン)はAND演算として一致します。
-
resourceMatchers[].group:(オプション)フィルタリングするリソースのグループ。
-
resourceMatchers[].kind:(オプション)フィルタリングするリソースの種類。
-
resourceMatchers[].version:(オプション)フィルタリングするリソースのバージョン。
-
resourceMatchers[].names:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前。
-
resourceMatchers[].namespaces:(オプション)フィルタリングするリソースの Kubernetes metadata.name フィールド内の名前空間。
-
resourceMatchers[].labelSelectors:(オプション) "Kubernetesドキュメント"で定義されているリソースのKubernetesメタデータ.nameフィールドのラベルセレクタ文字列。例:
"trident.netapp.io/os=linux"。`resourceFilter`と `labelSelector`の両方が使用される場合、 `resourceFilter`が最初に実行され、次に `labelSelector`が結果のリソースに適用されます。
-
例:
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
環境に合わせてアプリケーション CR を作成したら、CR を適用します。例:
kubectl apply -f my-app-name.yaml