Defina uma aplicação para gestão com o Trident Protect.
Você pode definir um aplicativo que deseja gerenciar com o Trident Protect criando um CR (Create Request) de aplicativo e um CR do AppVault associado.
Crie um AppVault CR
Você precisa criar um AppVault CR que será usado ao executar operações de proteção de dados no aplicativo, e o AppVault CR precisa residir no cluster onde o Trident Protect está instalado. O pedido de configuração (CR) do AppVault é específico para o seu ambiente; para exemplos de pedidos de configuração do AppVault, consulte [link para a documentação]."Recursos personalizados do AppVault."
Definir uma aplicação
Você precisa definir cada aplicativo que deseja gerenciar com o Trident Protect. Você pode definir um aplicativo para gerenciamento criando manualmente uma solicitação de configuração (CR) do aplicativo ou usando a CLI do Trident Protect.
|
|
Para definir um aplicativo com escopo de VM que protege máquinas virtuais (VMs) específicas do KubeVirt por nome em vez de namespaces inteiros, use o campo spec.includedVirtualMachines no CR do aplicativo ou o sinalizador --virtual-machines na CLI. Para obter detalhes, referência de campos e exemplos de YAML, consulte "Proteja máquinas virtuais KubeVirt com Trident Protect".
|
-
Criar o ficheiro CR da aplicação de destino:
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o (por exemplo,
maria-app.yaml). -
Configure os seguintes atributos:
-
metadata.name: (required) o nome do recurso personalizado do aplicativo. Observe o nome escolhido porque outros arquivos CR necessários para operações de proteção referem-se a esse valor.
-
spec.includedNamespaces: (required) Use o seletor de namespace e rótulo para especificar os namespaces e recursos que o aplicativo usa. O namespace do aplicativo deve fazer parte dessa lista. O seletor de etiquetas é opcional e pode ser usado para filtrar recursos dentro de cada namespace especificado.
-
spec.includedClusterScopedResources: (Optional) Use este atributo para especificar recursos com escopo de cluster a serem incluídos na definição do aplicativo. Esse atributo permite que você selecione esses recursos com base em seu grupo, versão, tipo e rótulos.
-
GroupVersionKind: (required) especifica o grupo API, a versão e o tipo do recurso com escopo de cluster.
-
LabelSeletor: (Opcional) filtra os recursos com escopo de cluster com base em seus rótulos.
-
-
spec.volumeGroups: (Opcional) use este atributo para criar snapshots de grupo de volume consistentes com falhas de volumes relacionados em conjunto. Para obter detalhes, consulte "Use snapshots de grupo de volume com Trident Protect".
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Opcional) Esta anotação só se aplica a aplicações definidas a partir de máquinas virtuais, como em ambientes KubeVirt, onde o congelamento do sistema de arquivos ocorre antes dos snapshots. Especifique se este aplicativo pode gravar no sistema de arquivos durante um snapshot. Se definido como verdadeiro, o aplicativo ignora a configuração global e pode gravar no sistema de arquivos durante um snapshot. Se definido como falso, o aplicativo ignora a configuração global e o sistema de arquivos é congelado durante a captura de um instantâneo. Se especificada, mas a aplicação não tiver máquinas virtuais na definição da aplicação, a anotação será ignorada. Caso não seja especificado, o aplicativo segue o"configuração de congelamento global do Trident Protect" .
-
-
Se você precisar aplicar essa anotação depois que um aplicativo já tiver sido criado, você pode usar o seguinte comando:
kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"
+
Exemplo YAML:
+
apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
annotations:
protect.trident.netapp.io/skip-vm-freeze: "false"
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
-
(Opcional) Se necessário, você pode adicionar filtragem de recursos à mesma CR para incluir ou excluir recursos específicos:
-
Exemplo de filtro genérico:
-
ResourceFilter.resourceSelectionCriteria: (Necessário para filtragem) Use
IncludeouExcludeinclua ou exclua um recurso definido em resourceMatchers. Adicione os seguintes parâmetros resourceMatchers para definir os recursos a serem incluídos ou excluídos:-
ResourceFilter.resourceMatchers: Uma matriz de resourceMatcher objetos. Se você definir vários elementos nesse array, eles corresponderão como uma OPERAÇÃO OU, e os campos dentro de cada elemento (grupo, tipo, versão) corresponderão como uma OPERAÇÃO E.
-
ResourceMatchers[].group: (Optional) Grupo do recurso a ser filtrado.
-
ResourceMatchers[].kind: (Opcional) tipo do recurso a ser filtrado.
-
ResourceMatchers[].version: (Optional) versão do recurso a ser filtrado.
-
ResourceMatchers[].names: (Optional) nomes no campo Kubernetes metadata.name do recurso a ser filtrado.
-
ResourceMatchers[].namespaces: (Optional) namespaces no campo Kubernetes metadata.name do recurso a ser filtrado.
-
ResourceMatchers[].labelSelectors: (Optional) string de seleção de etiquetas no campo Kubernetes metadata.name do recurso, conforme definido no "Documentação do Kubernetes". Por exemplo
"trident.netapp.io/os=linux": .Quando ambos resourceFilterelabelSelectorsão usados,resourceFiltercorre primeiro e depoislabelSelectoré aplicado aos recursos resultantes.
Por exemplo:
-
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"] -
-
Exemplo de filtro somente de PVC:
Para definir um aplicativo somente para PVC, você também deve incluir
PersistentVolumeeVolumeSnapshotClassno filtro de recursos. As operações de Snapshot e backup dependem dePersistentVolume(o volume com escopo de cluster vinculado a cada PVC) eVolumeSnapshotClass(o driver de snapshot), e falharão sem eles. Por exemplo:
apiVersion: protect.trident.netapp.io/v1 kind: Application metadata: name: my-pvc-app namespace: my-app-namespace spec: includedNamespaces: - namespace: my-app-namespace resourceFilter: resourceMatchers: - kind: PersistentVolumeClaim version: v1 - kind: PersistentVolume version: v1 - kind: VolumeSnapshotClass version: v1 resourceSelectionCriteria: Include -
-
Depois de criar a aplicação CR para corresponder ao seu ambiente, aplique o CR. Por exemplo:
kubectl apply -f maria-app.yaml
-
Crie e aplique a definição do aplicativo usando um dos exemplos a seguir, substituindo valores entre parênteses por informações do ambiente. Você pode incluir namespaces e recursos na definição do aplicativo usando listas separadas por vírgulas com os argumentos mostrados nos exemplos.
Você pode, opcionalmente, usar uma anotação ao criar um aplicativo para especificar se o aplicativo pode gravar no sistema de arquivos durante um snapshot. Isso só se aplica a aplicativos definidos a partir de máquinas virtuais, como em ambientes KubeVirt, onde o congelamento do sistema de arquivos ocorre antes dos snapshots. Se você definir a anotação para true , o aplicativo ignora a configuração global e pode gravar no sistema de arquivos durante um snapshot. Se você definir para false , o aplicativo ignora a configuração global e o sistema de arquivos fica congelado durante a captura de um snapshot. Se você usar a anotação, mas o aplicativo não tiver máquinas virtuais na definição do aplicativo, a anotação será ignorada. Se você não usar a anotação, o aplicativo seguirá o padrão."configuração de congelamento global do Trident Protect" .
Para especificar a anotação ao usar a CLI para criar um aplicativo, você pode usar a --annotation flag.
+ * Crie o aplicativo e utilize a configuração global para o comportamento de congelamento do sistema de arquivos:
+
tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace>
+ * Crie o aplicativo e configure as definições locais do aplicativo para o comportamento de congelamento do sistema de arquivos:
+
tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --annotation protect.trident.netapp.io/skip-vm-freeze=<"true"|"false">
Você pode usar --resource-filter-include e --resource-filter-exclude sinalizadores para incluir ou excluir recursos com base em resourceSelectionCriteria como grupo, tipo, versão, rótulos, nomes e namespaces, conforme mostrado no exemplo a seguir:
+
tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --resource-filter-include '[{"Group":"apps","Kind":"Deployment","Version":"v1","Names":["my-deployment"],"Namespaces":["my-namespace"],"LabelSelectors":["app=my-app"]}]'
+ * Para definir um aplicativo somente para PVC, você também deve incluir PersistentVolume e VolumeSnapshotClass` no filtro de recursos. As operações de Snapshot e backup dependem de PersistentVolume (o volume com escopo de cluster vinculado a cada PVC) e VolumeSnapshotClass (o driver de Snapshot), e falharão sem eles. Por exemplo:
+
tridentctl-protect create app my-pvc-app --namespaces <my-app-namespace> --resource-filter-include '[{"Kind":"PersistentVolumeClaim","Version":"v1"},{"Kind":"PersistentVolume","Version":"v1"},{"Kind":"VolumeSnapshotClass","Version":"v1"}]' -n <my-app-namespace>