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.
-
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.
-
-
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) Adicione filtragem que inclua ou exclua recursos marcados com rótulos específicos:
-
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"] -
-
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 parafalse, 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 quando você usa a CLI para criar um aplicativo, você pode usar o
--annotationsinalizador.-
Crie o aplicativo e use 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 a configuração do aplicativo local 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-includee--resource-filter-excludesinalizadores para incluir ou excluir recursos com base emresourceSelectionCriteriacomo 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"]}]' -