add: instructions to mount a remote (s3) volume

This commit is contained in:
2024-10-22 16:18:23 -03:00
parent aaceb570af
commit 520b5392b0

View File

@@ -25,3 +25,55 @@ mysql://db_user:123456@mydatabase.com.br 0 0 1 * * *
- *schedule*: 0 0 1 * * * (in (GO implementation cron format)[https://godoc.org/github.com/robfig/cron])meaning on this case every night at 01h00)
mysql://db_user@mydatabase.com.br/* @daily
- *schedule*: @daily (onde a day starting 24h from starting)
### Remote volumes
A presistência dos dados backupeados depende obviamente da criação de um volume persistente no Docker. O ideal é que esse volume esteja fora do servidor. Um serviço compatível com s3 pode ser um bom local de armazenamento e para essa possibilidade incluimos scripts de configuração para os serviços s3 mais comuns (nesse caso, mas comuns pra nós).
Para que o volume esteja disponível em todos os nós do cluster nós precisamos fazer a configuração previamente em cada servidor, instalando no docker um plugin que vai armazenar as informações de acesso ao serviço s3. O exemplo abaixo ilustra a instalação do plugin para acesso a uma conta no Cloudflare R2.
```bash
setup-cloudflare-r2.sh --account-id="<ID da conta>"\
--key="<Chave de Acesso>"\
--secret="<Chave secreta>"\
--alias="backup-bucket";
```
A configuração de um bucket no Linode Objects também está coberta por um script próprio. No futuro esses scripts serão unificados num mesmo processo por isso evite fazer qualquer automatização confiando na existência deles. O conteúdo dos scritps é simples e pode ser facilmente adaptado para outros serviços.
A montagem do bucket é feita pela API "Service Update" do Docker, por meio da interface que o Caprover oferece. O JSON abaixo montará um bucket chamado "backup" criado no serviço s3 configurado pelo plugin com nome ou alias "backup-bucket" no caminho `/var/data/backup-databases`.
```JSON
{
"TaskTemplate": {
"ContainerSpec": {
"Mounts": [
{
"Type": "volume",
"Source": "backup",
"Target": "/var/data/backup-databases",
"VolumeOptions": {
"DriverConfig": {
"Name": "backup-bucket"
}
}
}
]
}
}
}
```
O formato YML também deveria ser válido mas nas versões atuais do Caprover a configuração abaixo foi ignorada
```YML
TaskTemplate:
ContainerSpec:
Mounts:
- Type: volume
Source: backup
Target: /var/data/backup-databases
VolumeOptions:
DriverConfig:
Name: backup-bucket
```