- Первоначальная настройка vps
- $ docker ps
- $ docker rm container-name
- $ docker run
- $ docker stop container-name
- Centos unable to load client key
- Docker docker compose:
- Git конфигурация подписанного сертификата
- Global .gitconfigдля самоподписанных центров сертификации
- Nodejs expressjs mongodb
- Базовые принципы:
- Генерация сертификатов
- Добавление ssh ключа
- Лимиты по созданию проектов (ограничение)
- Настройка continuous deleivery на gitlab
- Настройка dockerd
- Настройка nginx
- Настройка smtp-сервера
- Настройка профиля
- Ограничение или блокировка открытой регистрации
- Ограничение регистрации по домену
- Один лайнер
- Питон, пип и конда
- Подготовка к установке gitlab
- Порт 22
- Преамбула
- Системные требования
- Стандартный процес обновления gitlab-ce
- Тонкости в работе с gitlab/gitlab-ce
- Укажите config когда git clone-ing
- Установка gitlab ce
- Установка и настройка
- Установка и настройка gitlab на ubuntu 18.04 | записки системного администратора
- Установка сервера nginx с сертификатом let’s encrypt
Первоначальная настройка vps
Вот вы купили инстанс например на
, первое, что необходимо предпринять, это защитить ваш сервер от агрессивного внешнего мира. Я не буду ничего доказывать и утверждать, просто покажу лог /var/log/messages своего виртуального сервера:
Во-первых установим файервол ufw:
apt-get update && apt-get install ufw
Включим политику по-умолчанию: блокируем все входящие соединения, разрешаем все исходящие соединения:
ufw default deny incoming
ufw default allow outgoingВажно: не забудем разрешить соединение по ssh:
ufw allow OpenSSHОбщий синтаксис такой: Разрешить соединение по порту: ufw allow 12345, где 12345 — номер порта или же название сервиса. Запретить: ufw deny 12345
Включаем файервол:
ufw enable$ docker ps
Команда, с помощью которой можно получить список запущенных контейнеров.
$ docker rm container-name
Удаление определенного контейнера.
Внимание: прежде, чем удалить контейнер, его необходимо остановить (docker stop)!
Более подробно разобраться в работе каждой команды вы можете в официальной документации. В этой статье я обратил внимание только на основные команды, необходимые для успешного начала работы с Docker.
Конкретные примеры использования docker run вы увидите в этой статье немного далее.
$ docker run
По сути основная команда, выполняющая запуск нового контейнера.
Основные параметры:
$ docker stop container-name
Команда, останавливающая работу контейнера.
Centos unable to load client key
Если вы пытаетесь это сделать на CentOS, и ваш .pemфайл дает вам
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Тогда вам понадобится ответ StackOverflow о том, как curlиспользовать NSS вместо Open SSL.
И вы хотите, чтобы восстановить curlиз источника :
Docker docker compose:
Подготовка:
Git конфигурация подписанного сертификата
НИКОГДА не отключайте все проверки SSL!
Это создает плохую культуру безопасности. Не будь таким человеком.
Ключи конфигурации, которые вы ищете:
Это для настройки сертификатов хоста, которым вы доверяете
Они предназначены для настройки ВАШЕГО сертификата для ответа на вызовы SSL.
Выборочно применить вышеуказанные настройки к конкретным хостам.
Global .gitconfigдля самоподписанных центров сертификации
Ради меня и моих коллег здесь показано, как нам удалось заставить самозаверяющие сертификаты работать без отключения sslVerify. Отредактируйте,.gitconfig чтобы использовать git config –global -eдобавить эти:
Nodejs expressjs mongodb
Пример такой конфигурации: docker-nodejs-mongodb-example.
Файл docker-compose.yml выглядит следующим образом:
Базовые принципы:
Docker представляет из себя дополнительный уровень абстракции; систему, автоматизирующую виртуализацию на уровне операционной системы.
“Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу. Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.”
From Wikipedia
Основные преимущества использования Docker:
Далее расмотрим основные команды, которые нам понадобятся для создания кластера:
Генерация сертификатов
Чтобы управлять демоном докера удаленно требуется шифрованное TLS соединение. Для этого необходимо иметь сертификат и ключ, которые надо сгенерировать и перенести на удаленную вашу машину. Следуйте шагам, заданным в инструкции на официальном сайте docker:
Добавление ssh ключа
Для работы с Git и GitLab можно указать публичный SSH ключ, чтобы не приходилось каждый раз вводить пароль вашей учетной записи.
Введите команду (если у вас уже существует ключ):
cat ~/.ssh/id_rsa.pub
Команда вернет следующий результат:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5onOVtATUjVkqk91lq v0g5TzOZTMBp4avWLEZO/97jQa1PL7y4zx4iOmUDOdlux/gC QSW0knti/yJrtzPJibDOedRJ9KkPPGpyD1JPqRGiy3eEY2gs755McfopX6U99aYjUVBgtcfX5AXp1 5Dd9jJEFhhEDDD/WEVfYERP1ZjybaRWy6vykkPa5W2YloXRIJq/kJk9ubtd5iGnRJfDZrkza2Q97ruNGWbeEty4rgDVNwb/Znz84qt9DzzI9rvlZTfB/9EApmB0Y7eu6vR3AG5T3gBZIAYGdurdqbIj/dI8nUduE9AImzlGxeACKs0iOi/037u5gvB gitlab@netpoint-dc.ml
Это пример ключа. У вас будут свои данные
Скопируйте публичный ключ полностью, перейдите в настройки профиля и нажмите на ссылку «SSH Keys» слева. Вставьте ключ в большое поле и напишите его название в поле Title. Для сохранения (добавления) ключа нажмите на кнопку «Add key».
Если публичного ключа у вас нет, вы получите примерно следующий ответ от команды:
cat: /home/gitlab/.ssh/id_rsa.pub: No such file or directory
Для генерации связки приватного и публичного ключа введите команду:
ssh-keygen -t rsa
У вас должно получиться примерно следующее:
На все вопросы в процессе генерации можно нажимать клавишу «Enter» или ввести подходящую вам директорию.
Снова введите команду для просмотра содержимого публичного ключа
cat ~/.ssh/id_rsa.pub
Скопируйте ключ и введите его в свойствах профиля.
Лимиты по созданию проектов (ограничение)
По умолчанию в GitLab любой пользователь может создать 100000 проектов. Откройте раздел «Account and limit» и измените значение в строке «Default projects limit» на 0 , нажмите на кнопку «Save changes». Значение «0» необходимо, когда нужно запретить пользователям создание проектов.
Настройка continuous deleivery на gitlab
Для того чтобы воркер гиталаба смог выполнять команды на удаленном хосте докера необхоимо определиться, как и где хранить сертификаты и ключ для шифрованного соединения с dockerd. Я решил данную проблему просто прописав в переменные в настройках gitlbab:
Просто выводите содержимое сертификатов и ключа через cat:
cat ca.pem
. Копируете и вставляете в значение переменных.
Пропишем сценарий для деплоя через гитлаб. Использовать будет docker-in-docker (dind) образ.
Содержимое скрипта деплоя с комментариями:
#!/usr/bin/env sh
# Падаем сразу, если возникли какие-то ошибки
set -e
# Выводим, то , что делаем
set -v
#
DOCKER_COMPOSE_FILE=docker-compose.yml
# Куда деплоим
DEPLOY_HOST=185.241.52.28
# Путь для сертификатов клиента, то есть в нашем случае - gitlab-воркера
DOCKER_CERT_PATH=/root/.docker
# проверим, что в контейнере все имеется
docker info
docker-compose version
# создаем путь (сейчас работаем в клиенте - воркере gitlab'а)
mkdir $DOCKER_CERT_PATH
# изымаем содержимое переменных, при этом удаляем лишние символы добавленные при сохранении переменных.
echo "$CA_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/ca.pem
echo "$CERT_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/cert.pem
echo "$KEY_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/key.pem
# на всякий случай даем только читать
chmod 400 $DOCKER_CERT_PATH/ca.pem
chmod 400 $DOCKER_CERT_PATH/cert.pem
chmod 400 $DOCKER_CERT_PATH/key.pem
# далее начинаем уже работать с удаленным docker-демоном. Собственно, сам деплой
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://$DEPLOY_HOST:2376
# проверим, что коннектится все успешно
docker-compose
-f $DOCKER_COMPOSE_FILE
ps
# логинимся в docker-регистри, тут можете указать свой "местный" регистри
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
docker-compose
-f $DOCKER_COMPOSE_FILE
pull app
# поднимаем приложение
docker-compose
-f $DOCKER_COMPOSE_FILE
up -d app
Основная проблема была в том, чтобы «вытащить» из переменных gitlab CI/CD содержимое сертификатов в нормальном виде. Я не мог понять, почему не работало соединение с удаленным хостом. На хосте посмотрел журнал sudo journalctl -u docker, там ошибка при рукопожатии.
Настройка dockerd
В сценарии запуска демона docker убираем опцию -H df://, эта опция отвечает, на каком хосте можно управлять демоном докера.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Далее следует создать файл настроек, если его еще нет и прописать опции:
Разрешим подключения по порту 2376:
sudo ufw allow 2376Перезапустим dockerd с новыми настройками:
sudo systemctl daemon-reload && sudo systemctl restart docker
Проверим:
sudo systemctl status dockerЕсли все «зеленое», то считаем, что на сервере мы успешно настроили docker.
Настройка nginx
Откройте ваш конфигурационный файл
CentOSnano /etc/nginx/conf.d/${WEBSITE_NAME}.conf
Debian/Ubuntunano /etc/nginx/sites-available/$WEBSITE_NAME
Настройка smtp-сервера
Здесь тоже необходимо использовать специальные переменные окружения самого GitLab.
В моем случае (я использую Google Cloud Engine) по-умолчанию закрыты порты 25, 465 (т.е. стандартные порты SMTP-протокола). Одним из вариантов решения этой проблемы является использование стороннего сервиса (как например MailGun) в качестве SMTP-сервера. Для этого используем настройки:
Настройка профиля
После авторизации нажмите на профиль левой кнопкой мыши в правом верхнем углу и нажмите на пункт «Profile».
Нажмите на кнопку «Edit profile» справа вверху.
Введите ваши данные (email, контакты, имя пользователя, аватар) и нажмите на кнопку «Update profile settings» , чтобы сохранить данные.
Ограничение или блокировка открытой регистрации
На данный момент любой человек может зарегистрироваться в вашем проекте и участвовать в разработке. Вы можете ограничить доступ к проекту или отключить регистрацию совсем.
Нажмите на значок гаечного ключа сверху.
В разделе администратора нажмите на ссылку «Settings» слева
Вас могут заинтересовать следующие категории
В разделе «Sign-up restrictions» уберите отметку с пункта «Sign-up enabled» и сохраните изменения, чтобы убрать возможность регистрации.
Ограничение регистрации по домену
GitLab поддерживает ограничение по домену почты. Установите отметку в пункте » Send confirmation email on sign-up», введите доверенный домен в поле «Whitelisted domains for sign-ups» и нажмите на кнопку «Save changes», чтобы сохранить изменения.
Один лайнер
РЕДАКТИРОВАТЬ: см. Ответ VonC , который указывает на предостережение об абсолютных и относительных путях для конкретных версий git от 2.14.x / 2.15 до этого одного лайнера
Питон, пип и конда
Связанный : Как добавить пользовательский корневой сертификат CA в CA Store, используемый pip в Windows?
Подготовка к установке gitlab
Обновите индекс пакетов командой:
Debian/Ubuntu
apt-get update
CentOS
yum update
Выполните установку дополнительных компонентов:
Debian/Ubuntu
apt-get install ca-certificates curl postfix
CentOS
yum install curl policycoreutils postfix
Во время установки будет открыто диалоговое окно для настройки MTA Postfix (почтового сервера). Выберите пункт «Интернет-сайт».
В следующем окне введите реально существующее доменное имя. Доменное имя будет использоваться для отправки с него писем.
Вы можете ввести IP адрес сервера вместо доменного имени, но в таком случае доставка писем на внешние почтовые серверы не гарантируется.
Порт 22
Суть в данных строках:
–publish 2289:22
Если работа с рабочей машиной производится через SSH-протокол, то мы не можем создавать связку напрямую “22:22”, так как порт 22 уже занят сервисом sshd.
Решение этой проблемы описано в официальной документации gitlab-ce. Все просто: мы привязываем любой другой (кроме 22) порт внутри сервера к 22 порту внутри контейнера. В данном примере используется порт 2289.
Параллельно с этим важно не забыть добавить
gitlab_rails[‘gitlab_shell_ssh_port’] = 2289;
В настройки самого GitLab.
Таким образом после запуска gitlab-ce и создания в нем самом какого-либо репозитория работа с ним будет производится по адресу в стиле:
Преамбула
Начнем, конечно же, с постановки задачи и определения основных технологий/методик, используемых в гайде.
С самого начала я заинтерисовался Docker’ом с целью быстрого создания небольшого, но довольно универсального кластера под собственные проекты (рабочие, учебные, etc). Так как системным администрированием я профессионально заниматься не собирался — я решил, что должен обучиться основам кластеризации ровно до того момента, когда я смог бы без особых затруднений разворачивать любой популярный программный стек для веб-проекта. Далее я рассмотрю разворачивание на Docker следующих конфигураций:
Первые две в представлении, думаю, не нуждаются. Третяя же состоит из MongoDB, Express.js, Node.js. MEAN я чаще всего использовал для написания RESTful API, например, для дальнейшего разрабатывания на его основе мобильного приложения.
После этого я сам себе немного усложнил задачу, добавив следующие требования:
Системные требования
Рекомендуется использовать не менее 8 ГБ оперативной памяти и процессор не менее 2-ух ядер. Более подробно о системных требованиях можно прочитать в документации GitLab.
GitLab может быть установлен в следующих дистрибутивах Linux:
- Ubuntu;
- Debian;
- CentOS;
- openSUSE;
- Red Hat Enterprise Linux (CentOS);
- Scientific Linux (CentOS);
- Oracle Linux (CentOS).
После установки операционной системы подключитесь к ней по SSH для выполнения действий на сервере, где будет работать GitLab CE.
Стандартный процес обновления gitlab-ce
Это последний момент, который я хочу отдельно осветить в этом гайде.
Процесс обновления GitLab с помощью Docker упрощается до нескольких команд:
docker stop custom-gitlab— останавливаем работающий контейнер;docker rm custom-gitlab— удаляем контейнер GitLab CE.Важный момент: удаление контейнера не означает удаление данных, которые были созданы в процесе использования системы. Поэтому вы можете выполнять эту команду без каких-либо опасений.
docker pull gitlab/gitlab-ce— собственно обновление изображения контейнера;- выполняем длинную команду (пример выше), с помощью которой мы изначально запускали контейнер.
Вот и все. Выполнив эти 4 команды, GitLab автоматически обновится до последний версии и запустится через Docker Engine.
Тонкости в работе с gitlab/gitlab-ce
Некоторые, более сложные контейнеры, требуют дополнительной настройки для запуска с использованием nginx-proxy. К таким контейнерам относится и gitlab-ce.
Я сначала приведу полностью рабочую версию команды для запуска этого контейнера, с учетом той конфигурации, которая обсуждается в этой статье, а далее поясню ниже некоторые детали из этой команды.
Итак:
Укажите config когда git clone-ing
Если вам нужно применить его для каждого репо, в документации сказано, что вы должны просто запустить его git config –localв своем репо-каталоге. Ну, это бесполезно, если вы еще не клонировали репо локально, не так ли?
Вы можете сделать global -> localhokey-pokey, установив вашу глобальную конфигурацию, как указано выше, а затем скопировать эти настройки в вашу локальную конфигурацию репо, как только она клонируется …
ИЛИ что вы можете сделать, это указать команды config,git clone которые будут применены к целевому репо после его клонирования.
Установка gitlab ce
Процесс установки занимает не так много времени. Воспользуйтесь скриптом для подготовки рабочей среды под GitLab. Будут установлены дополнительные программы и настроено подключение к репозиторию GitLab CE.
Выполните следующую команду для скачивания и выполнения скрипта:
Debian/Ubuntu
Установка и настройка
Проблем с установкой Docker и других пакетов не должно возникнуть. На официальном сайте этот процес расписан довольно подробно. Далее я распишу общий перечень команд, необходимых для начальной настройки.
Сразу уточню, что в этой статье я рассматриваю настройку Docker и всех сопутствующих программ на дистрибютиве CentOS 7, так как на этой ОС я уже давно привык работать, как на основной серверной системе. В целом на любом другом Linux-дистрибютиве действия будут примерно аналогичные, с той лишь разницей, что, например, для Ubuntu вы будете использовать apt-get вместо yum / dnf (для CentOS / Fedora).
Установка и настройка gitlab на ubuntu 18.04 | записки системного администратора
Выполним установку и настройку Gitlab Community Edition через установку Omnibus-пакета
1. Установка зависимостей для Gitlab-пакета с предварительным обновлением локального кеша пакетов
2. Добавление Gitlab репозитария, из которого будет установлен пакет Gitlab Community Edition
3. Установка Gitlab
4. Настройка домен/урл по которому будет доступен Gitlab снаружи
Если не используется SSL, тогда указываем протокол http в параметре
external_url в файле /etc/gitlab/gitlab.rb
Для фактического применения сделанных настроек необходимо выполнить команду:
5. Настройка Gitlab на работу с SSL
Получение бесплатного Let’sEncrypt-сертификата
Gitlab поддерживает два способа работы с SSL:
1.Автоматическое генерирование самим Gitlab-ом сертификатов Let’sEncrypt(c их поселедующим ручным (с помощью команды gitlab-ctl renew-le-certs) или автоматическим обновлением)
https://docs.gitlab.com/omnibus/settings/ssl.html#lets-encrypt-integration
2.Ручная настройка HTTPS со своими собственными сертификатами
https://docs.gitlab.com/omnibus/settings/nginx.html#manually-configuring-https
Будем использовать второй способ, в котором получим бесплатный Let’sEncrypt-сертификат и установим автообновление этого сертификата
Сгенерируем Диффи-Хелмана ключ
Настройка Gitlab на поддержку SSL
https://docs.gitlab.com/omnibus/settings/ssl.html
https://docs.gitlab.com/omnibus/settings/nginx.html#manually-configuring-https
Протокол изменяем с http на https
Включаем принудительный редирект http->https
Указываем пути к сертификату, приватному ключу и к ключу Дифи-Хелмана
Обязательно отключаем поддержку letsencrypt, встроенную в Gitlab
Чтобы при выполнении команды gitlab-ctl reconfigure
Gitlab не пытался самостоятельно обновить сертификаты Let’sEncrypt и тем самым перезаписать уже действующие сертификаты
Перенастраиваем/переконфигурируем Gitlab после внесений изменений в файл /etc/gitlab/gitlab.rb
Настройка автообновления Let’sEncrypt-сертификата с последующим перечитыванием nginx-ом своей конфигурации и нового сертификата/ключа
https://docs.gitlab.com/omnibus/settings/nginx.html#update-the-ssl-certificates
Для получение сертификата добавляем в cron-скрипт для запуска каждые 2 месяца, который
6. Базовая настройка Gitlab после его установки
Установка пароля:
Логинимся в Gitlab (предварительно в WEB-интерфейсе устанавливаем пароль)
Отключение авторегистрации:
Указание корректного Email-адреса:
Изменение дефолтного имени пользователя с админискими правми с root на свое имя:
Настройка Gitlab Shell на нестандартный порт SSH(если SSH-сервер запущен не на стандартном порту)
Настройка SMTP-сервера
В качестве SMTP-сервера используем локально запущеннный postfix без поддержки SSL, слушающий запросы на localhost
Перенастраиваем/переконфигурируем Gitlab после внесений изменений в файл /etc/gitlab/gitlab.rb
Тестирование SMTP-кнфигурации путем отправки тестового сообщения из консоли Gitlab
https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration
Заходим в Gitlab консоль
Выполняем команду по отправке тестового сообщения
Если необходимо отключить отправку всех типов сообщений
https://docs.gitlab.com/omnibus/settings/smtp.html#disable-all-outgoing-email
Отключение неиспользуемых сервисов
Отключение Prometheus (который включен по умолчанию)
Отключение Grafana
При отключении сервиса Prometheus fвтоматически также будут отключены такие сервисы,которые использует prometheus
Применяем настройки
Проверяем отсутствие запущенных Prometheus и Grafana-сервисов
Настройка Nginx статусной страницы
Конфигурация, которая создается после изменений в файле /etc/gitlab/gitlab.rb
и выполнению команды для применения изменений (gitlab-ctl reconfigure)
Error-логи Nginx
Все конфигурационные файлы/файлы виртуальных хостов/статусной страницы и т.д. для Nginx распологаются в каталоге /var/opt/gitlab/nginx/conf:
Настройка ротации логов
https://docs.gitlab.com/omnibus/settings/logs.html
GitLab включает расширенную систему журналов, в которой все службы и компоненты GitLab будут записывать в системные логи
Дефолтное месторасположение логов всех сервисов/компонентов доступно по команде:
Runit-управляемые сервисы генерируют логи испольхуя svlogd
Ротацию логов таких сервисов настраиваем через параметры
Например, настроим ротацию с такой логикой
Ротировать только по времени(раз в сутки), ротация по размеру отключена
Хранить 7 ротированных файлов, при ротации сжимать старый лог-файл
Logrotate-сервис,который встроен в Gitlab управляет всеми логами кроме логов для Runit-управляемых сервисов
Аналогично, как и для логов runit-сервисов, настроим ротацию всех остальных
логов средствами встроенного в Gitlab logrotate-сервиса, а именно:
Ежесуточная ротация по времени(не по рамзмеру), с хранением 7 посоледних ротированных копий/лог-файлов, с сжатием ротированных файлов
Применяем сделанные настройки
При необходимости можно выполнить ручной запуск ротации(по дефолту ротация выполняется по расписанию)
Несколько команд для просмотра логов средствами утилиты gitlab-ctl
Просмотр логов всех сервисов в online-режиме
Просмотр всех логов в конкретном подкаталоге(например, в подкаталоге gitlab-rails)
Просмотр лога конкретного файла(например, access-лога Gitlab-сервиса)
Настройка лимитов на подключение к Gitlab
Enabling/Disabling Rack Attack and setting up basic auth throttling
https://docs.gitlab.com/omnibus/settings/configuration.html#enablingdisabling-rack-attack-and-setting-up-basic-auth-throttling
https://docs.gitlab.com/ee/security/rack_attack.html
3 неуспешные попытки за 10 минут — блокировка на 3 часа
Rate Limit/Throttling
Более 5 запросов незарегистрированным пользователем — троттлинг на 120 секунд
с кодом ответа 429 и ответом Too Many Requests
https://docs.gitlab.com/ee/security/rate_limits.html
6-й запрос
Проверка наличия IP-адрса в заблокаированных:
Дефолтное место хранения репозитариев
https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
Storage-директории
Полезные команды для работы с Gitlab-сервисами через утилиту gitlab-ctl
Послать команду на nginx-сервис для перечитывания им своей конфигурации при обновлении
Включение Container Registry в Gitlab
Получение Let’sEncrypt-сертификата для домена registry.mydomain.com
Для автоматического продления сертификата добавим в ранее созданный скрипт /usr/local/bin/ssl-renew.sh после строки с командой по запуску certbot
команду для обновления сертификата для домена registry.mydomain.com
И в конеце скрипта последней строкой добавляем перезапуск сервиса registry
Итого скрипт по обновлению сертификатов(как для gitlab, так и для registry) имеет вид:
По умолчанию registry запускается на порту 5000
Взаимодействие Gitlab и Registry
https://docs.gitlab.com/omnibus/architecture/registry/README.html
Процес аутентификации в Container Registry в Gitlab(docker login…)
1.Docker client->Docker daemon->registry.mydomain.com->
2.Реджистри возвращает код ответа 401 т.к. не был предоставлен валидный токен
Вместе с кодом ответа 401 реджистри отправляет клиенту(который попытался залогиниться в реджистри с помощью команды docker login https://registry.mydomain.com)
token_realm (который указан в конфигурации реджистри в файле /var/opt/gitlab/registry/config.yml)
Этот token_realm как раз и указывает клиенту, где он может получить токен т.е.
обратиться за токеном на Gitlab (https://gitlab.mydomain.com) по указанному роуту
3.Docker клиент подключается к Gitlab API и получает токен
Этот токен Gitlab подписывает приватным ключем РЕДЖИСТРИ, а сертификат РЕДЖИСТРИ, которым будет
проверяться подписанный Gitlab-ом приватным ключем токен, прописан в конфиг.файла registry
Эта пара приватный ключ и сертификат для Реджистри является самоподписными и автоматически
выпускается Gitlab-ом при включении/настройке Registry
И эта пара никакого не имеет отношения к сертификату/ключу, который использует клиент при подключении к Registry снаружи(который мы выпускали средствами Let’sEncrypt)
4.Docker клиент подключается снова к Registry, но уже с валидным токеном, который он получил от Gitlab API и
успешно аутентифицируется в Docker-реджистри
Увеличение времени жизни токена(по дефолту 5 минут)
https://docs.gitlab.com/13.6/ee/administration/packages/container_registry.html#container-registry-domain-configuration
Полезно,если в хранилище загружается большой по размеру образ, который не успевает загрузиться за 5 минут
Тегирование, загрузка, скачивание образов с Container Registry
https://docs.gitlab.com/ee/user/packages/container_registry/
Залогиниться пользователем,который создан в Gitlab, в Registry( например, my-gitlab-user-name)
Перетегировать образ в формат, поддерживаемый Gitlab-ом
Загрузить образ в Registry
Удалить локальный образ
Загрузить образ с Registry
Troubleshooting Registry
https://docs.gitlab.com/13.6/ee/administration/packages/container_registry.html#troubleshooting
Лог файл Registry
Лог файл Gitlab
Источник:
Установка
https://docs.gitlab.com/13.6/omnibus/installation
Настройка
https://docs.gitlab.com/omnibus/settings/configuration.html
https://docs.gitlab.com/13.6/omnibus/README.html#configuring
Nginx
https://docs.gitlab.com/13.6/omnibus/settings/nginx.html
Комментирование и размещение ссылок запрещено.
§
§
Установка сервера nginx с сертификатом let’s encrypt
Мы будем использовать установку GitLab CE, которая работает за сервером Nginx, который будет выполнять обратное проксирование и осуществлять обработку SSL-трафика. Для настройки базового сервера воспользуйтесь руководством из списка ниже, подходящим для вашей операционной системы.
На данный момент у вас должен быть развернут сервер с Nginx и сертификатом Let’s Encrypt. Теперь установим GitLab CE.
