Harbor: Yerel İmaj Kütüphanesi Kurulumu (Debian / Ubuntu)

Kerem Titiz
Turk Telekom Bulut Teknolojileri
4 min readApr 3, 2024

Harbor Docker ve Kubernetes sistemleri için yerel imaj kütüphanesidir.

Merhaba, Bugünkü yazımızda Harbor İmaj Kütüphane uygulamasını docker ve docker-compose kullanarak kurulum yapacağız.

Doküman içeriğindeki komutlar ve bilgiler ile Harbor uygulamasını Debian 11,Ubuntu 20.04 ve Pardus 21.00 üzeri sürümlerde Otomatik kurulum yapabilirsiniz.

Harbor Nedir?

Kubernetes ve Docker platformlarında kullanılan imajların yerelde saklanabilmesine olanak sağlayan bir kütüphanedir.

Beraberinde sağladığı özelliklere bakacak olursak;

  • İmajlarda açıklık taraması,
  • İmajların şifrelenmesi,
  • İmajların imzalanması,
  • İmajların dağıtık yapılarda saklanması örnek olarak belirtebiliriz.

Hazırlık

Harbor Platfom Gereksinimleri

Orta seviye bir sunucu ( Min. 2 Cpu,4GB Ram) ve başlangıç için 120gb disk alanı gereklidir.

Uygulama gereksinimi olarak platform docker ve docker-compose üzerinde n çalışmaktadır.

Port gereksinimi olarak standartta 80,443 ve api için 4443 ü kullanmaktadır.

Sunucunun kuruluma hazırlanması

Sunucuya giriş yapılarak root’a geçiş yapılır.

user@debian-host: su -

Sunucu adı ve hosts dosyası güncellenmesi

Sunucu internete erişeceğinden ve üzerinde farklı alan adları barındırabileceğinden kullanmış olduğu ip adresi ve alan adı gerçek olması gerekir. Örn: debian-host.keremtitiz.com.tr(111.111.111.111)

root@debian-host: nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost
# This line should be changed to the correct servername:
127.0.1.1 debian-host.keremtitiz.com.tr debian-host
111.111.111.111 debian-host.keremtitiz.com.tr debian-host
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
root@debian-host: nano /etc/hostname
debian-host

Hosts dosyasına sunucu adı ve belirlediğimiz ip adresi girişi yapılır.

Hostname dosyasına ise sunucunun adı girilir.

Ardından sunucu yeniden başlatılarak işlem tamamlanır.

root@debian-host: systemctl reboot

Sunucuya tekrardan giriş yapılarak root kullanıcısına geçilir ve aşağıdaki komutlar ile yaptığımız değişiklikler doğrulanır. Sunucu yeniden başlatmadan bu değişiklikler uygulanabilir.

root@debian-host: hostname
root@debian-host: hostname -f

Komutların çıktısı aşağıdaki gibi olması gerekir.

root@debian-host: hostname
debian-host
root@debian-host: hostname -f
debian-host.keremtitiz.com.tr

Dış dns kayıtlarınızı sunucunun ip adresine yönlendirmeyi unutmayın.

Docker ve Docker Compose Kurulumu

Sürecin devamında docker-ce ve docker-compose kurulumuyla devam ediyoruz.

root@debian-host: apt install ca-certificates curl gnupg lsb-release
root@debian-host: install -m 0755 -d /etc/apt/keyrings
root@debian-host: curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
root@debian-host: chmod a+r /etc/apt/keyrings/docker.asc
root@debian-host: echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
root@debian-host: apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Yukarıdaki komutlar başarıyla çalıştırıldığında sunucumuza docker-ce ve docker-compose kurulumu tamamlanmış olur.

Harbor Kurulumu

Harbor’un iki kurulum şekli bulunmaktadır. Birincisi harbor image dosyalarının tamamını indirerek offline kurulum yapmak, ikincisi ise harbor kurulum script’ini indirip çalıştırarak yapmak.

Hızlıca kurulum seçeneği olan script ile (harbor.sh üzerinden) kurulum yaparak ilerleyeceğiz.

https://gist.github.com/kacole2/95e83ac84fec950b1a70b0853d6594dc

harbor.sh dosyasını yukarıdaki url üzerinden sunucuya indirerek çalışmaya hazır hale getirmemiz gerekiyor.

root@debian-host: wget https://gist.github.com/kacole2/95e83ac84fec950b1a70b0853d6594dc -o harbor.sh
root@debian-host: chmod u+x
root@debian-host: ./harbor.sh

Script’i çalıştırdığımızda bize iki adet soru soracaktır. Sunucu ip adresi yada sunucu alanadı adresini girmemiz gerekiyor.

Sunucu Ip adresi: 111.111.111.111 olarak ilerliyoruz.

Sunucu FQDN Hostname Adresi: debian-host.keremtitiz.com.tr

Script internet hızına bağlı olarak docker hub dan gerekli imageları alarak kurulum yapacaktır. Bu sebeple yaklaşık olarak 10–15 arasında kurulum tamamlanacaktır.

“Harbor Installation Complete” çıktısını komut satırında gördüğünüzde aşağıdaki komut ile deneme yapabiliriz.

root@debian-host: docker login debian-host.keremtitiz.com.tr

Komut sırasıyla kullanıcı adı ve şifre soracaktır. Kullanıcı adı olarak “admin” şifre olarak “Harbor12345” ile giriş yaparak repository’nin başarıyla kurulduğunu görebilirsiniz.

Konsol üzerinden uygulamaların ayağa kalktığını görmek için aşağıdaki komutu kullanarak kontrol edebilirsiniz.

root@debian-host: docker ps

Docker komut çıktısında online değerini gördükten sonra browser’a ilgili adresi girdiğimizde harbor login ekranı görüntülenecektir.

Mevcut kurulum http olarak ilerlemektedir. https olarak kurmak için sertifika ve key dosyasını /etc/harbor/ altına ekledğinizde harbor.yml dosyası üzerinde aşağıdaki değişiklikleri yapmanız yeterli olacaktır.

# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 111.111.111.111

# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80

# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /etc/harbor/cert.crt
private_key: /etc/harbor/priv.key
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: false

--

--