Untuk saat ini backup Gitlab 13.2.3-ce ke AWS S3 (DigitalOcean Space,Linode Object Storage, B2 Backblaze) belum bisa ke subfolder/folder didalam BUCKET S3. Walaupun Gitlab membackup/mencadangkan semua data, masih ada dua file yang harus dibackup manual yaitu

/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json

kedua file ini akan dibutuhkan sewaktu melakukan restore ataupun migrasi. File tersebut perlu dibackup tiap kali ada perubahan didalamnya

Agar bisa membackup Gitlab ke S3 anda harus memiliki akses root/admin di server, karena kita akan melakukan perubahan di gitlab.

Membuat Bucket S3

Buka console AWS S3. Klik Create bucket

1. Name and Region

Bucket name : backup-gitlab-jaranguda
Region : Asia pacific (Singapore)
create s3 bucket

2. Configure Options

langsung Next saja.

3. Set permissions

Centang Block all public access, agar bucket ini tidak bisa diakses sembarangan orang. Untuk mengakses bucket ini kita akan membuat user baru nantinya

4. Review

Klik Create bucket
review s3 policy

Buat Policy Write Only

Agar data yang dibackup aman, kita akan membuat aturan baru dengan akses write only (hanya upload).
Buka console IAM AWS, pastikan anda memilih regional yang sama dengan regional waktu membuat S3, disini saya menggunakan Singapore.
klik menu Policies, klik Create policy
create policy aws iam
di Create policy diatas klik JSON, paste code dibawah ini

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::backup-gitlab-jaranguda/*"
            ]
        }
    ]
}

ganti backup-gitlab-jaranguda dengan nama bucket anda. klik Review Policy

Review Policy

Berikan nama WRITE-ONLY-S3-BACKUP-GITLAB
akhiri dengan klik Create policy

Membuat User Baru

Setelah policy/aturan dibuat, sekarang kita buat user yang bisa melakukan aksi dari policy diatas. Sebisa mungkin tiap service yang dibackup menggunakan user tersendiri. Agar meminimalisir kebocoran data.

Buka console IAM AWS, pastikan anda memilih regional yang sama dengan regional waktu membuat S3, disini saya menggunakan Singapore.

klik menu Users dibawah Dashboard, pilih Add user

1. Add User

User name : jaranguda-write-only
Access type : Programmatic access
iam aws s3 write only

2. Set Permissions

Klik Attach existing policies directly, di Filter policies ketik WRITE-ONLY-S3-BACKUP-GITLAB, checklist pada list yang muncul
create iam write only policy
klik Next: Tags

3. Add tags

klik Next: Review

4. Review

Klik Create user

5. Credential User

use iam write only success created
Disini ditampilkan credential yang akan digunakan di Gitlab.

Konfigurasi Backup Gitlab

Buka konfigurasi Gitlab di /etc/gitlab/gitlab.rb, cari dan sesuaikan bagian

gitlab_rails['backup_keep_time'] = 604800
 
gitlab_rails['backup_upload_connection'] = {
  'provider' => 'AWS',
  'region' => 'ap-southeast-1',
  'aws_access_key_id' => 'ACCESS_ID',
  'aws_secret_access_key' => 'SECRET_KEY'
}
gitlab_rails['backup_upload_remote_directory'] = 'NAMA-BUCKET'
gitlab_rails['backup_multipart_chunk_size'] = 104857600

setelah melakukan perubahan tersebut update perubahan konfigurasi tersebut

gitlab-ctl reconfigure

lalu jalankan backup

gitlab-rake gitlab:backup:create
# log perintah diatas
...
...
Creating backup archive: 1596951196_2020_08_09_13.2.3_gitlab_backup.tar ... done
Uploading backup archive to remote storage backup-gitlab-jaranguda ... done
Deleting tmp directories ... done
done
done
done
done
done
done
done
done
Deleting old backups ... done. (0 removed)
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.

cek di Bucket AWS S3, backup sudah muncul
backup gitlab ke aws s3

Leave a comment

Your email address will not be published. Required fields are marked *