作者:尹正傑
版權宣告:原創作品,謝絕轉載!否則將追究法律責任。
目錄
- 一.gitlab概述
- 1.gitlab介紹
- 2.gitlab架構
- 3.gitlab推薦配置
- 二.部署gitlab前準備
- 1.ubuntu系統環境安裝前準備
- 1.1 配置Ubuntu主機名
- 1.2 配置Ubuntu遠端連結
- 1.3 配置ubuntu倉庫
- 1.4 修改終端顏色
- 1.5 重啟虛擬機器
- 2.RHEL系統環境安裝前準備
- 2.1 修改centos主機名
- 2.2 關閉centos防火牆並禁用selinux
- 2.3 配置epel源
- 2.4 修改終端顏色
- 2.5 重啟虛擬機器
- 1.ubuntu系統環境安裝前準備
- 三.部署gitlab
- 1.選擇gitlab的安裝方式
- 2. 下載gitlab軟體包
- 2.1 從gitlab官方下載軟體包
- 2.2 從國內映象倉庫下載軟體包
- 3 安裝gitlab軟體包
- 3.1 ubuntu安裝gitlab
- 3.2 centos安裝gitlab
- 4.初始化gitlab
- 4.1 gitlab相關目錄說明
- 4.2 測試郵箱是否正常
- 4.3 gitlab初始化配置
- 5.gitlab服務基礎管理
- 6.在K8S叢集部署gitlab
- 7.其他部署方式
一.gitlab概述
1.gitlab介紹
gitlab是一個基於Ruby on Rails構建用於倉庫管理系統的開源專案,使用git作為程式碼管理工具,提供了web介面進行訪問公開或者私有的專案。
gitlab優勢:
- 開源免費
- 開源作為git程式碼倉庫
- 提供了方便易用的web管理介面
- 支援離線提交
- 安全性高,開源對不同的使用者設定不同的許可權,並且支援不同使用者只能訪問特定的程式碼,實現程式碼部分可見
2.gitlab架構
如上圖所示,gitlab是一個複雜的系統,由很多應用組成。
如下圖所示,gitlab服務由多個元件構成:
- nginx:
提供靜態web伺服器。
- gitlab-shell:
用於處理git命令和修改authorized keys列表。
- gitlab-workhorse:
輕量級的反向代理伺服器,它旨在充當智慧反向代理,以幫助整個gitlab加速。
- postgresql:
資料庫。
- redis:
快取資料庫。
- sidekiq:
使用者在後臺執行佇列任務(非同步執行)
- unicorn:
gitlab rails應用託管在這個伺服器上面的。
參考連結:
https://panlw.github.io/15365441001781.html
https://docs.gitlab.com/ee/development/architecture.html
3.gitlab推薦配置
- gitlab硬體和軟體的環境要求:
https://docs.gitlab.com/ee/install/requirements.html
- gitlab服務的安裝文件
https://docs.gitlab.com/ee/install/install_methods.html
- 硬體配置要求:
CPU:
- CPU需求取決於使用者數量和預期工作負載,比如:
4核心支援500使用者
8核心支援1000使用者
- 如果有更多的使用者需求,可參考官網:
https://docs.gitlab.com/ee/administration/reference_architectures/index.html
memory:
- 根據您的需求配置相應記憶體即可,比如:
4GB記憶體支援500使用者
8GB記憶體支援1000使用者
- 如果有更多的使用者需求,可參考官網:
https://docs.gitlab.com/ee/administration/reference_architectures/index.html
- 建議設定至少2GB的交換記憶體,儘管您有足夠的實體記憶體空間:
如果可用記憶體發生變化,交換有助於減少發生錯誤的機會。並將"swappiness"的值設定為10以充分利用實體記憶體。
Disk:
根據您的gitlab儲存預期配置相應的儲存大小即可。支援nfs,lvm等技術棧。
DataBase:
如下圖所示,gitlab 12.1版本開始就移除了對MySQL資料庫的支援,PostGreSQL是目前唯一支援的資料庫喲。
其他更詳細文件可參考:
https://docs.gitlab.com/ee/install/requirements.html
溫馨提示:
學習環境中,建議搭大家使用2c4G基本上夠用了。
二.部署gitlab前準備
1.ubuntu系統環境安裝前準備
1.1 配置Ubuntu主機名
# hostnamectl set-hostname ubuntu11.yinzhengjie.com
1.2 配置Ubuntu遠端連結
# grep ^PermitRootLogin /etc/ssh/sshd_config
1.3 配置ubuntu倉庫
# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu focal main restricted
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu focal universe
deb http://mirrors.aliyun.com/ubuntu focal-updates universe
deb http://mirrors.aliyun.com/ubuntu focal multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu focal-security universe
deb http://mirrors.aliyun.com/ubuntu focal-security multiverse
參考連結:
https://developer.aliyun.com/mirror/ubuntu
1.4 修改終端顏色
cat <<EOF >> ~/.bashrc
PS1='[\[\e[30;1m\]\u@\[\e[0m\]\[\e[31;1m\]\H\[\e[0m\]\[\e[32;1m\] \W\[\e[0m\]]# '
EOF
source ~/.bashrc
1.5 重啟虛擬機器
# reboot
2.RHEL系統環境安裝前準備
2.1 修改centos主機名
# hostnamectl set-hostname centos10.yinzhengjie.com
2.2 關閉centos防火牆並禁用selinux
# systemctl disable firewalld
# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
2.3 配置epel源
# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.4 修改終端顏色
cat <<EOF >> ~/.bashrc
PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]# '
EOF
source ~/.bashrc
2.5 重啟虛擬機器
# reboot
三.部署gitlab
1.選擇gitlab的安裝方式
如上圖所示,gitlab有很多種安裝方式,咱們選擇包安裝方式。
如下圖所示,我們需要手動下載對應的軟體包。
參考連結:
https://docs.gitlab.com/ee/install/install_methods.html
https://docs.gitlab.com/omnibus/installation/
2. 下載gitlab軟體包
2.1 從gitlab官方下載軟體包
如上圖所示,我們要去訪問官方的倉庫。
如下圖所示,我們選擇docker-ce版本進行安裝即可。
參考連結:
https://packages.gitlab.com/gitlab/gitlab-ce
2.2 從國內映象倉庫下載軟體包
如上圖所示,我們也可以在國內網站進行下載喲。
如果從官網下載速度較慢的小夥伴們,可以使用給你的映象地址即可,也可以使用迅雷下載速度會更快喲!
參考連結:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
3 安裝gitlab軟體包
3.1 ubuntu安裝gitlab
# dpkg -i gitlab-ce_15.6.7-ce.0_amd64.deb
3.2 centos安裝gitlab
# yum -y localinstall gitlab-ce-15.6.7-ce.0.el7.x86_64.rpm
4.初始化gitlab
4.1 gitlab相關目錄說明
- /etc/gitlab/
配置檔案目錄。
- /run/gitlab
執行目錄,存放很多資料庫檔案。該目錄需要執行gitlab服務後會自動生成。
- /opt/gitlab/
gitlab安裝目錄。
- /var/opt/gitlab
數目目錄,原始碼存放在此目錄。初次執行gitlab服務會自動生成初始化資料喲。
- /var/log/gitlab/
日誌目錄。
4.2 測試郵箱是否正常
(1)安裝mail服務
# yum -y install mailx
(2)修改配置檔案
# vim /etc/mail.rc
...
set from=2771787258@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=2771787258@qq.com
set smtp-auth-password=crpdkjfvmoymdggd
(3)測試郵箱是否能夠正常傳送,測試結構如上圖所示。
# echo JasonYin2020 | mail -s hello y1053419035@qq.com
4.3 gitlab初始化配置
(1)修改配置檔案
# grep "^[a-Z]" /etc/gitlab/gitlab.rb
...
# 對外暴露服務的uri地址,注意配置hosts檔案解析喲~
external_url 'http://gitlab11.yinzhengjie.com'
# 可選郵箱通知配置~
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "2771787258@qq.com"
gitlab_rails['smtp_password'] = "crpdkjfvmoymdggd"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "2771787258@qq.com"
# 新增版本中,為gitlab的webUI設定root使用者初始登入密碼~
gitlab_rails['initial_root_password'] = "yinzhengjie"
(2)將配置檔案生效
# gitlab-ctl reconfigure
(3)新增hosts檔案解析
cat >> /etc/hosts <<EOF
10.0.0.11 gitlab11.yinzhengjie.com
EOF
(4)檢視gitlab的狀態,如上圖所示
# gitlab-ctl status
(5)訪問gitlab的WebUI
如下圖所示。
溫馨提示:
如果沒有在配置檔案中對密碼做初始化設定,可以從"/etc/gitlab/initial_root_password"檔案中找到初始密碼。
5.gitlab服務基礎管理
- gitlab-ctl status
檢視服務狀態。
- gitlab-ctl stop
停止gitlab服務。
- gitlab-ctl start
啟動服務。
- gitlab-ctl reconfigure
重新配置應用。
- gitlab-ctl -h
檢視幫助資訊。
6.在K8S叢集部署gitlab
1.匯入映象到harbor倉庫
[root@master231 ~]# wget http://192.168.13.253/Resources/Kubernetes/images/Project/DevOps/yinzhengjie-gitlab-ce-v17.5.2.tar.gz
[root@master231 ~]# docker load -i yinzhengjie-gitlab-ce-v17.5.2.tar.gz
2.編寫資源清單
[root@master231 case-demo]# cat 06-devops-gitlab.yaml
apiVersion: v1
kind: Namespace
metadata:
name: devops
---
apiVersion: v1
kind: ReplicationController
metadata:
name: yinzhengjie-gitlab
namespace: devops
spec:
replicas: 1
selector:
apps: gitlab
template:
spec:
nodeName: worker233
containers:
- name: c1
# image: gitlab/gitlab-ce:17.5.2-ce.0
image: harbor.yinzhengjie.com/yinzhengjie-devops/gitlab-ce:17.5.2-ce.0
# 配置宿主機的埠對映
ports:
# 定義容器的埠
- containerPort: 80
# 繫結到宿主機的埠
hostPort: 8080
metadata:
labels:
apps: gitlab
[root@master231 case-demo]#
3.建立資源
[root@master231 case-demo]# kubectl apply -f 06-devops-gitlab.yaml
namespace/devops created
replicationcontroller/yinzhengjie-gitlab created
[root@master231 case-demo]#
[root@master231 case-demo]#
[root@master231 case-demo]# kubectl get pods -o wide -n devops
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
yinzhengjie-gitlab-sw2n6 1/1 Running 0 6m1s 10.100.2.60 worker233 <none> <none>
[root@master231 case-demo]#
[root@master231 case-demo]# kubectl -n devops exec -it yinzhengjie-gitlab-sw2n6 -- bash
root@yinzhengjie-gitlab-sw2n6:/# netstat -untal | egrep ":80"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
..
root@yinzhengjie-gitlab-sw2n6:/#
4.檢視預設的root密碼
[root@master231 case-demo]# kubectl -n devops exec yinzhengjie-gitlab-sw2n6 -- cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: Pm9uyDtMdoR1FEw4rGcKsjl55VQQ3iOGxrNFuz/Dj9o=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
[root@master231 case-demo]#
5.windows修改root密碼
http://10.0.0.233:8080/
推薦閱讀:
https://docs.gitlab.com/ee/install/docker/installation.html#install-gitlab-by-using-docker-compose
預設的密碼存放路徑:
/etc/gitlab/initial_root_password
7.其他部署方式
如上圖所示,官方提供了多種安裝方式供咱們選擇。
推薦閱讀:
https://docs.gitlab.com/ee/install/install_methods.html