Mở đầu
Gitlab là một chương trình hỗ trợ mạnh mẽ trong quá trình xây dựng CI/CD dành cho các DevOps, một trong những từ khóa đang rất nổi và được nhiều người nhắc đến hiện nay. Vậy CI/CD là gì và làm thế nào chúng ta có thể xây dựng và áp được nó cho môi trường Doanh nghiệp hiện nay. Trong chuỗi bài viết này, tôi sẽ chia sẻ cách để bạn có thể xây dựng được CI (Continuous Integration) và CD (Continuous Delivery) với gitlab-ci.Chúng ta sẽ lần lượt học cách cài đặt gitlab, gitlab-ci, gitlab-runner, cách để có thể viết được file gitlab-ci.yml dùng để áp dụng cho vòng lặp CI như Build code, unit test, integration test, scan vurnerability code. Bên cạnh đó, ta cũng sẽ học cách tiếp cận những kiến thức liên quan tới CD như docker, k8s, helm, cách triển khai helm như thế nào, cách để quản lý version trên GIT như thế nào để có thể áp dụng cho Production.
Phần 1: Cài đặt gitlab
1. Yêu cầu:
+ Server: Ubuntu > 16.04+ CPU: Tối thiểu 4 CPU
+ Ram: Tối thiểu 8G
+ Disk: Tối thiểu 50G
Trong phần cài đặt này, chúng ta sẽ tiếp cận 2 cách. Một là cài đặt bằng Docker, hai là cài đặt trực tiếp lên server. Tùy vào trường hợp mà bạn sẽ lựa chọn cách nào cho môi trường của mình.
2/ Cài đặt Gitlab bằng Docker
2.1/ Cài đặt docker-compose
Đầu tiên, ta sẽ tiến hành setup docker-compose dùng quản lý cấu hình và cài đặt nhanh docker:Truy cập website : https://github.com/docker/compose/releases/ để lấy phiên bản mới nhất của docker-compose. Sau khi tìm được phiên bản muốn cài đặt, chạy câu lệnh sau:
Ví dụ:
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose \
&& docker-compose --version
2.2/ Tạo thư mới
Chạy câu lệnh sau để tạo ra các thư mục dùng để lưu trữ dữ liệu cho Gitlab:mkdir -p /app/gitlab/config /app/gitlab/logs /app/gitlab/data
2.3/ Tạo file cấu hình docker-compose.yml
Copy nội dung sau vào file docker-compose.ymlversion: "3.6"
services:
web:
container_name: gitlab
image: 'gitlab/gitlab-ee:latest'
restart: always
hostname: 'gitlab.local.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.local.com'
ports:
- '80:80'
volumes:
- '/app/gitlab/config:/etc/gitlab'
- '/app/gitlab/logs:/var/log/gitlab'
- '/app/gitlab/data:/var/opt/gitlab'
Trong đó, bạn có thể đổi lại hostname cho phù hợp với môi trường.
2.4/ Khởi tạo môi trường gitlab
Sau khi đã tạo xong file docker-compose.yml, chạy câu lệnh sau để cài đặt gitlab:docker-compose up -d
Đợi 1 khoảng thời gian cho gitlab bắt đầu quá trình khởi tạo
2.5/ Lấy password root
Sau khi quá trình khởi tạo hoàn tất, dùng câu lệnh sau để lấy password root:sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
2.6/ Truy cập gitlab
Bước tiếp theo, trước khi có thể truy cập được vào gitlab. Bạn cần add DNS hoặc add host cho domain gitlab.Ví dụ:
vim /etc/hosts
192.168.0.100 gitlab.local.com
Như vậy là hoàn tất cài đặt với Docker, tiếp theo chúng ta sẽ tìm hiểu với cách 2, cài đặt trực tiếp trên server.
3/ Cài đặt Gitlab trực tiếp trên server
Với cách thứ hai này, server phải cần có kết nối internets.3.1/ Cập nhật và cài các thư viện cần thiết
apt-get updateapt-get install ca-certificates curl openssh-server -y
3.2/ Cài đặt Gitlab
Chạy các câu lệnh sau để tiến hành cài đặt Gitlab trên server thông qua Internetescd /tmp && \
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh && \
bash /tmp/script.deb.sh && \
apt-get install gitlab-ce -y
gitlab-rake gitlab:env:info
3.3/ Cấu hình domain
Chờ quá trình cài đặt gitlab hoàn tất, ta sẽ cấu hình lại domain:vim /etc/gitlab/gitlab.rb
# configure external url
external_url 'http://gitlab.local.com'
3.4/ Reconfig gitlab
Để gitlab nhận được cấu hình mới, tiến hành câu các câu lệnh sau:gitlab-ctl reconfigure
gitlab-ctl tail
3.5/ Cấu hình DNS và truy cập website
Thực hiện tương tự như ở phần 1, chúng ta có thể add DNS hoặc add local host