GitLab Ubuntu集群配置指南
GitLab集群配置分为基础集群部署(多节点协同工作)和高可用集群部署(故障自动转移)两类,以下是基于Ubuntu系统的详细步骤:
sudo apt update && sudo apt upgrade -y);sudo apt install -y curl openssh-server ca-certificates postfix tzdata
sudo systemctl enable --now sshd postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
EXTERNAL_URL为集群入口IP或域名(如http://gitlab-cluster.example.com):sudo EXTERNAL_URL="http://gitlab-cluster.example.com" apt install -y gitlab-ce
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo apt install -y nginx
/etc/nginx/conf.d/gitlab.conf,添加以下内容(将gitlab1、gitlab2替换为节点域名/IP):upstream gitlab_cluster {
server gitlab1.example.com:80;
server gitlab2.example.com:80;
}
server {
listen 80;
server_name gitlab-cluster.example.com;
location / {
proxy_pass http://gitlab_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo systemctl restart nginx
http://gitlab-cluster.example.com,使用初始管理员账号(root)及/etc/gitlab/initial_root_password中的密码登录;git clone http://gitlab-cluster.example.com/username/project.git),确认多节点协同工作。高可用集群需解决数据库高可用、Redis高可用、GitLab实例高可用、共享存储四大核心问题,推荐使用Kubernetes(K8S)部署。
node1为节点名称):sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubeadm token create --print-join-command),在Worker节点执行该命令。helm repo add gitlab https://charts.gitlab.io
helm repo update
kubectl create namespace gitlab
<YOUR-DOMAIN>为集群域名,<REDIS-PASSWORD>、<POSTGRES-PASSWORD>为自定义密码):helm install gitlab gitlab/gitlab \
--namespace gitlab \
--set externalUrl=http://<YOUR-DOMAIN> \
--set gitlabShell.sshPort=2222 \
--set redis.password=<REDIS-PASSWORD> \
--set postgresql.password=<POSTGRES-PASSWORD> \
--set ingress.enabled=true \
--set ingress.hostName=<YOUR-DOMAIN>
/mnt/gitlab_data):# NFS服务器(Node1)配置
sudo apt install -y nfs-kernel-server
echo "/mnt/gitlab_data *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
sudo systemctl restart nfs-kernel-server
# GitLab节点(所有节点)挂载
sudo apt install -y nfs-common
sudo mount -t nfs node1.example.com:/mnt/gitlab_data /var/opt/gitlab/git-data/repositories
gitlab-runner register)。kubectl delete pod -n gitlab <gitlab-pod-name>),观察Pod是否自动重启(由ReplicaSet控制);http://<YOUR-DOMAIN>仍能正常使用GitLab。gitlab-backup create),存储到异地或云存储;ufw allow 80,443,22)。