GitLab Linux集群搭建指南
GitLab Linux集群搭建可分为基础集群部署(实现负载均衡与高可用)和Kubernetes(K8s)集群部署(容器化高可用)两类,以下是详细步骤:
sudo yum install -y curl policycoreutils openssh-server postfix
sudo systemctl enable --now sshd postfix
sudo firewall-cmd --permanent --zone=public --add-service={http,https,ssh}
sudo firewall-cmd --reload
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install -y gitlab-ce
/etc/gitlab/gitlab.rb,设置访问域名或IP:external_url 'http://gitlab.example.com'
unicorn['listen_address'] = "0.0.0.0:8080" # 不同实例用8081、8082...
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # SSH端口同步调整
sudo gitlab-ctl reconfigure # 重新生成配置
sudo gitlab-ctl restart # 重启服务
sudo yum install -y nginx
sudo systemctl enable --now nginx
/etc/nginx/nginx.conf,添加上游服务器组:upstream gitlab {
server gitlab1.example.com:8080;
server gitlab2.example.com:8080;
server gitlab3.example.com:8080;
}
server {
listen 80;
server_name gitlab.example.com;
location / {
proxy_pass http://gitlab;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo systemctl restart nginx
postgresql.conf:wal_level = replica
max_wal_senders = 10
wal_keep_size = 64
从库通过pg_basebackup同步数据。# 主库redis.conf
replicaof no one
# 从库redis.conf
replicaof redis-master-ip 6379
编辑/etc/gitlab/gitlab.rb,指定数据库和缓存地址:
gitlab_rails['db_adapter'] = "postgresql"
gitlab_rails['db_host'] = "pg-cluster.example.com" # 数据库集群地址
gitlab_rails['db_port'] = 5432
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "your_password"
redis['host'] = "redis-cluster.example.com" # 缓存集群地址
redis['port'] = 6379
应用配置:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
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://docs.projectcalico.org/manifests/calico.yaml
kubeadm join命令(主节点输出的命令)。helm repo add gitlab https://charts.gitlab.io
helm repo update
kubectl create namespace gitlab
helm install gitlab gitlab/gitlab \
--namespace gitlab \
--set global.hosts.domain=example.com \
--set gitlab.webservice.replicaCount=3 # Web服务副本数
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gitlab-storage
provisioner: nfs-client
reclaimPolicy: Retain
kubectl create secret generic gitlab-backup-secret \
--namespace gitlab \
--from-literal=GITLAB_BACKUP_SCHEDULE="daily" \
--from-literal=GITLAB_BACKUP_EXPIRY="604800"
# values.yaml
gitlab:
redis:
host: redis-cluster.gitlab.svc.cluster.local
port: 6379
kubectl get pods -n gitlab
/etc/gitlab/initial_root_password)。以上步骤覆盖了GitLab Linux集群的基础搭建与高可用配置,生产环境建议参考GitLab官方文档进行详细优化。