Restaure aplicativos usando o Trident Protect
Você pode usar o Trident Protect para restaurar seu aplicativo a partir de um snapshot ou backup. A restauração a partir de um instantâneo existente será mais rápida ao restaurar o aplicativo para o mesmo cluster.
Quando você restaura um aplicativo, todos os ganchos de execução configurados para o aplicativo são restaurados com o aplicativo. Se um gancho de execução pós-restauração estiver presente, ele será executado automaticamente como parte da operação de restauração. |
Anotações e rótulos de namespace durante operações de restauração e failover
Durante as operações de restauração e failover, rótulos e anotações no namespace de destino são feitos para corresponder aos rótulos e anotações no namespace de origem. Rótulos ou anotações do namespace de origem que não existem no namespace de destino são adicionados, e quaisquer rótulos ou anotações que já existem são sobrescritos para corresponder ao valor do namespace de origem. Rótulos ou anotações que existem apenas no namespace de destino permanecem inalterados.
Se você usar o RedHat OpenShift, é importante observar o papel crítico das anotações de namespace em ambientes OpenShift. As anotações de namespace garantem que os pods restaurados aderem às permissões apropriadas e às configurações de segurança definidas pelas restrições de contexto de segurança OpenShift (SCCs) e possam acessar volumes sem problemas de permissão. Para obter mais informações, consulte o "Documentação de restrições de contexto de segurança OpenShift". |
Você pode impedir que anotações específicas no namespace de destino sejam sobrescritas definindo a variável de ambiente do Kubernetes RESTORE_SKIP_NAMESPACE_ANNOTATIONS
antes de executar a operação de restauração ou failover. Por exemplo:
kubectl set env -n trident-protect deploy/trident-protect-controller-manager RESTORE_SKIP_NAMESPACE_ANNOTATIONS=<annotation_key_to_skip_1>,<annotation_key_to_skip_2>
Se instalou a aplicação de origem utilizando Helm com o --create-namespace
sinalizador, é dado um tratamento especial à name
tecla de identificação. Durante o processo de restauração ou failover, o Trident Protect copia esse rótulo para o namespace de destino, mas atualiza o valor para o valor do namespace de destino se o valor da origem corresponder ao namespace de origem. Se esse valor não corresponder ao namespace de origem, ele será copiado para o namespace de destino sem alterações.
Exemplo
O exemplo a seguir apresenta um namespace de origem e destino, cada um com anotações e rótulos diferentes. Você pode ver o estado do namespace de destino antes e depois da operação e como as anotações e rótulos são combinados ou substituídos no namespace de destino.
Antes da operação de restauração ou failover
A tabela a seguir ilustra o estado dos namespaces de origem e destino de exemplo antes da operação de restauração ou failover:
Namespace | Anotações | Etiquetas |
---|---|---|
Namespace ns-1 (fonte) |
|
|
Namespace ns-2 (destino) |
|
|
Após a operação de restauração
A tabela a seguir ilustra o estado do namespace de destino de exemplo após a operação de restauração ou failover. Algumas chaves foram adicionadas, algumas foram sobrescritas e o name
rótulo foi atualizado para corresponder ao namespace de destino:
Namespace | Anotações | Etiquetas |
---|---|---|
Namespace ns-2 (destino) |
|
|
Restaure de um backup para um namespace diferente
Quando você restaura um backup para um namespace diferente usando um BackupRestore CR, o Trident Protect restaura o aplicativo em um novo namespace, mas o aplicativo restaurado não é protegido automaticamente pelo Trident Protect. Para proteger o aplicativo restaurado, você precisa criar um CR de aplicativo para o aplicativo restaurado para que ele seja protegido pelo Trident Protect.
Restaurar um backup para um namespace diferente com recursos existentes não alterará nenhum recurso que compartilhe nomes com aqueles no backup. Para restaurar todos os recursos no backup, exclua e recrie o namespace de destino ou restaure o backup para um novo namespace. |
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-backup-restore-cr.yaml
. -
No arquivo criado, configure os seguintes atributos:
-
metadata.name: (required) o nome deste recurso personalizado; escolha um nome único e sensível para o seu ambiente.
-
Spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do backup é armazenado. Você pode usar o seguinte comando para encontrar este caminho:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) o nome do AppVault onde o conteúdo de backup é armazenado.
-
spec.namespaceMapping: o mapeamento do namespace de origem da operação de restauração para o namespace de destino. Substitua
my-source-namespace
emy-destination-namespace
por informações do seu ambiente. -
Spec.storageClassMapping: O mapeamento da classe de armazenamento de origem da operação de restauração para a classe de armazenamento de destino. Substitua
destinationStorageClass
esourceStorageClass
por informações do seu ambiente.apiVersion: protect.trident.netapp.io/v1o kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] storageClassMapping: destination: "${destinationStorageClass}" source: "${sourceStorageClass}"
-
-
(Opcional) se você precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtragem que inclua ou exclua recursos marcados com rótulos específicos:
-
ResourceFilter.resourceSelectionCriteria: (Necessário para filtragem) Use
include or exclude
para incluir ou excluir um recurso definido em resourceMatchers. Adicione os seguintes parâmetros resourceMatchers para definir os recursos a serem incluídos ou excluídos:-
ResourceFilter.resourceMatchers: Array de resourceMatcher objetos.
-
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"
: .Por exemplo:
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: group: my-resource-group kind: my-resource-kind version: my-resource-version names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
Depois de preencher o
trident-protect-backup-restore-cr.yaml
ficheiro com os valores corretos, aplique o CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Restaure o backup para um namespace diferente, substituindo valores entre parênteses por informações do seu ambiente. O
namespace-mapping
argumento usa namespaces separados por dois pontos para mapear namespaces de origem para os namespaces de destino corretos no formatosource1:dest1,source2:dest2
. Por exemplo:tridentctl protect create backuprestore <my_restore_name> --backup <backup_namespace>/<backup_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>
Restaure de um backup para o namespace original
Você pode restaurar um backup para o namespace original a qualquer momento.
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-backup-ipr-cr.yaml
. -
No arquivo criado, configure os seguintes atributos:
-
metadata.name: (required) o nome deste recurso personalizado; escolha um nome único e sensível para o seu ambiente.
-
Spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do backup é armazenado. Você pode usar o seguinte comando para encontrar este caminho:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
Spec.appVaultRef: (required) o nome do AppVault onde o conteúdo de backup é armazenado.
Por exemplo:
apiVersion: protect.trident.netapp.io/v1 kind: BackupInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name
-
-
(Opcional) se você precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtragem que inclua ou exclua recursos marcados com rótulos específicos:
-
ResourceFilter.resourceSelectionCriteria: (Necessário para filtragem) Use
include or exclude
para incluir ou excluir um recurso definido em resourceMatchers. Adicione os seguintes parâmetros resourceMatchers para definir os recursos a serem incluídos ou excluídos:-
ResourceFilter.resourceMatchers: Array de resourceMatcher objetos.
-
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"
: .Por exemplo:
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: group: my-resource-group kind: my-resource-kind version: my-resource-version names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
Depois de preencher o
trident-protect-backup-ipr-cr.yaml
ficheiro com os valores corretos, aplique o CR:kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
Restaure o backup para o namespace original, substituindo valores entre parênteses por informações do seu ambiente. O
backup
argumento usa um namespace e um nome de backup no formato<namespace>/<name>
. Por exemplo:tridentctl protect create backupinplacerestore <my_restore_name> --backup <namespace/backup_to_restore>
Restauração de um snapshot para um namespace diferente
É possível restaurar dados de um snapshot usando um arquivo de recurso personalizado (CR) para um namespace diferente ou namespace de origem original. Quando você restaura um snapshot para um namespace diferente usando um SnapshotRestore CR, o Trident Protect restaura o aplicativo em um novo namespace, mas o aplicativo restaurado não é protegido automaticamente pelo Trident Protect. Para proteger o aplicativo restaurado, você precisa criar um CR de aplicativo para o aplicativo restaurado para que ele seja protegido pelo Trident Protect.
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-snapshot-restore-cr.yaml
. -
No arquivo criado, configure os seguintes atributos:
-
metadata.name: (required) o nome deste recurso personalizado; escolha um nome único e sensível para o seu ambiente.
-
Spec.appVaultRef: (required) o nome do AppVault onde o conteúdo do instantâneo é armazenado.
-
Spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do snapshot é armazenado. Você pode usar o seguinte comando para encontrar este caminho:
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
-
spec.namespaceMapping: o mapeamento do namespace de origem da operação de restauração para o namespace de destino. Substitua
my-source-namespace
emy-destination-namespace
por informações do seu ambiente. -
Spec.storageClassMapping: O mapeamento da classe de armazenamento de origem da operação de restauração para a classe de armazenamento de destino. Substitua
destinationStorageClass
esourceStorageClass
por informações do seu ambiente.apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] storageClassMapping: destination: "${destinationStorageClass}" source: "${sourceStorageClass}"
-
-
(Opcional) se você precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtragem que inclua ou exclua recursos marcados com rótulos específicos:
-
ResourceFilter.resourceSelectionCriteria: (Necessário para filtragem) Use
include or exclude
para incluir ou excluir um recurso definido em resourceMatchers. Adicione os seguintes parâmetros resourceMatchers para definir os recursos a serem incluídos ou excluídos:-
ResourceFilter.resourceMatchers: Array de resourceMatcher objetos.
-
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"
: .Por exemplo:
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: group: my-resource-group kind: my-resource-kind version: my-resource-version names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
Depois de preencher o
trident-protect-snapshot-restore-cr.yaml
ficheiro com os valores corretos, aplique o CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
Restaure o snapshot para um namespace diferente, substituindo valores entre parênteses por informações do seu ambiente.
-
O
snapshot
argumento usa um namespace e um nome instantâneo no formato<namespace>/<name>
. -
O
namespace-mapping
argumento usa namespaces separados por dois pontos para mapear namespaces de origem para os namespaces de destino corretos no formatosource1:dest1,source2:dest2
.Por exemplo:
tridentctl protect create snapshotrestore <my_restore_name> --snapshot <namespace/snapshot_to_restore> --namespace-mapping <source_to_destination_namespace_mapping>
-
Restauração de um snapshot para o namespace original
Você pode restaurar um snapshot para o namespace original a qualquer momento.
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-snapshot-ipr-cr.yaml
. -
No arquivo criado, configure os seguintes atributos:
-
metadata.name: (required) o nome deste recurso personalizado; escolha um nome único e sensível para o seu ambiente.
-
Spec.appVaultRef: (required) o nome do AppVault onde o conteúdo do instantâneo é armazenado.
-
Spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do snapshot é armazenado. Você pode usar o seguinte comando para encontrar este caminho:
kubectl get snapshots <SNAPSHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
apiVersion: protect.trident.netapp.io/v1 kind: SnapshotInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path
-
-
(Opcional) se você precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtragem que inclua ou exclua recursos marcados com rótulos específicos:
-
ResourceFilter.resourceSelectionCriteria: (Necessário para filtragem) Use
include or exclude
para incluir ou excluir um recurso definido em resourceMatchers. Adicione os seguintes parâmetros resourceMatchers para definir os recursos a serem incluídos ou excluídos:-
ResourceFilter.resourceMatchers: Array de resourceMatcher objetos.
-
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"
: .Por exemplo:
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: group: my-resource-group kind: my-resource-kind version: my-resource-version names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"]
-
-
Depois de preencher o
trident-protect-snapshot-ipr-cr.yaml
ficheiro com os valores corretos, aplique o CR:kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Restaure o snapshot para o namespace original, substituindo valores entre parênteses por informações do seu ambiente. Por exemplo:
tridentctl protect create snapshotinplacerestore <my_restore_name> --snapshot <snapshot_to_restore>
Verifique o status de uma operação de restauração
Você pode usar a linha de comando para verificar o status de uma operação de restauração que está em andamento, concluiu ou falhou.
-
Use o seguinte comando para recuperar o status da operação de restauração, substituindo valores em brackes por informações do seu ambiente:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'