DevOpsDockerLinux

Harbor Repository Kurulumu | Ubuntu 24.04/22.04

Install Harbor Image Registry on Ubuntu 24.04|22.04

Install Harbor Image Registry on Ubuntu 22.04|24.04

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 2

Bir konteyner kayıt defteri, konteyner görüntülerini depolamak ve erişmek için kullanılan bir depo veya depolar koleksiyonu olarak tanımlanabilir. Konteyner tabanlı uygulama geliştirme için kullanılabilirler ve geliştiricilerin bulut tabanlı uygulamalar oluşturma ve sunma konusunda değerli zaman kazanmasını sağlarlar. Konteyner görüntülerini sistemler arasında paylaşırken aracı görevi görürler.

Konteyner görüntüleri, bir uygulamayı çalıştırmak için gereken kütüphanelerden ve sistem paketlerinden oluşur. Geliştiricilere taşınabilirlik ve çeviklik gibi çeşitli avantajlar sağlarlar. Konteyner görüntüleri, Buildah , kaniko , Img Image builder vb. gibi araçlar kullanılarak oluşturulabilir. Konteyner görüntüleri geliştirildikten sonra, bunları kaydedebileceğiniz, paylaşabileceğiniz ve daha sonra erişebileceğiniz bir yere ihtiyacınız olur. Bir konteyner kayıt defteri, görüntüleri uzak bir sisteme yükleyerek (iterek) ve indirerek (çekerek) depolama sağlar.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 3

İki ana konteyner kayıt türü vardır:

  • Genel kayıtlar : Bunlar, kayıtların mümkün olduğunca hızlı bir şekilde döndürülmesi ve çalıştırılması isteyen bireyler ve küçük ekipler tarafından kullanılır. Bunlar daha az güvenlidir ve büyük kuruluşlar için yama, gizlilik ve erişim denetimi gibi sorunlara neden olabilir.
  • Özel kayıtlar : Gelişmiş güvenlik özellikleri sunarlar ve kurumsal kapsayıcı görüntü depolamasına güvenlik ve gizliliği dahil etmenin en iyi yolunu sağlarlar. Uzaktan veya şirket dışında barındırılabilirler. En popüler Özel Kayıtlar Google Kapsayıcı Kayıt Defteri, Amazon Elastik Kapsayıcı Kayıt Defteri (ECR) ve Azure Kapsayıcı Kayıt Defteri’dir.

Özel konteyner kayıtları tercih edilir çünkü kuruluşun görüntülere dahili olarak daha güvenli bir şekilde erişmesine olanak tanır. Çoklu kimlik doğrulama sistemleri konteyner görüntülerini doğrulamak için önlemler alır.

Harbor Container Image Registry, konteyner görüntülerini depolamak ve dağıtmak için kullanılan ücretsiz ve açık kaynaklı bir kurumsal sınıf konteyner kayıt defteridir. Politikalar ve rol tabanlı erişim denetimi kullanarak eserleri güvence altına alır. Ayrıca, güvenilir olarak imzalanmadan önce görüntülerin taranmasını ve güvenlik açıklarından arındırılmasını sağlar. Harbor, VMware tarafından geliştirildi ve daha sonra Cloud Native Computing Foundation’a (CNCF) devredildi. Harbor, daha sonra güvenlik sorunlarını iyileştirmek ve ortadan kaldırmak için geliştirilen Docker’ın kaynak kodundan geliştirilmiştir. Şu anda, kullanıcıların Docker, Podman, Kubernetes vb. gibi bulut tabanlı bilgi işlem platformları genelinde konteyner görüntülerini güvenli bir şekilde yönetmelerine yardımcı olan yüksek performans ve birlikte çalışabilirlik sağlar.

Harbor ile ilgili temel özellikler şunlardır:

  • Helm Tablolarını Yönetin : Projelere göre izole edilmiş ve RBAC tarafından kontrol edilen Helm tablolarını yönetmeye yardımcı olur.
  • LDAP grubuna göre rolü yönet : yöneticiler bir LDAP/AD grubunu Harbor’a aktarabilir ve ona proje rolleri atayabilir.
  • Projeleri çoğalt : Görüntü çoğaltmayı destekler. Depoları bir Harbor örneğinden diğerine çoğaltmak mümkündür.
  • Rol Tabanlı Erişim Kontrolü : Kullanıcılar ve depolar projeler halinde düzenlenir. Kullanıcılar farklı projelerdeki görüntüler için farklı izinlere sahip olabilir.
  • Güvenlik Açığı Taraması : Clair’i kullanarak görüntüleri düzenli olarak tarar ve kullanıcıları güvenlik açıkları konusunda uyarır.
  • Denetim : Depoya yapılan tüm işlemler takip edilir.
  • RESTful API: Çoğu yönetimsel işlem için RESTful API’leri barındırır, dış sistemlerle entegrasyonu kolaydır.
  • Grafiksel Kullanıcı Portalı : Kullanıcıların kolayca gezinebileceği, depoları arayabileceği ve projeleri yönetebileceği bir portal.

Ubuntu 22.04|20.04’e Harbor Image Registry’yi yükleyin

Bu kılavuzda, Ubuntu 22.04|20.04’te Harbor Container Image Registry’nin nasıl kurulacağını inceleyeceğiz Harbor, aşağıdakileri içeren 8 bileşenden oluşmaktadır:

  • Redis : Oturum açma bilgilerini depolamak için kullanılan bellek içi veritabanı.
  • PostgreSQL : Harbor’un kullandığı veritabanı.
  • Beego : Harbor web servisinin inşa edildiği ve geliştirildiği açık kaynaklı bir web uygulaması çerçevesi.
  • Chartmuseum : Dümen Haritalarını yönetmek için kullanılır.
  • Docker : Docker imajlarını itmek ve çekmek için kullanılır.
  • Helm : Helm grafiklerini yönetmek için
  • Swagger-ui : RESTful API’yi çağırmak ve test etmek için kullanılır.

Sistem Gereksinimleri

  • Minimum 2CPU 4GB RAM 40GB
  • sunucuda 80,443 portlarının açık olması
  • Kurulum esnasında makine internete açık olmalı
  • Ubuntu 22.04/24.04 işletim sistemli bir makine

Öncelikle sunucuyu güncelleyip gerekli paketleri yükleyerek başlayalım:

sudo apt update && sudo apt -y full-upgrade
sudo apt install apt-transport-https ca-certificates curl software-properties-common vim git

Step1 -Docker ve Compose Kurulumu

Ubuntu 24.04 üzerine Docker ve Docker compose kurulumu için aşağıdaki komutları çalışıtıroyruz.

sudo apt update
sudo apt install -y docker.io docker-compose

Docker servisini kontrol ediyor makine açılışında otomatik devreye girmesi için servisi enable ediyoruz.

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo usermod -aG docker ubuntu
newgrp docker
sudo chmod 777 /var/run/docker.sock

Versiyon kontrolü yapıyoruz.

docker version
docker-compose version

Step2-Harbor Registry installer download

#oturum açtığım kullanıcının home dizinine geçiyorum dosyaları buraya indireceim.
root@ip-172-31-23-199:/home/ubuntu# cd ~
root@ip-172-31-23-199:~# pwd
/root

Aşağıdaki komutu çalıştırıyorum.

LATEST_VERSION=$(curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep tag_name | cut -d '"' -f 4)
ONLINE_INSTALLER_URL="https://github.com/goharbor/harbor/releases/download/${LATEST_VERSION}/harbor-online-installer-${LATEST_VERSION}.tgz"
wget ${ONLINE_INSTALLER_URL}

Arşivden çıkarıyoruz dosyamızı

tar zxvf harbor-online-installer-*.tgz

Açılan dizine gidin ve yapılandırma dosyasını kopyalayın

cd harbor
cp harbor.yml.tmpl harbor.yml
nano harbor.yml

Step3-SSL Sertifika yapılandırması

Burada Let’s Encrypt cerbot ajanını kuruyor ve SSL sertifikası için istekte bulunuyorum (eğer kendi sertifikanız varsa manuel şekilde de yükleyebilirsiniz).

sudo apt install certbot -y
sudo certbot certonly --standalone -d "harbor.sbaylab.com" --preferred-challenges http --agree-tos -n -m "serdarbayram01@gmail.com" --keep-until-expiring

Domain : harbor.sbaylab.com

olacak şekilde yazıyorum ve doğrulama için bir mail adresi giriyorum

Bu sertifikanın alınabilmesi için harbor.sbaylab.com alan adının A kaydının harbor sunucunun public ip adresine “80” ve “443” portarından erişebilmesi gerekiyor.

Eğer DNS kaydı doğru yapılandırıldıysa aşağıdaki gibi bir çıktıyla başarılı şekilde sertifikanız oluşturulacak.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for harbor.sbaylab.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/harbor.sbaylab.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/harbor.sbaylab.com/privkey.pem
This certificate expires on 2025-05-22.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sertifika için gerekli .pem ve .cer dosyaları aşağıdaki dizin altında yer alıyor artık.

/etc/letsencrypt/live/harbor.sbaylab.com/fullchain.pem
/etc/letsencrypt/live/harbor.sbaylab.com/privkey.pem

Kendi kendine imzalanmış Local sertifikaları kullanma

Ayrıca Self-signed sertifikaları oluşturmak ve kullanmak da mümkündür . Ancak bu , Docker/Podman istemcisinden Harbor’a bağlanmaya çalışırken bilinmeyen CA sertifikasıyla ilgili bir soruna neden olabilir .

mkdir -p certs
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/harbor.key \
-addext "subjectAltName = DNS:harbor.computingforgeeks.com" \
-x509 -days 365 -out certs/harbor.crt

Bundan sonra sertifikaları /etc/ssl/certs/ dizinine kopyalayın ;

sudo cp certs/harbor.* /etc/ssl/certs/

Gerekli ayarları yapın(Edit Config File)

nano harbor.yml

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 4

SSL için sertifika path aşağıdaki gibidir.

ls /etc/letsencrypt/live/harbor.sbaylab.com
#Output aşağıdaki gibi olacak
.cert.pem chain.pem fullchain.pem privkey.pem README

Aşağıdaki bölümleri ekran görüntüsündeki gibi düzenliyoruz parola bölümlerinde kendinize bir parola belirleyebilirsiniz.ben test domaini olarak “harbor.sbaylab.com” adresini kullanacağım.

hostname: harbor.sbaylab.com
SSL Certificate Path :

/etc/letsencrypt/live/harbor.sbaylab.com/cert.pem
/etc/letsencrypt/live/harbor.sbaylab.com/privkey.pem

harbor_admin_password:
password
:

Ayrıca veritabanı parolasını, maksimum bağlantı sayısıyla birlikte yapılandırabilirsiniz:

# Harbor DB configuration
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: root123
# The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
max_idle_conns: 100
# The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
# Note: the default number of connections is 1024 for postgres of harbor.
max_open_conns: 900

Ctrl+o diyerek değişiklikleri kayıt ediyoruz.

Adım 4 – install Harbor Container Registry

harbor.yml Yapılandırma dosyasını düzenledikten sonra, Harbor’ı kurmak için aşağıdaki komutu çalıştırın:

sudo ./install.sh --with-trivy

Bu komut sonrası çıktı aşağıdaki gibi olacaktır.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 5

docker ps -a

komutuyla kurulan containerları kontrol ediyoruz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 6

ip adresi yada host name üzerinden login olduğumuzda aşağıdaki gibi bir ekran bizi karşılayacak.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 7

Default bilgiler

user : admin
Pass : Harbor12345

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 8

Trivy scannerın çalışırlığını kontrol ediyoruz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 9

Buraya kadar olan kısımda kurulumu başarıyla tamamladık.

Eğer kurulumda bazı containerlar up olmaz yada hataya düşerse harbor dizini içindeki docker compose ile tekrar sistemi ayağa kaldırabilirsiniz.

Aşağıdaki komutları uygulamanız yeterlidir.

harbor klasörü içerisine giderek docker compose dosyasını kullanabilrsiniz.

docker-compose down
docker-compose up -d

Harbor Hesap oluşturma

Administrator->Users Altına Menüsüne giderek imajlarımızı gönderirken kullanacağımız “push” adında bir hesap yaratıyorum.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 10

oluşturduğum kullanıcıya admin yetkisi veriyorum.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 11

Container image Registery(Remote Machine)

Docker imajı pushlayacağınız makinede aşağıdak tanımları yapmanız gerekiyor.

Artık Harbor Container Image Registry’deki görüntüleri çekip kullanabilirsiniz. HTTP kullandıysanız, Docker istemcinizde aşağıdaki ayarlamaları yapmanız gerekir.

sudo nano /etc/docker/daemon.json

Dosyanın içerisine aşağıdaki tanımı ekliyoruz.

{

  “insecure-registries”: [“harbor.sbaylab.com”]

}

Docker servisimizi restart ediyoruz.

sudo systemctl restart docker

Eğer localde bağlanıyorsanız DNS kaydınız doğru olmalı yada local DNS adresinizi imajı pushlayacağınız makineye aşağıdaki şekilde girmelisiniz.

$ sudo nano /etc/hosts

#ip adresi olan yer harbor serverın ip adresi olmalı.
192.168.1.58 harbor.sbaylab.com

Login to Harbor

##For Docker
docker login <harbor_address>##For Podman with HTTPS
podman login <harbor_address>##For Podman with HTTP
podman login <harbor_address> –tls-verify=false

Biz docker kullanıyoruz bu sebeple aşağıdaki gibi giriyoruz bilgilerimizi

docker login harbor.sbaylab.com

Çıktımız aşağıdaki gibi olacaktır.

root@ip-172-31-36-145:/home/ubuntu# docker login harbor.sbaylab.com
Authenticating with existing credentials...
Stored credentials invalid or expired
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-storesUsername: push
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded
root@ip-172-31-36-145:/home/ubuntu#

Kullanıcı adı ve şifreyi şu komutla da verebilirsiniz:

$ docker login harbor.sbaylab.com --username=admin --password=Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/rocky9/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Harbor sunucumuza bağlantımızı sağladık buraya kadar geldiysek artık Harbor sunucumuza container imajlarımızı gönderebiliriz.

Image Tag&Push

şimdi Jenkins serverım üzerinde bulunan bir imajımı Harbor sunucuma göndereceğim

root@ip-172-31-36-145:/home/ubuntu# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
serdarbayram/super-mario latest c34dde968d25 24 hours ago 679MB
sonatype/nexus3 latest 1143ad0287a3 2 weeks ago 630MBnginx stable-alpine bb941add9a4c 2 weeks ago 47.2MB
sonarqube lts-community 522e1399903e 4 weeks ago 604MB
node 16.17.0-alpine 5dcd1f6157bd 2 years ago 115MB
centos latest 5d0da3dc9764 3 years ago 231MB

Yukarıda göründüğü gibi bir kaç adet imaj yer alıyor repomda ben “serdarbayram/super-mario” isimli imajı göndereceğim.

Project Bölümüne geldiğiniz burada yarattığınız projeler yani yeni repository ler görünüyor default olarak gelen “Library” altına imajımı göndereceğim. Buraya New diyerek yeni bir proje açıp başka repostory lerde yaratabilirsiniz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 12

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 13

serdarbayram/supermario isimli imajımı harbor.sbaylab.com/library/supermario:latest olarak Tag liyorum.

docker tag serdarbayram/super-mario harbor.sbaylab.com/library/supermario:latest

çıktımız aşağıdaki gibi olacak

root@ip-172-31-36-145:/home/ubuntu# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
serdarbayram/super-mario latest c34dde968d25 25 hours ago 679MB
harbor.sbaylab.com/library/supermario latest c34dde968d25 25 hours ago 679MB

Artık imajımızı push layarak harbor serverımıza gönderebiliriz aşağıdaki komutu kullanıyoruz.

docker push harbor.sbaylab.com/library/supermario

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 14

Sunucumuza gittiğimizde aşağıdaki gibi imajımızın harbor repomuza geldiğini göreceğiz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 15

Harbor imaj Scan

Harbor paketimizi kurarken Trivy scanner ı da beraberinde kurmuştuk şimdi imajımızı repomuz üzerinden taramadan geçirerek ne kadar güvenli olduğunu kontrol edeceğiz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 16

“Scan vulnarability” diyerek taramayı başlatıyoruz.

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 17

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 18

Tarama detaylarına baktığınızda aşağıda gördüğünüz gibi bir çok zaafiyet bulmuş ve hangi CVE kodunun etkilediği bilgileri yer alıyor. Harbor Repository Kurulumu | Ubuntu 24.04/22.04 19

Harbor Repository Kurulumu | Ubuntu 24.04/22.04 20

Başarılı şekilde harbor kurulumunu yaparak imajlarımızı artık güvenlik kontrolünden geçirebilir yeni zaffiyetleri de bu ekranda taramalar yaparak görebiliriz.

Harbor kurulum kılavuzu makalesinin sonuna geldik umarım sizler içinde yararlı olmuştur.

 

Serdar Bayram

Bu yazı blog üzerinde Serdar Bayram tarafından hazırlanıp paylaşılmıştır. 2009 yılında açılan blogum kısa zaman içerisinde paylasımları ile dikkat cekip büyük bir izleyici kitlesine sahip olmuştur.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu