Migrate Gitlab from GCP to AWS
ขั้นตอนการย้าย Gitlab จาก GCP ไปยัง AWS
ปกติแล้ว Gitlab ที่ใช้นั้น run อยู่บน GCP แต่เนื่องจากได้ Credit ฟรีจากทาง AWS มาจึงไม่รอช้าที่จะย้าย Gitlab มาไว้ที่ AWS :)
ขั้นตอนหลักๆ นั้นง่ายๆ ไม่ซับซ้อนตามนี้เลย
- ไปสร้าง Gitlab และ Gitlab Runner ไว้ที่ AWS
- ทำการ backup database ไฟล์ config ของ Gitlab และ Runner จาก GCP ไว้
- Restore database และ ไฟล์ config ต่างๆของ Gitlab และ Runner บน AWS
จบแล้วครับ 😅
.
.
.
จบเร็วไป ขออธิบายแต่ละขั้นตอนเพิ่มแล้วกันนะครับ :)
สร้าง Gitlab และ Runner บน AWS
- เริ่มจากสร้าง Gitlab ไปที่ EC2 เลือก Launch Instance จากนั้นให้ search Gitlab แล้วเลือก version ตามตัวเก่าบน GCP
ย้ำ เลือก version เพราะบาง version นั้นไม่สามารถ restore backup files ของ version อื่นได้ ลองเช็คให้ดีก่อน พอสร้างเสร็จก็พร้อมใช้งานแล้ว แค่ config เพิ่มนิดหน่อย
- ต่อไปก็ลง Runner สำหรับ run CI/CD อันนี้เลือกลงตามต้องการได้เลย https://docs.gitlab.com/runner/install/linux-manually.html ตามนี้เลยครับ
Backup ข้อมูล Gitlab จาก GCP
- ง่ายมากๆ เข้าไปที่ Instance Gitlab จากนั้น ก็ตามนี้
sudo gitlab-backup create# example backup name
1493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar
และที่ขาดไม่ได้เลยคือ ไฟล์ config
/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb
- Instance Runner ก็มีไฟล์ config ที่ต้องเก็บเหมือนกัน
/etc/gitlab-runner/config.toml
Backup เสร็จเรียบร้อย มาต่อกันเลย
Restore ค่า Database และ config ต่างๆบน AWS
- เริ่มจาก Instance Gitlab ทำการ Copy ไฟล์ไปไว้ใน path backups ของ Gitlab ก่อน
sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/ sudo chown git.git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar
หลังจาก Copy ไฟล์ backup มาแล้ว ทำการ Stop process
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq # Verify
sudo gitlab-ctl status
Restore Database โดยใช้คำสั่ง
# This command will overwrite the contents of your GitLab database! sudo gitlab-backup restore BACKUP=1493107454_2018_04_25_10.6.4-ce
*ชื่อ backup ให้ตรงกับ ไฟล์ที่ Copy มาใส่ใน path backups
Copy ไฟล์ config ต่างๆมาใส่ แล้วทำการ reconfig โดย
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
- ส่วน Instance Runner ให้ทำการ Register เข้ากับ Gitlab แล้วตั้งค่า config ตามตัวเก่าที่ Backup มา เท่านี้ก็เสร็จเรียบร้อย
บทความนี้อาจจะไม่ค่อยละเอียดเท่าไร ถ้าอยากเข้าใจแต่ละขั้นตอน ให้เข้าไปดูที่ Doc ของ Gitlab ได้เลยครับ บทความนี้ผมทำเพื่อกันลืม เผื่ออนาคตได้ย้ายอีก
ขอบคุณที่ติดตามครับ [ I ❤ Bug ]