มาลองติดตั้ง GitLab Server ไว้ใช้เองด้วย GitLab Self-Managed กันเถอะ
บทความนี้ผมจะมาสาธิตการติดตั้ง GitLab Self-Managed บน AWS เบื้องต้นโดยใช้ AMI จาก Marketplace เหมาะสำหรับเพื่อนๆที่ต้องการศึกษาและลองเล่น Gitlab Self-Managed เบื้องต้น ซึ่งต้องบอกเลยว่าการติดตั้งด้วยวิธีดังกล่าวเป็นวิธีที่ไม่ยากและผมเชื่อว่าง่ายกว่าที่เพื่อน ๆ คาดคิดเอาไว้อย่างแน่นอน ใครที่เป็นมือใหม่ AWS ก็สามารถทำตามได้เช่นกัน
ทำความเข้าใจกันก่อน
GitLab คืออะไร
GitLab คือ Software ที่ช่วยจัดการ Git Repository หรือการจัดเก็บ Source Code ของเรา และช่วยจัดการ CI/CD (Continuous Integration and Continuous Delivery)
GitLab Self-Managed เหมาะกับใคร
จริงๆต้องบอกว่าเหมาะหรือไม่เหมาะขึ้นอยู่กับการนำไปใช้งานของเรา ว่านำไปใช้แล้วเกิดประโยชน์และความคุ้มค่าเพียงใด ส่วนตัวผมนั้นที่เลือกใช้ด้วยเหตุผลที่ว่า
- นำไปใช้งานในระดับองค์กร หรือ ทีมพัฒนาของตัวเองที่ต้องการเก็บ Source Code ไว้ที่ Host ตัวเอง
- ต้องการคุณสมบัติเพิ่มเติมเกี่ยวกับการพัฒนา เช่น Analytics DevOps Report, Usage Trends และ Monitoring ภาพรวมการใช้งานที่เกิดขึ้นของระบบ
- ต้องการความยืดหยุ่นในการปรับแต่งและใช้งานให้เหมาะสมกับโครงสร้างพื้นฐานองค์กรหรือทีมพัฒนาของตัวเอง เช่น เปลี่ยนรูปแบบการ login ด้วยการ SSO (Single Sign-On) ผ่านเว็บไซด์ขององค์กร, จำกัดการใช้งานของคนในระบบว่าใครสามารถทำอะไรได้บ้างและมีสิทธิ์เข้าถึงโปรเจกต์ใดได้บ้าง เพื่อความง่ายต่อการควบคุมผู้ใช้งานในระบบ
ซึ่งนี้ก็เป็นเหตุผลเพียงเล็กน้อยของผมที่ได้เลือกใช้งาน GitLab Self-Managed ซึ่งแต่ละคนก็จะมีเหตุผลในการใช้งานที่แตกต่างกันออกไป และยังมีอีกหลายๆปัจจัยให้พิจารณาตามความต้องการของผู้ใช้
GitLab Self-Managed มี 2 Model
- GitLab CE (Community Edition) ซึ่งเป็น Open-source สามารถใช้งานได้ฟรี
- GitLab EE (Enterprise Edition) จะมี Feature และคุณสมบัติเพิ่มเติมจาก GitLab CE ซึ่งก็มีค่าใช้จ่ายเพิ่มเติม
โดยในบทความนี้ผมจะสาธิตการติดตั้ง Modle Gitlab CE ทั้งนี้เพื่อน ๆ สามารถเข้าไปดูเปรียบเทียบคุณสมบัติต่างๆได้ที่ ลิงค์นี้
ความต้องการของระบบ
ผมจะอ้างอิงจาก Requirement ขึ้นต่ำที่ GitLab ต้องการ ซึ่งสามารถรองรับผู้ใช้งานได้โดยประมาณ 500 คน
Ubuntu Server
- Version 16.04/18.04/20.04 (สามารถใช้ OS อื่นได้)
- Ram 4 GB
- CPU 4 Cores (เทียบเท่า EC2 instance model c5.xlarge)
Storage 5–10 GB โดยประมาณ
Domain name ที่ชี้ไปที่ Public IP เครื่อง Server ของเรา
ซึ่งจริงๆแล้วจาก Requirement ข้างต้นระบุว่า สามารถรองรับผู้ใช้งานได้มากถึง 500 คน แต่ถ้าหากผู้ใช้งานในระบบของเรามีไม่มากเราก็สามารถลด Resource ของระบบลงได้ตามความเหมาะสมและเพื่อเป็นการประหยัดค่าใช้จ่ายไปในตัว ทั้งนี้เพื่อน ๆ สามารถเข้าไปอ่านดูเพิ่มเติมได้ที่ ลิงค์นี้
เริ่มสร้าง GitLab Server บน AWS กันเล้ยยย
ก่อนอื่นผมต้องบอกเพื่อน ๆ ก่อนว่าในการสาธิตครั้งนี้ผมจะสร้างโดยเลือกใช้ AMI จาก AWS Marketplace ที่ได้กล่าวไปเบื้องต้นและในส่วนของการตั้งค่า Instance นั้นผมจะใช้ Default ค่าเริ่มต้น ของ AWS เป็นส่วนใหญ่ เพื่อความง่ายต่อความเข้าใจและทำตาม ซึ่งหากเพื่อน ๆ คนใดที่ต้องการนำไปใช้งานจริงผมขอแนะนำว่าให้ศึกษาและตั้งค่าความปลอดภัยพื้นฐานด้วยนะครับ
ปล.หากเพื่อนๆต้องการแยก Component ส่วนการทำงานเช่น ต้องการใช้งานร่วมกับ RDS หรือ S3 ก็สามารถดูการตั้งค่าเพิ่มเติมได้ที่ ลิงค์นี้
Step 1 : Choose an Amazon Machine Image (AMI)
เริ่มจากการสร้าง EC2 instance เลือก AMI จาก AWS Marketplace โดยการค้นหาคำว่า “GitLab Community Edition” และกดเลือก
Step 2: Choose an Instance Type
ผมเลือกใช้ Instance Type t2.medium เพราะอย่างที่กล่าวไปข้างต้นว่าถ้าผู้ใช้งานในระบบของเรามีไม่มาก เราสามารถลด Resource ของระบบลงได้ ซึ่งอย่างกรณีของผมผู้ใช้งานก็คือเพื่อนร่วมทีมซึ่งมีไม่มากและที่สำคัญประหยัดงบตัวเองฮ่าๆ
Step 3: Configure Instance Details
สำหรับในส่วนนี้ผมก็ไม่ได้ทำการเปลี่ยนแปลงอะไรมากนักจะมีเปลี่ยนแปลงหลักๆก็ 2 ส่วนเท่านั้นคือ
- Network ผมเลือกเป็น VPC Network ของตัวเอง
- Subnet ผมเลือกใช้เป็น Subnet ที่เป็น Public subnet ของตัวเอง
Step 4: Add Storage
เลือกใช้ขนาดมาตรฐานที่ 8 GiB (เทียบเท่า 8.58 GB)
Step 5: Add Tags
ใน Step นี้สำหรับใช้ตั้งชื่อ Instance ของเรา
Step 6: Configure Security Group
ผมจะขอใช้ตามที่ AWS Default ค่ามาให้ ซึ่งเราก็สามารถเปลี่ยนการตั้งค่าเป็นที่ตัวเองต้องการได้
Step 7: Review Instance Launch
ใน Step สุดท้ายนี้สำหรับ Review ว่า Instance ของเรามีภาพรวมอย่างไร ถ้าไม่มีอะไรผิดพลาดก็กดยืนยันแล้วเลือก Key pair สำหรับไว้ใช้อ้างสิทธิ์ในการเชื่อมต่อ Instance ของเพื่อนๆผ่าน Command line ซึ่งเมื่อเสร็จแล้วเราก็จะพบกัน Instance ที่เราพึ่งสร้างไป
Create Public IP address
หลักจากเราสร้าง Instance แล้วเราจะมาสร้าง Public IP address กันต่อเพื่อให้เราสามารถเชื่อมต่อกับ Instance ของเราได้ โดยจากทางซ้ายมือของหน้าจอเพื่อน ๆ จากนั้นให้ไปที่ Network & Security => Elastic IP และทำการสร้างใหม่ขึ้น หลังจากสร้างเสร็จเรียบร้อยก็ให้ตั้งค่า IP address โดยเลือกให้ชี้มาที่ Instance ที่เราได้สร้างไว้ก่อนหน้านี้ เพียงเท่านี้ก็เป็นอันเสร็จสิ้น
ซึ่งเมื่อเรากลับมาดูที่ Instance ของเราก็จะพบว่าในส่วน Public IPv4 address นั้นมีเลข IP address ปรากฎขึ้นมาแล้ว ต่อไปเราจะมา Update GitLab Configuration File เพื่อแก้ให้ external_url ชี้มาที่ Domain ของเรากัน
Set GitLab config
ให้เพื่อนๆเชื่อมต่อ Instance ที่ติดตั้ง Gitlab ผ่าน SSH หล้งจากนั้นให้เพื่อนๆเปิดไฟล์ /etc/gitlab/gitlab.rb และมองหา external_url เพื่อเปลี่ยนให้ GitLab ชึ้มาที่ Domain ของเรา ซึ่งจากตัวอย่างผมจะขอใช้ Public DNS (ดูได้จาก Elastic IP addresses ที่เราสร้าง)
หลักจากแก้ไขเรียบร้อยแล้วให้ทำการ Reconfig 1 ครั้ง (ทำทุกครั้งที่มีการแก้ไข) โดยใช้คำสั่ง
$ sudo gitlab-ctl reconfigure
ซึ่งเมื่อเสร็จแล้วเราจะพบว่าที่ /etc/gitlab นั้นมีไฟล์ที่ชื่อว่า initial_root_password ซึ่งในไฟล์จะมี password สำหรับ admin หลังจากนั้นให้เราเปิด Public IPv4 address ผ่าน browser เราก็จะพบกับหน้าเว็บ GitLab ของเรานั้นเอง สำหรับการ Login ด้วย admin นั้นเราจะใช้
username : root และ password : อยู่ในไฟล์ File initial_root_password
ก็เป็นอันเสร็จเรียบร้อยแล้วสำหรับการติดตั้ง GitLab Server ซึ่งเป็นอย่างที่ผมได้บอกไปว่าการติดตั้งนั้นทำได้ไม่ยากและทำตามเพียงไม่กี่ขั้นตอนก็สามารถเริ่มใช้งานได้ทันที และในบทความต่อไปผมจะพาเพื่อน ๆ ไปแนะนำและรู้จักการใช้งานเบื้องต้นหลังจากที่เราติดตั้งเสร็จ แล้วไปเจอกันต่อในบทความต่อไปนะครับ