Restaurar aplicativos Kubernetes usando um recurso personalizado
Você pode usar recursos personalizados para restaurar seus aplicativos a partir de um snapshot ou backup. A restauração a partir de um snapshot existente será mais rápida ao restaurar o aplicativo para o mesmo cluster.
|
|
|
Restaurar um backup para um namespace diferente
Ao restaurar um backup para um namespace diferente usando uma BackupRestore CR, NetApp Backup and Recovery restaura o aplicativo em um novo namespace e cria uma 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 da API AWS" 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 para controlar o comportamento do armazenamento temporário usado pelo Kopia. Consulte a "Documentação Kopia" para mais informações sobre as opções que você pode configurar. |
-
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
trident-protect-backup-restore-cr.yamlfile com os valores corretos, aplique a CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
Restaurar 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 da API AWS" 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 para controlar o comportamento do armazenamento temporário usado pelo Kopia. Consulte a "Documentação Kopia" para mais informações sobre as opções que você pode configurar. |
-
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
Restaurar um backup em 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 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 da API AWS" 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
trident-protect-backup-restore-cr.yamlfile com os valores corretos, aplique a CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
Restaurar 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, NetApp Backup and Recovery 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 da API AWS" 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
Restaurar um snapshot para o namespace original
Você pode restaurar um snapshot 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 da API AWS" 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