Restaure aplicativos usando Trident Protect
Você pode usar Trident Protect para restaurar seu aplicativo a partir de um snapshot ou backup. Restaurar a partir de um snapshot existente será mais rápido ao restaurar o aplicativo para o mesmo cluster.
|
|
|
Restaurar a partir de um backup para um namespace diferente
Ao restaurar um backup para um namespace diferente usando um BackupRestore CR, Trident Protect restaura o aplicativo em um novo namespace e cria um CR de aplicativo para o aplicativo restaurado. Para proteger o aplicativo restaurado, crie backups ou snapshots sob demanda, ou estabeleça um cronograma de proteção.
|
|
|
Certifique-se de que o tempo de expiração do token de sessão da AWS seja suficiente para quaisquer operações de restauração do s3 de longa duração. Se o token expirar durante a operação de restauração, a operação pode falhar.
-
Consulte o "Documentação do AWS API" para mais informações sobre como verificar a expiração do token de sessão atual.
-
Consulte "Documentação do AWS IAM" para obter mais informações sobre credenciais com recursos da AWS.
|
|
Ao restaurar backups usando Kopia como o data mover, você pode opcionalmente especificar anotações no CR ou usando a CLI para controlar o comportamento do armazenamento temporário usado pelo Kopia. Consulte o "Documentação Kopia" para mais informações sobre as opções que você pode configurar. Use o comando tridentctl-protect create --help para mais informações sobre como especificar anotações com a Trident Protect CLI.
|
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-backup-restore-cr.yaml. -
No arquivo que você criou, configure os seguintes atributos:
-
metadata.name: (Obrigatório) O nome deste recurso personalizado; escolha um nome único e adequado ao seu ambiente.
-
spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do backup está armazenado. Você pode usar o seguinte comando para encontrar esse caminho:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef: (Obrigatório) O nome do AppVault onde o conteúdo do backup está armazenado.
-
spec.namespaceMapping: O mapeamento do namespace de origem da operação de restauração para o namespace de destino. Substitua
my-source-namespaceemy-destination-namespacepelas informações do seu ambiente.--- apiVersion: protect.trident.netapp.io/v1 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"}]
-
-
(Opcional) Se precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtros que incluam ou excluam recursos marcados com rótulos específicos:
Trident Protect seleciona alguns recursos automaticamente devido à sua relação com os recursos que você seleciona. Por exemplo, se você selecionar um recurso de reivindicação de volume persistente e ele tiver um pod associado, Trident Protect também restaurará o pod associado. -
resourceFilter.resourceSelectionCriteria: (obrigatório para filtragem) Use
IncludeouExcludepara 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: Uma matriz de objetos resourceMatcher. Se você definir vários elementos nesta matriz, eles correspondem como uma operação OR, e os campos dentro de cada elemento (group, kind, version) correspondem como uma operação AND.
-
resourceMatchers[].group: (Opcional) Grupo do recurso a ser filtrado.
-
resourceMatchers[].kind: (Opcional) Tipo do recurso a ser filtrado.
-
resourceMatchers[].version: (Opcional) Versão do recurso a ser filtrado.
-
resourceMatchers[].names: (Opcional) Nomes no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].namespaces: (Opcional) Namespaces no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].labelSelectors: (Opcional) String seletora de rótulo no campo metadata.name do Kubernetes 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-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"] -
-
Após preencher o arquivo
trident-protect-backup-restore-cr.yamlcom os valores corretos, aplique a CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Restaure o backup para um namespace diferente, substituindo os valores entre colchetes pelas informações do seu ambiente. O
namespace-mappingargumento usa namespaces separados por dois pontos para mapear os 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> \ -n <application_namespace>
Restaurar de um backup para o namespace original
Você pode restaurar um backup para o namespace original a qualquer momento.
Certifique-se de que o tempo de expiração do token de sessão da AWS seja suficiente para quaisquer operações de restauração do s3 de longa duração. Se o token expirar durante a operação de restauração, a operação pode falhar.
-
Consulte o "Documentação do AWS API" para mais informações sobre como verificar a expiração do token de sessão atual.
-
Consulte "Documentação do AWS IAM" para obter mais informações sobre credenciais com recursos da AWS.
|
|
Ao restaurar backups usando Kopia como o data mover, você pode opcionalmente especificar anotações no CR ou usando a CLI para controlar o comportamento do armazenamento temporário usado pelo Kopia. Consulte o "Documentação Kopia" para mais informações sobre as opções que você pode configurar. Use o comando tridentctl-protect create --help para mais informações sobre como especificar anotações com a Trident Protect CLI.
|
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-backup-ipr-cr.yaml. -
No arquivo que você criou, configure os seguintes atributos:
-
metadata.name: (Obrigatório) O nome deste recurso personalizado; escolha um nome único e adequado ao seu ambiente.
-
spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do backup está armazenado. Você pode usar o seguinte comando para encontrar esse caminho:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef: (Obrigatório) O nome do AppVault onde o conteúdo do backup está 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 precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtros que incluam ou excluam recursos marcados com rótulos específicos:
Trident Protect seleciona alguns recursos automaticamente devido à sua relação com os recursos que você seleciona. Por exemplo, se você selecionar um recurso de reivindicação de volume persistente e ele tiver um pod associado, Trident Protect também restaurará o pod associado. -
resourceFilter.resourceSelectionCriteria: (obrigatório para filtragem) Use
IncludeouExcludepara 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: Uma matriz de objetos resourceMatcher. Se você definir vários elementos nesta matriz, eles correspondem como uma operação OR, e os campos dentro de cada elemento (group, kind, version) correspondem como uma operação AND.
-
resourceMatchers[].group: (Opcional) Grupo do recurso a ser filtrado.
-
resourceMatchers[].kind: (Opcional) Tipo do recurso a ser filtrado.
-
resourceMatchers[].version: (Opcional) Versão do recurso a ser filtrado.
-
resourceMatchers[].names: (Opcional) Nomes no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].namespaces: (Opcional) Namespaces no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].labelSelectors: (Opcional) String seletora de rótulo no campo metadata.name do Kubernetes 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-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"] -
-
Após preencher o arquivo
trident-protect-backup-ipr-cr.yamlcom os valores corretos, aplique a CR:kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
Restaure o backup para o namespace original, substituindo os valores entre colchetes pelas informações do seu ambiente. O
backupargumento 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> \ -n <application_namespace>
Restaurar de um backup para um cluster diferente
Você pode restaurar um backup em um cluster diferente se houver um problema com o cluster original.
|
|
|
Certifique-se de que os seguintes pré-requisitos sejam atendidos:
-
O cluster de destino tem Trident Protect instalado.
-
O cluster de destino tem acesso ao caminho do bucket do mesmo AppVault que o cluster de origem, onde o backup está armazenado.
-
Certifique-se de que seu ambiente local possa se conectar ao bucket de storage de objetos definido no AppVault CR ao executar o comando
tridentctl-protect get appvaultcontent. Se as restrições de rede impedirem o acesso, execute o Trident Protect CLI a partir de um pod no cluster de destino. -
Certifique-se de que o tempo de expiração do token de sessão da AWS seja suficiente para quaisquer operações de restauração de longa duração. Se o token expirar durante a operação de restauração, a operação pode falhar.
-
Consulte o "Documentação do AWS API" para mais informações sobre como verificar a expiração do token de sessão atual.
-
Consulte "Documentação da AWS" para obter mais informações sobre credenciais com recursos da AWS.
-
-
Verifique a disponibilidade do AppVault CR no cluster de destino usando o plugin Trident Protect CLI:
tridentctl-protect get appvault --context <destination_cluster_name>Certifique-se de que o namespace destinado à restauração do aplicativo exista no cluster de destino. -
Visualize o conteúdo do backup disponível AppVault do cluster de destino:
tridentctl-protect get appvaultcontent <appvault_name> \ --show-resources backup \ --show-paths \ --context <destination_cluster_name>Executar este comando exibe os backups disponíveis no AppVault, incluindo seus clusters de origem, nomes de aplicativos correspondentes, carimbos de data/hora e caminhos de arquivamento.
Exemplo de saída:
+-------------+-----------+--------+-----------------+--------------------------+-------------+ | CLUSTER | APP | TYPE | NAME | TIMESTAMP | PATH | +-------------+-----------+--------+-----------------+--------------------------+-------------+ | production1 | wordpress | backup | wordpress-bkup-1| 2024-10-30 08:37:40 (UTC)| backuppath1 | | production1 | wordpress | backup | wordpress-bkup-2| 2024-10-30 08:37:40 (UTC)| backuppath2 | +-------------+-----------+--------+-----------------+--------------------------+-------------+
-
Restaure o aplicativo no cluster de destino usando o nome AppVault e o caminho do arquivo:
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-backup-restore-cr.yaml. -
No arquivo que você criou, configure os seguintes atributos:
-
metadata.name: (Obrigatório) O nome deste recurso personalizado; escolha um nome único e adequado ao seu ambiente.
-
spec.appVaultRef: (Obrigatório) O nome do AppVault onde o conteúdo do backup está armazenado.
-
spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do backup está armazenado. Você pode usar o seguinte comando para encontrar esse caminho:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'Se o BackupRestore CR não estiver disponível, você pode usar o comando mencionado na etapa 2 para visualizar o conteúdo do backup. -
spec.namespaceMapping: O mapeamento do namespace de origem da operação de restauração para o namespace de destino. Substitua
my-source-namespaceemy-destination-namespacepelas informações do seu ambiente.Por exemplo:
apiVersion: protect.trident.netapp.io/v1 kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appVaultRef: appvault-name appArchivePath: my-backup-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] -
-
Após preencher o arquivo
trident-protect-backup-restore-cr.yamlcom os valores corretos, aplique a CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
Use o seguinte comando para restaurar o aplicativo, substituindo os valores entre colchetes pelas informações do seu ambiente. O argumento namespace-mapping usa namespaces separados por dois pontos para mapear os namespaces de origem para os namespaces de destino corretos no formato source1:dest1,source2:dest2. Por exemplo:
tridentctl-protect create backuprestore <restore_name> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --appvault <appvault_name> \ --path <backup_path> \ --context <destination_cluster_name> \ -n <application_namespace>
Restaurar a partir de um Snapshot para um namespace diferente
Você pode restaurar dados de um snapshot usando um arquivo de recurso personalizado (CR) para um namespace diferente ou para o namespace de origem original. Ao restaurar um snapshot para um namespace diferente usando um SnapshotRestore CR, Trident Protect restaura o aplicativo em um novo namespace e cria um CR de aplicativo para o aplicativo restaurado. Para proteger o aplicativo restaurado, crie backups ou snapshots sob demanda, ou estabeleça um agendamento de proteção.
|
|
|
Certifique-se de que o tempo de expiração do token de sessão da AWS seja suficiente para quaisquer operações de restauração do s3 de longa duração. Se o token expirar durante a operação de restauração, a operação pode falhar.
-
Consulte o "Documentação do AWS API" para mais informações sobre como verificar a expiração do token de sessão atual.
-
Consulte "Documentação do AWS IAM" para obter mais informações sobre credenciais com recursos da AWS.
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-snapshot-restore-cr.yaml. -
No arquivo que você criou, configure os seguintes atributos:
-
metadata.name: (Obrigatório) O nome deste recurso personalizado; escolha um nome único e adequado ao seu ambiente.
-
spec.appVaultRef: (Obrigatório) O nome do AppVault onde o conteúdo do snapshot está armazenado.
-
spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do snapshot está armazenado. Você pode usar o seguinte comando para encontrar esse 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-namespaceemy-destination-namespacepelas 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"}]
-
-
(Opcional) Se precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtros que incluam ou excluam recursos marcados com rótulos específicos:
Trident Protect seleciona alguns recursos automaticamente devido à sua relação com os recursos que você seleciona. Por exemplo, se você selecionar um recurso de reivindicação de volume persistente e ele tiver um pod associado, Trident Protect também restaurará o pod associado. -
resourceFilter.resourceSelectionCriteria: (obrigatório para filtragem) Use
IncludeouExcludepara 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: Uma matriz de objetos resourceMatcher. Se você definir vários elementos nesta matriz, eles correspondem como uma operação OR, e os campos dentro de cada elemento (group, kind, version) correspondem como uma operação AND.
-
resourceMatchers[].group: (Opcional) Grupo do recurso a ser filtrado.
-
resourceMatchers[].kind: (Opcional) Tipo do recurso a ser filtrado.
-
resourceMatchers[].version: (Opcional) Versão do recurso a ser filtrado.
-
resourceMatchers[].names: (Opcional) Nomes no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].namespaces: (Opcional) Namespaces no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].labelSelectors: (Opcional) String seletora de rótulo no campo metadata.name do Kubernetes 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-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"] -
-
Após preencher o arquivo
trident-protect-snapshot-restore-cr.yamlcom os valores corretos, aplique a CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
Restaure o snapshot para um namespace diferente, substituindo os valores entre colchetes pelas informações do seu ambiente.
-
O
snapshotargumento usa um namespace e um nome de snapshot 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 formato `source1:dest1,source2:dest2.Por exemplo:
tridentctl-protect create snapshotrestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ -n <application_namespace> -
Restaurar de um Snapshot para o namespace original
Você pode restaurar um snapshot para o namespace original a qualquer momento.
|
|
Se o seu aplicativo usa vários namespaces e esses namespaces possuem PVCs com o mesmo nome, as operações de restauração de snapshot (tanto no local quanto para um novo namespace) não funcionarão corretamente. Todos os volumes restaurados terão os mesmos dados em vez dos dados corretos para cada namespace. Use backup restore em vez de snapshot restore ou atualize para a versão 26.02 ou posterior, que corrige esse problema. |
Certifique-se de que o tempo de expiração do token de sessão da AWS seja suficiente para quaisquer operações de restauração do s3 de longa duração. Se o token expirar durante a operação de restauração, a operação pode falhar.
-
Consulte o "Documentação do AWS API" para mais informações sobre como verificar a expiração do token de sessão atual.
-
Consulte "Documentação do AWS IAM" para obter mais informações sobre credenciais com recursos da AWS.
-
Crie o arquivo de recurso personalizado (CR) e nomeie-o
trident-protect-snapshot-ipr-cr.yaml. -
No arquivo que você criou, configure os seguintes atributos:
-
metadata.name: (Obrigatório) O nome deste recurso personalizado; escolha um nome único e adequado ao seu ambiente.
-
spec.appVaultRef: (Obrigatório) O nome do AppVault onde o conteúdo do snapshot está armazenado.
-
spec.appArchivePath: O caminho dentro do AppVault onde o conteúdo do snapshot está armazenado. Você pode usar o seguinte comando para encontrar esse 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 precisar selecionar apenas determinados recursos do aplicativo para restaurar, adicione filtros que incluam ou excluam recursos marcados com rótulos específicos:
Trident Protect seleciona alguns recursos automaticamente devido à sua relação com os recursos que você seleciona. Por exemplo, se você selecionar um recurso de reivindicação de volume persistente e ele tiver um pod associado, Trident Protect também restaurará o pod associado. -
resourceFilter.resourceSelectionCriteria: (obrigatório para filtragem) Use
IncludeouExcludepara 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: Uma matriz de objetos resourceMatcher. Se você definir vários elementos nesta matriz, eles correspondem como uma operação OR, e os campos dentro de cada elemento (group, kind, version) correspondem como uma operação AND.
-
resourceMatchers[].group: (Opcional) Grupo do recurso a ser filtrado.
-
resourceMatchers[].kind: (Opcional) Tipo do recurso a ser filtrado.
-
resourceMatchers[].version: (Opcional) Versão do recurso a ser filtrado.
-
resourceMatchers[].names: (Opcional) Nomes no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].namespaces: (Opcional) Namespaces no campo metadata.name do Kubernetes do recurso a ser filtrado.
-
resourceMatchers[].labelSelectors: (Opcional) String seletora de rótulo no campo metadata.name do Kubernetes 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-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"] -
-
Após preencher o arquivo
trident-protect-snapshot-ipr-cr.yamlcom os valores corretos, aplique a CR:kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
Restaure o snapshot para o namespace original, substituindo os valores entre colchetes pelas informações do seu ambiente. Por exemplo:
tridentctl-protect create snapshotinplacerestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ -n <application_namespace>
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, foi concluída ou falhou.
-
Use o seguinte comando para recuperar o status da operação de restauração, substituindo os valores entre colchetes pelas informações do seu ambiente:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'