Syntax highlighting of devops/gitlab/troubleshooting

= GitLab Troubleshooting =

<<TableOfContents()>>

== first login error ==

При первом запуске предлагается ввести логин и пароль, при том что ранее предлагалось сразу вводить новый пароль.

Вариант решения - установить пароль через Rails - консоль

{{{#!highlight bash
gitlab-rails console

}}}

{{{
user = User.first
user.skip_reconfirmation!
user.password="secret"
user.password_confirmation="secret"
user.save!

}}}

== gitlab-backup create error ==

Ошибка при создании бекапа 

{{{
Dumping PostgreSQL database gitlabhq_production ... pg_dump: [archiver (db)] query failed: ERROR:  catalog is missing 1 attribute(s) for relid 183034

}}}

Вариант решения ([[https://postgrespro.ru/list/thread-id/1463381|источник|class=" moin-https"]]).

{{{#!highlight bash
export PGOPTIONS="--ignore_system_indexes=1"

}}}

== gitlab-ctl reconfigure stucks ==

Выполнить внутри контейнера

{{{#!highlight bash
docker exec -it gitlab_container_name /opt/gitlab/embedded/bin/runsvdir-start &

}}}

== Error executing action run on resource ==

При восстановлении из директории gitlab на другой машине гитлаб не стартует с ошибкой:

{{{
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'

}}}

Нечто подобное найдно здесь: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/1601

Решено с помощью команд:

{{{#!highlight bash
sudo chmod -R 0777  /path/to/srv/gitlab/
sudo chmod 2770  /path/to/srv/gitlab/data/git-data/repositories

}}}

== Something went wrong while fetching the registry list ==

В разделе ''Registry'' отображается имя образа, однако при попытка "раскрыть" его получаем ошибку: ''Something went wrong while fetching the registry list.''

Переходим в директорию с логом gitlab и получаем текст ошибки при доступе к registry

{{{#!highlight bash
# на сервере gitlab
cd /srv/gitlab/logs/gitlab-rails
tail -f production.log
# ...
# Faraday::ConnectionFailed (Failed to open TCP connection to registry.isoit.ru:5000 (Connection refused - connect(2) for "registry.isoit.ru" port 5000)):
#  lib/container_registry/client.rb:19:in `repository_tags'                                       
# ...

}}}

Подтверждаем ошибку изнутри контейнера

{{{#!highlight bash
docker exec -it gitlab bash
irb

}}}

{{{
require 'faraday'
conn = Faraday.new(:url => 'https://registry.isoit.ru:5000')
conn.get                                                                                              
# Faraday::ConnectionFailed: Failed to open TCP connection to registry.isoit.ru:5000 (Connection refused - connect(2) for "registry.isoit.ru" port 5000)

}}}

Тоже делаем на хост машине и получаем ответ

{{{#!highlight ruby
=> #<Faraday::Response:0x00005623f4e532d8
 @env=
  #<struct Faraday::Env
   method=:get,
   body="",
   url=#<URI::HTTPS https://registry.isoit.ru:5000/>,
   request=#<struct Faraday::RequestOptions params_encoder=nil, proxy=nil, bind=nil, timeout=nil, open_timeout=nil, boundary=nil, oauth=nil, context=nil>,
   request_headers={"User-Agent"=>"Faraday v0.15.2"},
   ...
   status=200,
   reason_phrase="OK">,
 @on_complete_callbacks=[]>

}}}

Проблема в том, что контейнеры из местной сети должны ходить в registry по локальному адресу 10.0.100.234. Для этого необходимо чтобы обращение к ''registry.isoit.ru'' осуществлялась в первую очередь через местные dns-серверы.

'''Решение'''

В файл ''/etc/network/interfaces'' необходимо прописать ''dns''

{{{
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens18
iface ens18 inet dhcp
dns-nameservers 192.168.0.10 192.168.0.2 # <-----------------------

}}}

Перезапускаем сеть

{{{#!highlight bash
service networking restart

}}}