img

Что такое Harbor?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

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

У многих людей до сих пор возникают вопросы, связанные с тем, должны ли они размещать свои продукты самостоятельно, ведь относительно недавно произошел резкий скачок популярности соответствующих веб-компаний. Если вы хотите разместить свой собственный реестр контейнеров для Docker Hub, Harbor – это лучшее решение. Фонд CNCF уже поддержал его сразу после того, как он был впервые создан в рамках компании VMware. 

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

Что такое Harbor?

Существует высококлассный метод сопровождения и хранения docker-контейнеров, который называется Harbor. Компания VMware – выдающийся производитель виртуальных машин, создала Harbor, а позже передала ее в фонд CNCF, который считается крупнейшим открытым проектом.

В свою очередь, проект Harbor был разработан на базе языка программирования Harbor. Разработчики и добровольцы поработали над улучшением последнего и устранением угроз нарушения безопасности. 

И то, и другое требовали вовлечения некоторого числа программистов со всего мира. Это могло привести к тому, что программа могла стать тем или иным образом несогласованной. В рамках реестра контейнеров Harbor все особенно старались сделать свои продукты более безопасными, нежели в их предыдущих версиях.

Harbor был создан в облаке. Более того, он способен проверять детали образов на наличие уязвимостей, а не просто их хранить. Кроме того, Harbor позволяет программистам проверять образы, которые они загружают в реестр, с помощью собственных ключей, демонстрируя таким образом их легитимность. 

Для чего нужен Harbor?

Возможно, вы до сих пор не понимаете, почему же стоит выбрать именно Harbor, а не какое-нибудь другое решение. Впрочем, есть множество моментов, которые выделяют его на фоне остальных программ.

Самое очевидная причина -  ваше желание контролировать реестр от и до и возможность его настройки под себя. Несмотря на то, что некоторые поставщики предоставляют большое количество параметров, вам зачастую все же приходится выбирать один из доступных методов развертывания, предлагаемых поставщиком. Если же вы используете свою собственную платформу, то вы можете контролировать то, как реализуются объекты.

Наряду с этим, у Harbor есть ряд уникальных характеристик, которых больше ни у кого нет. А вот наличие раздельных записей для разработки, гарантии качества и производства является довольно типичным. Harbor допускает все это, но при этом упрощает процесс их взаимозависимой обработки. Кроме того, вы можете продвигать образы в несколько этапов за счет его гибкости, которая позволяет синхронизировать образы между источниками.

Процесс установки

Размещение вашего сервера Kubernetes на AWS или GCP – это распространенный вариант в рамках коммерческих сценариев, но для обучения это довольно сложно. Здесь мы будем использовать Minikube – продукт, который предназначен для частного запуска кластеров Kubernetes. После того, как вы установите minikube, запустите новую сеть с помощью следующих команд:

$ minikube start --vm-driver virtualbox

Даже при том, что на завершение команды вам потребуется больше времени, вы получите функционирующий стек технологий. А теперь для того, чтобы активировать расширения для входа, которые помогут вам подключить свою конфигурацию Harbor, вы должны выполнить следующую команду:

$ minikube addons enable ingress

На этом этапе minikube уже должен быть настроен. После чего, будет установлен шаблон Helm для Harbor, но только после того, как вы добавите в Helm исходный код:

$ helm repo add harbor https://helm.goharbor.io

После того, как вы создадите источник, вы можете развернуть чарт Helm. Для этого вам нужно выполнить следующее:

$ helm install my-release harbor/harbor

На данном этапе вы должны дождаться, что все модули начнут работать. Для того, чтобы в этом убедиться, запустите команду kubectl get pods. Однако вы можете заметить, что у некоторых модулей есть сбои в работе. Это неизбежно, поскольку они взаимозависимы. Для того, чтобы они все заработали, нужно примерно 15-20 минут. А как только они получат IP-адрес для кластера minikube, вы должны запустить команду minikube ip.

С помощью этого IP-адреса вы должны изменить свой документ /etc/hosts. По умолчанию URL-адрес следующий: http://core.harbor.domain, но когда вы вводите его в адресную строку браузера, вы должны быть уверены в том, что он связывается с вашим кластером. Для этого, добавьте в /etc/hosts следующие две строчки:

<ip-of-minikube>    core.harbor.domain
<ip-of-minikube>    notary.harbor.domain

Так вы сможете зайти на сайт http://core.harbor.domain с помощью стандартных имени пользователя и пароля. 

имя пользователя: admin

пароль: Harbor12345

Настройка клиента Docker

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

Для того, чтобы использовать minikube, вам нужно установить сервер Docker. Если вы используете Linux или OS X, то можете попробовать следующее:

 

После чего параметры среды вашего компьютера будут настроены на обращение к серверу Docker. Следующее, что вам нужно – это сертификаты. Они находятся в секретах Kubernetes:

kubectl -n harbor get secrets harbor-ingress -o jsonpath="{.data['ca\.crt']}" | base64 -D > harbor-ca.crt

[Примечание: используется base64 –D, а вот base64 –d будет использоваться в Linux.]

Теперь у вас есть файл данных harbor-ca.crt, в том числе и сертификат. Так что, первым делом вы должны скопировать учетные данные в виртуальную машину minikube для того, чтобы развернуть ее на сервере Docker:

$ scp -o IdentitiesOnly=yes -i $(minikube ssh-key) harbor-ca.crt docker@$(minikube ip):./harbor-ca.crt

После того, как вы передадите сертификат, вы можете установить его через виртуальную машину minikube. Сделать это можно вот так:

$ minikube ssh
$ sudo mkdir -p /etc/docker/certs.d/core.harbor.domain
$ sudo cp harbor-ca.crt /etc/docker/certs.d/core.harbor.domain

Для того, чтобы вернуться к своему обычному терминалу, запустите команду exit. Раз уж учетные данные настроены, вы можете войти в систему и отправить образ docker для того, чтобы убедиться, что все исправно работает:

$ docker login core.harbor.domain --username=admin --password Harbor12345
# Fetch the image stored in the Docker Hub { # Извлекаем образ, который хранится в Docker Hub }
$ docker pull nginx
# As the image is not ready for pushing, tag it and proceed { # Так как образ еще не готов к отправке, отметьте его тегом и идите дальше }
$ docker tag nginx core.harbor.domain/library/nginx:latest
# Complete pushing the image to registry { # Завершите отправку образа к реестр }
$ docker push core.harbor.domain/library/nginx:latest

Топ-4 функции

Единая UAA-авторизация: Harbor, VMware, Tanzu Application Service для виртуальных машин (TAS для виртуальных машин) и TKGI могут совместно использовать UAA-аутентификацию. 

Функциональная совместимость с LDAP/AD (Active Directry): для того, чтобы управлять идентификацией, Harbor подключается к бизнес-системам LDAP/AD.

RESTful API: для простоты связи с внешними сетями у большей части административных функций есть RESTful API.

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

Заключение

Если вы проделали весь этот путь, то это значит, что Harbor установлен и работает, и вы можете начать использовать его в качестве своего собственного персонального реестра. Кроме того, у вас есть полный контроль над тем, как будет использоваться ваш реестр и как он будет реализован. К тому же, вы можете пользоваться всеми возможностями этой программы, в том числе функцией обнаружения атак и дублирования образов контейнеров. 

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Git Flow - это специальная система ветвления для Git. Она помогает команде лучше контролировать и добавлять различные версии про
img
Docker — популярная платформа виртуализации на уровне ОС. Она поставляет приложения в пакетах (контейнерах), которые, представля
img
Хуки в Git — это bash-скрипты, которые запускаются до или после команд Git, например, коммитов и пушей. Они позволяют автоматизи
img
  Nomad и Kubernetes – это две самые популярные платформы оркестровки, предназначенные для оркестровки динамических рабочих нагр
img
  Давайте узнаем о новом Ops-течении – GitOps! DevOps поспособствовал цифровизации многих компаний. Речь идет о командах разрабо
img
  Канареечное (canary) развёртывание – это метод разработки и развертывания программного обеспечения, который позволяет выпускат
21 ноября
20:00
Бесплатный вебинар
Введение в Docker