Gitlab Series 1 Введение в основные функции и архитектуры

GitLab

В этой статье будут представлены основы и архитектура GitLab Предполагается, что читатель уже использовал платформу для размещения кода и инструмент контроля версий git.

основные функции

GitLab в настоящее время является самым популярным типом хостинга кода проекта с открытым исходным кодом (строго говоря, сейчас это должен быть проект с открытым исходным кодом типа devops, но наиболее известная функция — хостинг кода) и имеет относительно большое сообщество. В этом разделе будут представлены самые основные функции хостинга кода, предоставляемые GitLab.

Хостинг кода, как следует из названия, заключается в размещении нашего локального кода на удаленном складе для управления, что удобно для командной разработки и совместной работы, а также помогает пользователям синхронизировать код, обновленный от других коллег на удаленном складе, с локальным в времени, поэтому самые основные бизнес-сценарии таковы:git clone or git pull or git fetchиgit push, первое — клонировать или обновить код удаленного хранилища до локального, второе — отправить изменения локального кода на удаленное хранилище.

Посетите домашнюю страницу gitlab, зарегистрируйте учетную запись gitlab, введите основное имя пользователя, адрес электронной почты и пароль для регистрации,Важно отметить, что почтовый ящик очень важен, GitLab использует почтовый ящик для идентификации пользователей.


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


Проект GitLab — это большая концепция, она охватывает управление проектом, вики-документацию, размещение кода, непрерывную интеграцию/доставку и другие функции, ноПроект может быть связан только с одним репозиторием, и репозиторий должен быть инициализирован при создании проекта.


Таким образом, мы можем войти в проект, который мы только что создали.Из пункта меню слева мы видим, что проект предоставляет множество функций, которые здесь не будут представлены, потому что основное внимание уделяется функции хостинга кода.


До сих пор мы создали репозиторий кода на удаленном сервере, но как он связан с локальным или как удаленный сервер узнает меня, когда я локально выполняю операцию git clone или git push? Обратите внимание на оранжевую подсказку на картинке выше, чтобы понять,Удаленный сервер требует, чтобы пользователь загрузил локальный открытый ключ SSH, чтобы определить, кто этот пользователь.

Вставьте сюда абзацПредставляя принцип входа в систему с открытым ключом SSH, на самом деле весь процесс в основном использует симметричный алгоритм шифрования шифрования с открытым ключом и расшифровки с закрытым ключом: пользователь загружает свой локальный открытый ключ SSH на удаленный сервер, и удаленный сервер отправляет сообщение пользователю при входе в систему. Случайная последовательность, которую пользователь шифрует своим локальным закрытым ключом SSH и отправляет обратно на удаленный сервер. Удаленный сервер расшифровывает ее с помощью предварительно сохраненного открытого ключа. В случае успеха это доказывает, что пользователь является доверенным, что позволяет вам войти в систему и больше не запрашивать пароль.



Нам нужно создать новый открытый ключ SSH, чтобы получить код через SSH. Найдите метод создания пары ключей ssh ​​локально.


Только после загрузки собственного локального ключа мы можем клонировать или обновить код удаленного склада с помощью ключа ssh.

В дополнение к ключам ssh мы также можем использовать https для клонирования или обновления кода,Разница в том, что метод https требует ввода имени и пароля учетной записи GitLab.

# ssh 方式
git clone git@gitlab.com:BradeHyj/ToyProject.git
# https 方式
git clone https://gitlab.com/BradeHyj/ToyProject.git

На данный момент мы представили самые основные функции хостинга кода: объединение новых репозиториев кода и локальных репозиториев. Можно обнаружить, что для GitLab запись доступа не только http/https, но и ssh

Введение в архитектуру

В этом разделе будет кратко представлена ​​схема архитектуры одномашинного развертывания GitLab и соответствующие компоненты.


На картинке выше представлена ​​архитектура GitLab, размещенная на официальном сайте, который сравнивает GitLab с офисом компании:

  1. Репозитории (хранилище кода)Элементы, управляемые GitLab, хранятся в репозитории, которым может быть жесткий диск или более сложная файловая система NFS.


  2. NginxПодобно стойке регистрации GitLab. Пользователь приходит на стойку регистрации, чтобы инициировать запрос, и запрос передается персоналу в офисе для обработки.


  3. База данныхЭто кабинет, в котором размещаются различные файлы метаданных, а его содержимое содержит метаданные информации о складских товарах (например, мерж-реквесты, задачи и т. д.), информацию и разрешения пользователей, обращающихся к стойке регистрации, и т. д.


  4. RedisПредставляет собой коммуникационную доску с «cubbyholes» (cubbyholes, вы должны понять это за считанные секунды, взглянув на картинку ниже, понять можно только невыразимую серию), которая содержит задачи, которые должны выполнять офисные работники.


  5. SidekiqЭто класс рабочих, которые в основном занимаются отправкой задач по электронной почте, и они получают выполнение задач от коммуникационной доски Redis.
  6. A Unicorn workerЭто класс сотрудников, которые обрабатывают обычные запросы на выполнение трудоемких задач. Их должностные обязанности: проверка разрешений пользователей путем обнаружения пользовательских сессий, хранящихся в «дырочке» Redis; указание задачи выполняется сотрудниками SIDEKIQ; получение или перемещение компонентов со склада товаров и т. д.
  7. GitLab-shell— это третий тип сотрудников в офисе, который принимает команды не с ресепшн (HTTP), а с факсимильного аппарата (SSH). Сотрудники GitLab-shell общаются с персоналом Sidekiq через коммуникационную доску Redis и иногда задают вопросы работникам Unicorn напрямую или через стойку регистрации.


  8. GitalyЭквивалентно бэк-офису в офисе, он хорош для доступа к диску и эффективного выполнения операций git, а также для кэширования результатов трудоемких операций. Все операции git обрабатываются Gitaly

Взаимная координация и ассоциация вышеперечисленных компонентов показаны на рисунке ниже.Они вместе образуют программную архитектуру GitLab.Вы можете увидеть два ключевых входа этой архитектуры:HTTP/HTTPS(TCP 80,443)иSSH(TCP 22)


Архитектура будет не идеальным дизайном, а итеративной эволюцией.Существование каждого компонента должно иметь проблему, которую необходимо решить.Последующая серия GitLab представит смысл «существования» каждого компонента один за другим.

приложение

Ссылка на ссылку

Официальная документация GitLab

Принцип и применение Ruan Yifeng SSH