在Debian上搭建GitLab集群是一个复杂的过程,需要仔细规划和执行。以下是一个基本的指南,帮助你在Debian系统上部署GitLab集群。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install curl openssh-server ca-certificates postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL "http://your-domain-name" apt-get install gitlab-ce
将 http://your-domain-name
替换为你希望使用的域名或服务器IP地址。
sudo gitlab-ctl reconfigure
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
创建 redis.yaml
文件:
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: devops
labels:
name: redis
spec:
type: ClusterIP
ports:
- name: redis
protocol: TCP
port: 6379
targetPort: 6379
selector:
name: redis
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data
namespace: devops
labels:
app: redis
spec:
storageClassName: nfs-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
namespace: devops
labels:
name: redis
spec:
replicas: 1
selector:
matchLabels:
name: redis
template:
metadata:
labels:
name: redis
spec:
containers:
- name: redis
image: 'redis:6.2'
ports:
- name: redis
containerPort: 6379
volumeMounts:
- name: redis-persistent-storage
mountPath: /var/lib/redis
livenessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumes:
- name: redis-persistent-storage
persistentVolumeClaim:
claimName: redis-data
创建 postgresql.yaml
文件:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresql-data
namespace: devops
labels:
app: postgresql
spec:
storageClassName: nfs-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:
name: postgresql
namespace: devops
labels:
name: postgresql
spec:
ports:
- name: postgres
protocol: TCP
port: 5432
targetPort: 5432
selector:
name: postgresql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgresql
namespace: devops
labels:
name: postgresql
spec:
replicas: 1
selector:
matchLabels:
name: postgresql
template:
metadata:
labels:
name: postgresql
spec:
containers:
- name: postgresql
image: postgres:14
ports:
- name: postgres
containerPort: 5432
volumeMounts:
- name: postgresql-persistent-storage
mountPath: /var/lib/postgresql
livenessProbe:
exec:
command:
- psql
-U
- postgres
-c
- 'SELECT 1'
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
exec:
command:
- psql
-U
- postgres
-c
- 'SELECT 1'
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
volumes:
- name: postgresql-persistent-storage
persistentVolumeClaim:
claimName: postgresql-data
sudo gitlab-runner install
sudo gitlab-runner register
使用Nginx或HAProxy等负载均衡器来分发GitLab实例的请求。以下是一个简单的Nginx配置示例:
upstream gitlab {
server gitlab1: 80;
server gitlab2: 80;
server gitlab3: 80;
}
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
编辑 /etc/gitlab/gitlab.rb
文件,添加以下内容:
external_url 'http://gitlab.example.com'
gitlab_rails['gitlab_url'] 'http://gitlab.example.com'
然后重新配置并重启GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
以上步骤提供了一个基本的GitLab集群部署框架,具体配置可能需要根据实际需求进行调整。