Recue e restaure os clusters de carga de trabalho utilizando o armazenamento Velero e Azure Blob

Este tópico descreve como fazer o back up e restaurar os clusters de carga de carga AZure Stack HCI usando Velero e Azure Blob como o armazenamento. Velero é uma ferramenta padrão comunitária de código aberto para apoiar e restaurar objetos de cluster Kubernetes e volumes persistentes, e suporta uma variedade de fornecedores de armazenamento para armazenar as suas cópias de segurança.

Se um cluster de carga de trabalho falhar e não recuperar, pode utilizar uma cópia de segurança Velero para restaurar o seu conteúdo e objetos internos da API para um novo cluster.

Implementar e configurar Velero

Utilize os seguintes passos para implantar e configurar o Velero:

  1. Instale o CLI Velero na sua estação de trabalho. Numa máquina Windows, pode utilizar a Chocolatey para instalar o cliente Velero:

    choco install velero
    
  2. Configurar a conta de armazenamento Azure e o recipiente blob.

    Precisa de uma subscrição ativa do Azure para criar uma conta de armazenamento Azure e o recipiente blob, uma vez que o Velero requer que ambos armazenem cópias de segurança. Se preferir utilizar uma subscrição Azure diferente da utilizada na criação das suas cópias de segurança, pode alterar a subscrição do Azure. Por padrão, a Velero armazena backups na mesma subscrição que os seus VMs e discos e não permite restaurar cópias de segurança a um grupo de recursos numa subscrição diferente. Para ativar cópias de segurança e restaurar as subscrições, tem de especificar o ID de subscrição que pretende utilizar.

    Para mudar para a subscrição Azure pretende criar as cópias de segurança ligadas, utilize o az account comando PowerShell.

    Primeiro, encontre o nome do ID de assinatura:

    AZURE_BACKUP_SUBSCRIPTION_NAME=<NAME_OF_TARGET_SUBSCRIPTION>
    AZURE_BACKUP_SUBSCRIPTION_ID=$(az account list --query="[?name=='$AZURE_BACKUP_SUBSCRIPTION_NAME'].id | [0]" -o tsv)
    

    Em segundo lugar, definir uma subscrição para ser a subscrição ativa atual:

    az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
    

    Em seguida, crie um grupo de recursos para a conta de armazenamento de backups, executar o comando abaixo (alterando a localização conforme necessário). O exemplo mostra a conta de armazenamento criada num Velero_Backups grupo de recursos separado.

    AZURE_BACKUP_RESOURCE_GROUP=Velero_Backups
    az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
    

    Você precisa criar a conta de armazenamento com um ID globalmente único, uma vez que este é usado para DNS. O script da amostra abaixo gera um nome aleatório usando uuidgen , mas pode escolher qualquer nome que queira desde que siga as uuidgen. A conta de armazenamento é criada com encriptação para dados em capacidades de repouso (teclas geridas pela Microsoft) e está configurada para permitir o acesso apenas através de HTTPS.

    Para criar a conta de armazenamento, executar o seguinte comando:

    AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
    az storage account create \
       --name $AZURE_STORAGE_ACCOUNT_ID \
       --resource-group $AZURE_BACKUP_RESOURCE_GROUP \
       --sku Standard_GRS \
       --encryption-services blob \
       --https-only true \
       --kind BlobStorage \
       --access-tier Hot
    

    Finalmente, crie o recipiente blob chamado velero . Você pode escolher um nome diferente, mas deve ser de preferência exclusivo de um único cluster Kubernetes.

    BLOB_CONTAINER=velero
    az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
    
  3. Desace as permissões para Velero e crie um principal de serviço.

    Em primeiro lugar, obtenha o seu ID de subscrição de conta Azure e iD do inquilino executando o seguinte comando:

    AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv`
    AZURE_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv`
    

    Do que criar um diretor de serviço com o Contributor papel. Esta função tem acesso a toda a subscrição, por isso deve proteger esta credencial. Ao criar o principal de serviço, deixe o CLI gerar uma palavra-passe para si e certifique-se de capturar a palavra-passe.

    Se utilizar o Velero para fazer o back up de múltiplos aglomerados com vários recipientes blob, recomenda-se que crie um nome de utilizador único por cluster em vez do nome predefinido velero .

    Nota

    Se estiver a utilizar uma subscrição diferente para backups e recursos de cluster, certifique-se de especificar ambas as subscrições no az comando utilizando --scopes .

    AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv \
    --scopes  /subscriptions/$AZURE_SUBSCRIPTION_ID[ /subscriptions/$AZURE_BACKUP_SUBSCRIPTION_ID]`
    

    Certifique-se de que o valor para --name não entra em conflito com outros diretores de serviço e registos de aplicações.

    Após a criação do principal serviço, obtenha a ID do cliente executando o seguinte comando:

    AZURE_CLIENT_ID=`az ad sp list --display-name "velero" --query '[0].appId' -o tsv`
    

    Finalmente, crie um ficheiro que contenha todas as variáveis ambientais relevantes. O comando parece ser o seguinte exemplo:

    cat << EOF  > ./credentials-velero
    AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
    AZURE_TENANT_ID=${AZURE_TENANT_ID}
    AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
    AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
    AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP}
    AZURE_CLOUD_NAME=AzurePublicCloud
    EOF
    
  4. Instale e inicie o Velero.

    Instale velero, incluindo todos os pré-requisitos, no cluster e, em seguida, inicie a implantação. A implementação cria um espaço de nome chamado velero e coloca uma implantação chamada velero nele.

    Para fazer o back up volumes de Kubernetes ao nível do sistema de ficheiros, utilize o Restic e certifique-se de adicionar . Atualmente, a AKS em Azure Stack HCI não suporta instantâneos de volume.

    velero install \
       --provider azure \
       --plugins velero/velero-plugin-for-microsoft-azure:v1.3.0 \
       --bucket $BLOB_CONTAINER \
       --secret-file ./credentials-velero \
       --backup-location-config resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID[,subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID] \
       --use-restic
    
  5. Verifique se o serviço Velero está a funcionar corretamente, executando o seguinte comando:

    kubectl -n velero get pods
    kubectl logs deployment/velero -n Velero
    

Use Velero para apoiar um cluster de carga de trabalho

Pode fazer uma cópia de back up ou restaurar todos os objetos do seu cluster, ou pode filtrar objetos por tipo, espaço de identificação ou etiqueta.

Para executar uma cópia de segurança básica a pedido do seu cluster:

velero backup create <BACKUP-NAME> --default-volumes-to-restic

Para verificar o progresso de uma cópia de segurança:

velero backup describe <BACKUP-NAME>

Depois de seguir as instruções acima, pode ver a sua cópia de segurança na sua conta de armazenamento Azure sob o recipiente de bolhas que criou.

Use Velero para restaurar um cluster de carga de trabalho

Primeiro, deve criar um novo cluster para restaurar, uma vez que não é possível restaurar um cluster de backup para um cluster existente. A operação de restauro permite-lhe restaurar todos os objetos e volumes persistentes a partir de uma cópia de segurança previamente criada. Também pode restaurar apenas um subconjunto filtrado de objetos e volumes persistentes.

No cluster de destino onde pretende restaurar a cópia de segurança, execute os seguintes passos:

  1. Implemente e configuure Velero usando as mesmas credenciais Azure como fez para o cluster de origem.

  2. Certifique-se de que o objeto Velero Backup é criado executando o seguinte comando. Os recursos Velero são sincronizados com os ficheiros de backup no armazenamento em nuvem.

    velero backup describe <BACKUP-NAME>
    
  3. Uma vez confirmado que a cópia de segurança certa está <BACKUP-NAME> disponível, pode restaurar tudo com o seguinte comando:

    velero restore create --from-backup <BACKUP-NAME>
    

Desinstalar Velero

Se pretender desinstalar completamente o Velero do seu cluster, os seguintes comandos removerão todos os recursos criados velero install por:

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

Notas adicionais

  • Velero na Windows: Velero não apoia oficialmente Windows. Em testes, a equipa Velero conseguiu apoiar apenas aplicações apátridas Windows. A integração restic e os backups de aplicações imponentes ou volumes persistentes não são suportados.

  • Ajuda velero CLI: Para ver todas as opções associadas a um comando específico, use a --help bandeira com o comando. Por exemplo, velero restore create --help mostra todas as opções associadas ao velero restore create comando. Ou, para listar todas as opções velero restore de, velero restore --help executar:

      velero restore [command]
      Available Commands:
      create      Create a restore
      delete      Delete restores
      describe    Describe restores
      get         Get restores
      logs        Get restore logs
    

Referências

Como Velero trabalha aintegração restic