https://github.com/catarinaacsilva/gitlab

GitLab Scaling and High Availability

https://github.com/catarinaacsilva/gitlab

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.8%) to scientific vocabulary

Keywords

docker-compose docker-swarm elk gitlab gitlab-ce
Last synced: 5 months ago · JSON representation

Repository

GitLab Scaling and High Availability

Basic Info
  • Host: GitHub
  • Owner: catarinaacsilva
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 67.4 KB
Statistics
  • Stars: 3
  • Watchers: 2
  • Forks: 3
  • Open Issues: 0
  • Releases: 0
Topics
docker-compose docker-swarm elk gitlab gitlab-ce
Created about 6 years ago · Last pushed over 5 years ago
Metadata Files
Readme License

README.md

GitLab Scaling High Availability

In this repository you can see a simple and initial deploy of GitLab on docker-compose. The main idea was to deploy on swarm cluster.

You can easily configure and deploy your Docker-based GitLab installation in a swarm cluster.

Requirements

Install GitLab using docker-compose

  1. Create a Docker-compose.yml : cd dockerCompose

  2. Run docker-compose up

Setup a Docker swarm

There are a few things that we will need before we can get to Gitlab:

  • A proxy to forward the requests to the correct services
  • Postgres and Redis
  • Prometheus to collect metrics from Gitlab and Grafana to visualize these metrics
  • An NFS4 share to store any persistent data we need

The Proxy

Setting up NFS

  1. First we need to install the NFS server: sudo apt install -y nfs-kernel-server
  2. For the NFS share the will need a directory structure like the following:

console . +-- /srv/gitlab-swarm/ | +-- gitlab +-- config +-- data +-- logs | +-- grafana | +-- postgres | +-- prometheus

We can create it using the following shell:

```bash

mkdir -p /srv/gitlab-swarm && \ mkdir -p /srv/gitlab-swarm/gitlab/{data,logs,config} && \ mkdir -p /srv/gitlab-swarm/postgres && \ mkdir -p /srv/gitlab-swarm/grafana && \ mkdir -p /srv/gitlab-swarm/prometheus && \ chmod -R 777 /srv/gitlab-swarm

```

  1. Then we need to create the directory /exports/gitlab-swarm and mount srv/gitlab-swarm onto it (this is required for NFS version 4):

``` bash

mkdir -p /exports/gitlab-swarm mount --bind /srv/gitlab-swarm /exports/gitlab-swarm

```

  1. Setup the NFS share by editing /etc/exports:

``` bash

/etc/exports

/exports/ *(rw,sync,fsid=0,crossmnt,nosubtreecheck) /exports/gitlab-swarm *(rw,sync,norootsquash,nosubtreecheck)

```

  1. Now we reload the NFS configuration: exportfs -ra

  2. we need to add the following line to /etc/fstab: /srv/gitlab-swarm/ /exports/gitlab-swarm/ none bind

  3. Remember that we need the NFS client installed on each node of the cluster: sudo apt install -y nfs-common

  4. To test if the NFS configuration is correct, we can try mounting the share:

``` bash mkdir /var/tmp/test-nfs && \ mount -t nfs4 127.0.0.1:/gitlab-swarm /var/tmp/test-nfs && \ grep nfs4 /proc/mounts | cut -d ' ' -f 1,2,3 && \ umount /var/tmp/test-nfs

```

  1. Running the commands above should output this: 127.0.0.1:/gitlab-swarm /var/tmp/test-nfs nfs4

Building the stack

  1. Create the configuration files for the services we are deploying. The first one is for Gitlab itself (gitlab.rb).

  2. The Prometheus configuration file to setup metrics collection from gitlab

  3. The Grafana configuration file

Services

  1. Now we can start defining the services of our stack. Let's begin with Gitlab itself: stack.yml

Deploying the stack

  1. docker stack deploy -c stack.yaml gitlab

  2. And if you access gitlab.localtest.me you get to our Gitlab instance running on Docker Swarm.

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

Owner

  • Name: Catarina Silva
  • Login: catarinaacsilva
  • Kind: user
  • Location: Portugal
  • Company: IT Aveiro | UA

Ph.D student | Computer science | MAP-i

GitHub Events

Total
Last Year