Harbor Nedir? Harbor Rehberi

Harbor, açık kaynaklı bir Docker registry yöneticisidir ve büyük ölçekli Docker image’larını güvenli ve yönetilebilir bir şekilde saklamak için geliştirilmiştir. Harbor, Docker Registry’nin üstüne eklenen bir dizi özellik sunarak, enterprise düzeyde image yönetimi ve güvenlik sağlar.

Başlıca Özellikler

  1. Kullanıcı ve Erişim Yönetimi
    • Rol Tabanlı Erişim Kontrolü (RBAC): Kullanıcılara ve gruplara çeşitli yetkiler atayarak, hangi projelere erişim sağlayabileceklerini ve hangi işlemleri yapabileceklerini yönetir.
  2. Proje ve Repository Yönetimi
    • Projeler: Docker image’larını organize etmek için projeler oluşturur. Her proje altında bir veya daha fazla repository (depo) barındırabilir.
    • Repository (Depo) Yönetimi: Image’ları yönetir, tag’leri kontrol eder ve görüntüleme yetenekleri sunar.
  3. Güvenlik Özellikleri
    • Image Tarama: Yüklenen Docker image’larını güvenlik açıkları açısından tarar ve raporlar. Bu, zayıf noktaları hızlı bir şekilde tespit etmeye yardımcı olur.
    • Güvenli İletişim: HTTPS destekleyerek veri iletimini güvence altına alır.
  4. Yüksek Erişilebilirlik ve Ölçeklenebilirlik
    • Klonlama ve Dağıtım: Büyük veri merkezlerinde veya bulut ortamlarında yük dengelemesi ve yüksek erişilebilirlik sağlar.
    • Çoklu Veri Merkezi Desteği: Birden fazla Harbor instance’ını yönetme yeteneği sunar.
  5. CI/CD Entegrasyonu
    • DevOps Süreçleriyle Entegrasyon: CI/CD pipeline’larına entegre edilerek, otomatik olarak Docker image’larını build eder ve dağıtır.
  6. Kapsamlı Yönetim Araçları
    • Web UI: Kullanıcı dostu bir web arayüzü sunarak, Docker image’larının yönetimini ve gözden geçirilmesini kolaylaştırır.
    • API ve CLI: Yönetim ve entegrasyon için kapsamlı API ve komut satırı araçları sağlar.

Harbor Avantajları:

Adım Adım Harbor Kurulumu

1-) Docker Kurulumu:

Paket listelerini güncelleyelim:

sudo apt update

Docker indiriyoruz:

apt install docker-ce

Docker aktif hale getiriyoruz:

sudo systemctl start docker
sudo systemctl enable docker

2-) Docker Compose Kurulumu:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Yetki verelim:

sudo chmod +x /usr/local/bin/docker-compose

Harbor’u indirelim.

https://github.com/goharbor/harbor/releases/download/v2.7.3/harbor-offline-installer-v2.7.3.tgz
tar xvf harbor-offline-installer-v2.7.3.tgz
cp harbor/harbor.yml.tmpl harbor.yml

Harboru local kullanım için yapılandırıyoruz:

nano harbor/harbor.yml

Local kullanım için olması gereken ayarlar:

Harbor Ekranına erişme:

Harbor giriş işlemleri:

Harbor’a image yüklemek için öncelikle login olmamız gerekir ancak sunucumuzun terminalinde “docker login” komutunu çalıştırırsak bu doğrudan DockerHub’a login olmaya çalışır. Ancak biz image’larımız DockerHub yerine Harbor’a yüklemek istediğimiz için Harbor’a login olmamız gerekir.

Eğer SSL sertifikası olmadan kurulum yaptıysanız, login olma işlemi esnasında http: server gave HTTP response to HTTPS client hatası almamız olasıdır. İşte bu hatayı çözebilmek için;

📌Docker yapılandırma dosyasını (exp: /lib/systemd/system/docker.service) bir metin düzenleyici ile açıp ExecStart ile başlayan satırın sonuna aşağıdaki ibare eklenerek

--insecure-registry=http://<harbor_adresi>

👨‍💻 sudo systemctl daemon-reload
👨‍💻 sudo systemctl restart docker

ve devamında komutlarını çalıştırarak sorunu çözebilirsiniz.

📌 Eğer bu işlemler sonunda Harbor arayüzüne erişim sorunu yaşarsanız harbor klasörüne giderek sudo ./install.sh komutunu yeniden çalıştırmanız gerekebilir.

Harborda pull ve push işlemleri için login olmamız gerekmektedir. Kullanıcı adı ve şifre işlemlerinden sonra başarılı bir şekilde giriş yapılıyor.

Proje Oluşturma

Proje oluşturarak, o projeye ait imaj dosyalarımızı yükleyebiliriz. Projelere RBAC (Rol Tabanlı Erişim Kontrolu) sağlayabiliriz.

Buradan Yeni Proje alanına tıklayarak yeni proje oluşturacağız.

Proje adını giriyoruz. Erişim seviyesini genel bıraktığınız taktirde login işlemi gerçekleşmeden imaj dosyaları pull edilebilir hale gelecektir fakat Genel işaretlenmezse oturum isteyecektir.

İmaj Dosyası Push etme & Pull Etme

Öncelikle imajımızı taglamamız gerekiyor.

docker tag backendimage:latest localhost/backend/backendimage:latest

localhost ⇒ Harborumuzun çalıştığı yer

localhost/backend ⇒ Harbor üzerinden oluşturduğumuz proje adı.

localhost/backend/backendimage:latest ⇒ Harborumuza push ettiğimiz İmage dosyamız

Taglama işleminden sonra push edebiliriz.

docker push localhost/backend/backendimage:latest

Evet. İmaj dosyamız geldi.

Projelere Kullanıcı ekleme & Yetki Tanımlaması

Projelerimiz bu şekilde dahil edildi.

Buradan herhangi bir projeye girerek, kullanıcı eklemesi yapacağız. Kullanıcılar kısmından Kullanıcı Ekle butonuna basarak kullanıcı ekleyebiliriz.

Ekleyeceğimiz kullanıcı için buradan rol belirleyebiliriz.

Robot Accounts

Harbor’da Robot Accounts (Robot Hesapları), otomatikleştirilmiş işlemler yapmak için kullanılan, yetkilendirilmiş hesaplar oluşturmanı sağlar. Bu hesaplar, belirli görevleri gerçekleştirmek için API üzerinden Harbor ile etkileşimde bulunabilir, bu da özellikle CI/CD (Continuous Integration/Continuous Deployment) süreçlerinde oldukça faydalıdır.

Robot Accounts Özellikleri:

Kullanım Senaryoları:

  1. CI/CD Boru Hatları: Bir CI/CD aracı, robot hesabını kullanarak belirli bir proje için Harbor’dan imaj çekebilir veya imajı yükleyebilir.
  2. Otomatik Yedekleme: Harbor’da bulunan imajları belirli aralıklarla yedeklemek için robot hesapları kullanılabilir.
  3. Günlük İşlemler: Bir script, belirli bir projede eski Docker imajlarını temizlemek için robot hesabını kullanabilir.

Bu özellik sayesinde, otomatik işlemler sırasında güvenliği artırarak Harbor’ı daha verimli bir şekilde kullanabilirsin.

Registries

Registries Kısmının İşlevleri:

  1. Diğer Kayıt Defterlerine Bağlanma: Harbor, Docker Hub, Google Container Registry (GCR), Amazon Elastic Container Registry (ECR) gibi popüler Docker kayıt defterlerine bağlanabilir. Bu sayede, bu kayıt defterlerinde bulunan imajları Harbor’a çekebilir veya Harbor’daki imajları bu kayıt defterlerine itebilirsin.
  2. İmaj Senkronizasyonu: Farklı kayıt defterleri arasında imajları senkronize edebilirsin. Örneğin, bir imajı önce Harbor’a itebilir ve ardından bu imajı başka bir Docker kayıt defterine senkronize edebilirsin. Bu, dağıtık sistemlerde veya çoklu bulut ortamlarında imaj yönetimini kolaylaştırır.
  3. Harbor İçi ve Dışı İmaj Yönetimi: Registries kısmını kullanarak, Harbor’daki projelerini dışarıdaki kayıt defterleriyle entegre edebilir ve bu imajları Harbor üzerinden yönetebilirsin. Bu sayede imajları farklı ortamlar arasında taşımak veya yedeklemek daha kolay hale gelir.
  4. Otomatik Çekme (Pull) ve İtme (Push): Belirli aralıklarla otomatik olarak dış kayıt defterlerinden imajları çekmek veya Harbor’dan bu kayıt defterlerine imajları itmek için zamanlanmış görevler oluşturabilirsin.

Kullanım Senaryoları:

Registries kısmı, imaj yönetimini merkezi bir noktadan yap

Exit mobile version