Инсталляция GitLab в ubuntu 22.04


Делаю:
2026.01.06


Разбираюсь как устанавливать правильно!!!


Инсталляция GitLab с помощью helm

$ helm repo add gitlab https://charts.gitlab.io/
$ helm repo update


$ export PROFILE=${USER}-minikube
$ export INGRESS_HOST=$(minikube --profile ${PROFILE} ip)
$ echo gitlab.$INGRESS_HOST.nip.io


$ helm search repo gitlab


$ cd ~/tmp


$ cat > gitlab-config.yaml <<EOF
global:
  edition: ce
  hosts:
    domain: $INGRESS_HOST.nip.io
    https: false
  # Глобальное отключение TLS
  ingress:
    configureCertmanager: false
    tls:
      enabled: false

# Отключение встроенного GitLab Runner
gitlab-runner:
  install: false

# Отключение встроенного Registry
registry:
  enabled: false

installCertmanager: false

# Убираем TLS в настройках веб-сервиса
gitlab:
  webservice:
    ingress:
      tls:
        enabled: false
EOF


  // --version 9.7.0 \
$ helm install gitlab gitlab/gitlab \
  --namespace gitlab \
  --create-namespace \
  --values gitlab-config.yaml


// helm uninstall gitlab -n gitlab


$ kubectl get ingress -n gitlab
NAME                        CLASS          HOSTS                          ADDRESS        PORTS   AGE
gitlab-kas                  gitlab-nginx   kas.192.168.49.2.nip.io        192.168.49.2   80      2m58s
gitlab-minio                gitlab-nginx   minio.192.168.49.2.nip.io      192.168.49.2   80      2m58s
gitlab-webservice-default   gitlab-nginx   gitlab.192.168.49.2.nip.io     192.168.49.2   80      2m58s


// Получить root пароль GitLab
$ kubectl get secret -n gitlab gitlab-gitlab-initial-root-password \
  -o jsonpath='{.data.password}' | base64 --decode && echo


// root / <root-password>
http://gitlab.192.168.49.2.nip.io


Добавить GitLab Runner


$ RUNNER_TOKEN=$(kubectl exec -n gitlab -it $(kubectl get pods -n gitlab -l app=toolbox -o jsonpath='{.items[0].metadata.name}') -- gitlab-rails runner "runner = Ci::Runner.create!(runner_type: 'instance_type', description: 'k8s-runner', tag_list: [], run_untagged: true); puts runner.token")


$ echo $RUNNER_TOKEN


$ cd ~/tmp


$ cat > runner-config.yaml <<EOF
gitlabUrl: http://gitlab.192.168.49.2.nip.io

runnerToken: $RUNNER_TOKEN

rbac:
  create: true

# Решение проблемы Request bottleneck
concurrent: 10
checkInterval: 5

runners:
  # Настройка конкурентности (убирает Warning из логов)
  requestConcurrency: 4

  config: |
    [[runners]]
      # Отключаем проверку TLS на уровне клиента
      tls_verify = false
      [runners.kubernetes]
        namespace = ""
        image = "ubuntu:24.04"
        privileged = true
        pull_policy = ["always", "if-not-present"]

# Глобальное отключение TLS для сессий
envVars:
  - name: CI_SERVER_TLS_CA_FILE
    value: ""
  - name: GIT_SSL_NO_VERIFY
    value: "true"

EOF


// Установить runner в тот же namespace
$ helm install gitlab-runner gitlab/gitlab-runner \
  --namespace gitlab \
  --values runner-config.yaml \
  --wait \
  --timeout 15m


// helm uninstall gitlab-runner -n gitlab
http://gitlab.192.168.49.2.nip.io/admin/runners


Проверка Runner

$ kubectl exec -n gitlab -it deployment/gitlab-toolbox -- gitlab-rails runner '
runner = Ci::Runner.instance_type.last
puts "--- Runner Diagnostic ---"
puts "Description:  #{runner.description}"
puts "Online:       #{runner.online? ? "YES" : "NO"}"
puts "Active:       #{runner.active}"
puts "Can pick untagged: #{runner.run_untagged}"
puts "Locked:       #{runner.locked}"
puts "Access level: #{runner.access_level}"
puts "Tags:         #{runner.tag_list}"
puts "Projects:     #{runner.projects.pluck(:name).join(", ")}"

if !runner.online?
  puts "\n[!] ВНИМАНИЕ: Раннер OFFLINE. Проверьте логи пода самого раннера."
elsif runner.run_untagged == false && runner.tag_list.empty?
  puts "\n[!] ВНИМАНИЕ: Раннер не берет задачи без тегов, но тегов у него нет."
end
'


--- Runner Diagnostic ---
Description:  k8s-runner
Online:       YES
Active:       true
Can pick untagged: true
Locked:       false
Access level: not_protected
Tags:
Projects:


Добавить возможность клонировать репо

$ kubectl exec -n gitlab -it deployment/gitlab-toolbox -- gitlab-rails runner "
settings = ApplicationSetting.current
settings.update!(import_sources: ['github', 'git'])
puts \"\nSUCCESS: Import sources updated!\"
puts \"Current sources: #{settings.import_sources.join(', ')}\"
"