Commit 40f89235 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Añade servicio dind para aislar al sistema

En lugar de emplear el entorno Docker del sistema anfitrión en el que se
está ejecutando el runner, se lanza un servicio docker-in-docker aislado
del mismo, para evitar interacción con otros servicios.

Se desactiva por defecto la parada de procesos por falta de memoria.
parent af3d002e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
IMAGE_NAME=gitlab/gitlab-runner
IMAGE_TAG=alpine
DIND_IMAGE_TAG=dind

CONFIG_FILE=/etc/gitlab-runner/config.toml
CONCURRENT=1
@@ -18,9 +19,10 @@ RUNNER_OUTPUT_LIMIT=40960
RUNNER_EXECUTOR=docker
RUNNER_ENV=DOCKER_TLS_CERTDIR=

DOCKER_HOST=tcp://gitlab-dind:2375
DOCKER_IMAGE=alpine:latest
DOCKER_PRIVILEGED=true
DOCKER_OOM_KILL_DISABLE=false
DOCKER_OOM_KILL_DISABLE=true
DOCKER_DISABLE_CACHE=false
DOCKER_NETWORK_MODE=gitlab-net
DOCKER_SHM_SIZE=1000000000
@@ -42,6 +44,7 @@ VOL_ADDR=127.0.0.1
VOL_OPTS=rw,nolock,noatime,tcp,rsize=8192,wsize=8192,timeo=14
CONFIG_VOL_NAME=gitlab-runner-config-vol
CONFIG_VOL_DEVICE=:/gitlab-runner-config-vol/
DIND_VOL_NAME=gitlab-runner-dind-vol
WORK_VOL_NAME=gitlab-runner-work-vol

GITLAB_NET_NAME=gitlab-net
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ services:
      RUNNER_OUTPUT_LIMIT:
      RUNNER_EXECUTOR:
      RUNNER_ENV:
      DOCKER_HOST:
      DOCKER_IMAGE:
      DOCKER_PRIVILEGED:
      DOCKER_OOM_KILL_DISABLE:
+29 −0
Original line number Diff line number Diff line
version: '3.9'

services:
  gitlab-dind:
    image: docker:${DIND_IMAGE_TAG}
    environment:
      DOCKER_TLS_CERTDIR: ""
    networks:
      gitlab-net:
    volumes:
      - dind-vol:/var/lib/docker
    cap_add:
      - CAP_SYS_ADMIN
      - CAP_NET_ADMIN
    deploy:
      mode: replicated
      replicas: ${DIND_REPLICAS:-1}
      restart_policy:
        delay: ${DIND_RESTART_DELAY:-5s}
      update_config:
        delay: ${DIND_UPDATE_DELAY:-1m}
      resources:
        limits:
          cpus: '${DIND_RESOURCES_LIMITS_CPUS:-4}'
          memory: ${DIND_RESOURCES_LIMITS_MEMORY:-4G}
        reservations:
          cpus: '${DIND_RESOURCES_RESERVATIONS_CPUS:-0.001}'
          memory: ${DIND_RESOURCES_RESERVATIONS_MEMORY:-1G}

  gitlab-runner:
    image: ${IMAGE_NAME}:${IMAGE_TAG}
    environment:
@@ -30,6 +56,9 @@ volumes:
  work-vol:
    name: ${WORK_VOL_NAME}

  dind-vol:
    name: ${DIND_VOL_NAME}

networks:
  gitlab-net:
    name: ${GITLAB_NET_NAME}