Инсталляция 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-registry gitlab-nginx registry.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
// Находим имя пода toolbox (в старых версиях назывался task-runner)
$ TOOLBOX_POD=$(kubectl get pods -n gitlab -l app=toolbox -o jsonpath='{.items[0].metadata.name}')
$ kubectl exec -n gitlab -it $TOOLBOX_POD -- gitlab-rails runner "
runner = Ci::Runner.create!(runner_type: 'instance_type', description: 'k8s-runner', run_untagged: true)
puts runner.token
"
$ cd ~/tmp
$ cat > runner-config.yaml <<EOF
# URL вашего GitLab
gitlabUrl: http://gitlab-webservice-default.gitlab.svc.cluster.local:8080
# НОВОЕ: В 2026 году используем runnerToken вместо runnerRegistrationToken
runnerToken: "glrtr-JszP89kmHP5mnuDugHnY"
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
# Важно: разрешаем HTTP внутри кластера
pull_policy = ["always", "if-not-present"]
# Глобальное отключение TLS для сессий
envVars:
- name: CI_SERVER_TLS_CA_FILE
value: ""
- name: GIT_SSL_NO_VERIFY
value: "true"
# Решение проблемы "Checking for jobs... failed":
# Если Ingress не пускает по внешнему домену, прописываем прямой путь к сервису
hostAliases:
- ip: "$(kubectl get svc -n gitlab gitlab-webservice-default -o jsonpath='{.spec.clusterIP}')"
hostnames:
- "gitlab.$INGRESS_HOST.nip.io"
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
1. Находим имя пода toolbox
TOOLBOX_POD=$(kubectl get pods -n gitlab -l app=toolbox -o jsonpath=’{.items[0].metadata.name}’)
2. Выполняем команду внутри него
$ kubectl exec -n gitlab -it $TOOLBOX_POD -- gitlab-rails runner "
runner = Ci::Runner.instance_type.last
if runner.update(active: true, run_untagged: true, locked: false, access_level: 'not_protected')
puts '--- Runner Configuration Updated ---'
puts \"ID: #{runner.id}\"
puts \"Description: #{runner.description}\"
puts \"Token: #{runner.token}\"
puts \"Status: #{runner.status}\"
puts \"Untagged: #{runner.run_untagged}\"
puts \"Locked: #{runner.locked}\"
puts '------------------------------------'
else
puts 'ERROR: Failed to update runner'
puts runner.errors.full_messages
end
"
--- Runner Configuration Updated ---
ID: 1
Description: k8s-runner
Token: glrtr-YtxqMQJyKXjskj7TVh3Q
Status: never_contacted
Untagged: true
Locked: false
------------------------------------
http://gitlab.192.168.49.2.nip.io/admin/runners
Добавить возможность клонировать репо
$ 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(', ')}\"
"
$ 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: NO
Active: true
Can pick untagged: true
Locked: false
Access level: not_protected
Tags:
Projects:
[!] ВНИМАНИЕ: Раннер OFFLINE. Проверьте логи пода самого раннера.
В Deployment поменял
yaml
- name: CI_SERVER_URL
value: http://gitlab-webservice-default.gitlab.svc.cluster.local:8080