debian

GitLab在Debian上的集群搭建方案有哪些

小樊
41
2025-05-30 20:22:39
栏目: 智能运维

在Debian上搭建GitLab集群是一个复杂的过程,需要仔细规划和执行。以下是一个基本的指南,帮助你在Debian系统上部署GitLab集群。

准备工作

  1. 更新系统
sudo apt-get update
sudo apt-get upgrade
  1. 安装必要的依赖包
sudo apt-get install curl openssh-server ca-certificates postfix

安装GitLab

  1. 添加GitLab软件仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  1. 安装GitLab社区版
sudo EXTERNAL_URL "http://your-domain-name" apt-get install gitlab-ce

http://your-domain-name 替换为你希望使用的域名或服务器IP地址。

配置GitLab

  1. 重新配置GitLab
sudo gitlab-ctl reconfigure
  1. 设置防火墙规则
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

集群部署

  1. 部署Redis

创建 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
  1. 部署PostgreSQL

创建 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
  1. 高可用性和负载均衡配置
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集群部署框架,具体配置可能需要根据实际需求进行调整。

0
看了该问题的人还看了