Personalizar o backup e a restauração de um aplicativo

Nesta página, descrevemos como usar recursos do ProtectedApplication para personalizar o comportamento de backups e restaurações no Google Distributed Cloud (GDC) com isolamento físico.

As etapas descritas nesta página são opcionais e não são necessárias para configurar o backup e a restauração das suas cargas de trabalho. Os recursos ProtectedApplication são recursos opcionais do Kubernetes em namespaces que personalizam o backup e a restauração de aplicativos individuais com estado. Sem os recursos do ProtectedApplication, as seguintes restrições se aplicam:

  • Você restringe a granularidade do escopo de backup e restauração ao nível do namespace.
  • Nenhuma operação de limpeza e inatividade ocorre em cargas de trabalho durante a execução do backup.Isso pode resultar em máquinas virtuais com vários discos que não são consistentes com falhas após a restauração.

Os recursos ProtectedApplication são recursos opcionais de namespace do Kubernetes usados para personalizar o backup e a restauração de aplicativos individuais com estado. O recurso ProtectedApplication define quais recursos do Kubernetes pertencem a uma instância do aplicativo. É possível configurar manualmente uma orquestração especializada usando o comando kubectl para criar um backup e uma restauração desses aplicativos nos seguintes cenários:

  • Para identificar um conjunto de recursos em um namespace que pode ser armazenado em backup ou restaurado independentemente dos outros recursos nesse namespace. Um ProtectedApplication é a entidade de namespace mais refinada que você pode identificar para um escopo de backup ou restauração.
  • Para fornecer uma orquestração de backup especializada sempre que o ProtectedApplication estiver no escopo de um backup. Em particular, se o ProtectedApplication contiver recursos PersistentVolumeClaim (PVC) diretamente ou por um modelo de um StatefulSet, você poderá executar hooks antes e depois de fazer backup dos volumes. Hooks são comandos que são executados em contêineres de aplicativos. Esses hooks são frequentemente usados para operações de limpeza, desativação ou reativação e fornecem um backup consistente do aplicativo.

Antes de começar

Para usar recursos ProtectedApplication, você precisa ter o seguinte:

  • É necessário definir o recurso ProtectedApplication antes de criar um plano de backup. Para mais informações, consulte Planejar um conjunto de backups.
  • O papel de identidade e acesso necessário:

    • Para usuários administradores da plataforma (PA, na sigla em inglês):
      • Administrador de backup de cluster de usuário: gerencia recursos de backup, como planos de backup e restauração em clusters de usuário. Peça ao administrador do IAM da organização para conceder a você o papel de Administrador de backup de cluster de usuário (user-cluster-backup-admin).
    • Para usuários do operador de aplicativos (AO, na sigla em inglês):
      • Backup Creator: cria backups e restaurações manuais. Peça ao administrador do IAM do projeto para conceder a você o papel de Criador de backup (backup-creator).
    • Para mais informações, consulte Definições de papéis.

Implantar recursos de aplicativos protegidos

Confira um exemplo de especificação Deployment com um recurso ProtectedApplication que faz backup de todos os recursos associados ao aplicativo durante o backup e restaura todos os recursos durante a restauração:

apiVersion: v1
kind: Namespace
metadata:
  name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: protected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unprotected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: unprotected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: PROTECTED_APP_NAME
  namespace: USER_CLUSTER_NS
spec:
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Substitua:

  • USER_CLUSTER_NS: o namespace no cluster de usuário em que o aplicativo protegido está localizado.
  • PROTECTED_APP_NAME: o nome do seu ProtectedApplication.

Este exemplo inclui os seguintes valores para ProtectedApplication:

Valor Descrição
resourceSelection Define como identificar recursos que pertencem ao aplicativo protegido:
  • type: Especifique uma destas opções:
    • ApplicationName: faz backup de um aplicativo sig-apps no mesmo namespace.
    • Selector: faz backup de recursos que correspondem a um seletor específico no mesmo namespace.
  • applicationName: se type for ApplicationName, especifica o nome do aplicativo sig-apps no mesmo namespace. É o aplicativo a que a especificação de proteção de dados se aplica.
  • selector: se type for Selector, especifica o seletor de rótulos para selecionar recursos no mesmo namespace.
components A lista de componentes do aplicativo protegido, como implantações ou conjuntos com estado:
  • name: o nome exclusivo do componente.
  • resourceKind: escolha entre Deployment ou StatefulSet.
  • resourceNames: a lista de nomes que identificam o resourceKind no namespace.

Especifique o ProtectedApplication na lista de selectedApplications no backupScope. Exemplo:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: BACKUP_PLAN
  namespace: USER_CLUSTER_NS
spec:
  clusterName: USER_CLUSTER
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: PROTECTED_APP_NAME
          namespace: USER_CLUSTER_NS
    backupRepository: BACKUP_REPOSITORY
    retentionPolicy:
      backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
      backupRetainDays: BACKUP_RETAIN_DAYS

Substitua:

  • BACKUP_PLAN: o nome do seu plano de backup.
  • USER_CLUSTER: o nome do cluster de usuário.
  • CRON_SCHEDULE: uma programação crontab indicando quando agendar backups, como "*/30 * * * *". O intervalo mínimo entre backups programados é de 10 minutos.
  • BACKUP_SCHEDULE_STATUS: se true, os backups periódicos não serão programados.
  • PROTECTED_APP_NAME: o nome que você deu ao recurso ProtectedApplication.
  • BACKUP_REPOSITORY: o nome do repositório de backup que você está usando para armazenar backups.
  • BACKUP_DELETE_LOCK_DAYS: impede a exclusão do backup pelo número de dias especificado após a criação dele, por exemplo, 10 days.
  • BACKUP_RETAIN_DAYS: define o número total de dias para manter o backup. Após esse período, o backup é excluído automaticamente. Definir um valor muito alto pode levar ao esgotamento do armazenamento, enquanto um valor muito baixo pode aumentar o risco de perda de dados. Se não for especificado, o valor padrão será 35. As políticas de retenção não substituem as políticas de retenção do local de armazenamento nem podem exceder 90 dias.

A seguir