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)
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
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
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
2. Set Permissions
Klik Attach existing policies directly, di Filter policies ketik WRITE-ONLY-S3-BACKUP-GITLAB
, checklist pada list yang muncul
klik Next: Tags
3. Add tags
klik Next: Review
4. Review
Klik Create user
5. Credential User
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