Harbor ile Multi-tenant Docker Kayıt Oluştur

Bugünün konteynerli dünyasında, çok sayıda Docker görüntülerini güvenli bir şekilde yönetmek ve verimli bir şekilde tüm boyutlardaki kuruluşlar için önemlidir. Bu kapsamlı kılavuzlukları, sağlam, güvenli ve özellik zengin bir konteyner kayıt defterine her şeyi kapsayan, CNCF'nin 30.000'den fazla GitHub yıldızıyla birlikte en yaygın olarak kabul edilen açık kaynak bulut yerel konteyner kaydıdır.

Harbor nedir ve Neden Seçilir?

Harbor, politika ve rol tabanlı erişim kontrolü ile eserleri güvenli kılan açık bir kaynak kaydıdır, görüntüler açıklardan taranır ve güvenilir olarak görüntüler sunar. Harbor, açık kaynak Docker Dağıtımını genellikle güvenlik, kimlik ve yönetim gibi kullanıcılar tarafından gerekli hale getirerek genişletir.

2016 yılında VMware açık kaynaklı Harbor, Temmuz 2018'de CNCF'ye katıldı ve Haziran 2020'de mezun oldu - CNCF'ye ilk açık kaynak kaydı yapmak için bu dönüm noktası hem olgunluğunu hem de topluluk desteğini yansıtmaktadır.

Set Harbor Apart

Harbor, temel Docker kayıtlarından ve hatta ticari alternatiflerden birkaç işletme sınıfı yeteneklerinden ayırt eder:

Harbor Over Alternatives'i Ne Zaman Seçilir

Organizasyonlar, özel bir konteyner kayıtlarına ihtiyaç duyduklarında, kayıt yaptıran güvenlik kontrollerine ihtiyaç duyduklarında, havayla kaplı ortamlar, düzenlenmiş endüstriler ve çoklu bulut kurulumları tipik kullanım koşulları olarak kullanılır.

Docker Hub ile karşılaştırıldığında, Harbor yerleşik kırılgan tarama, görüntü imzalama, RBAC, denetim oturumu ve çok-bölgeci replikasyonu sunuyor - Docker Hub'ın ücretli planları veya mevcut olmayan kuruluşlar için veri tutma gereksinimleri, uyumluluk görevleri veya sınırsız özel havuzlar için ihtiyaç duyuyor.

Harbor'ın Çok katmanlı Mimarisini Anlamak

Kuruluma girmeden önce, Harbor'ın multi-tanancy nasıl çalıştığını ve bu mimarlıkın örgütsel izolasyonu ve güvenliği nasıl desteklediğini anlamak önemlidir.

Tenant Boundaries

Harbor içindeki eserler bir proje tarafından sahip ve bu gruplama, takım, bölüm veya müşteri tarafından yapılan eserler setleri için ayarlanmayı sağlar. Projeler, Harbor'daki çok katmanlı isim alanlarının temel birimi olarak hizmet eder, ayrı konteyner görüntüleri, Helm grafikler, ve diğer OCI eserleri gibi davranır.

Harbor'ın çok katmanlı yetenekleri, ekip, çevre tarafından izole edilen modeller veya davayı kullanan projeler içerir, kimin itebileceğini kontrol etmek, çekmesini veya işletmek için iyi niyetli RBAC'yı kullanın.Bu proje bazlı izolasyon, diğer onantların açık izin vermeleri olmadan başka eserlerine erişemeyeceğinden emin olur.

Rol Tabanlı Erişim Kontrolü (RBAC)

Kullanıcılar "projes" ile farklı depolara erişebilir ve bir kullanıcı, bir proje altında görüntü veya Helm grafikler için farklı bir izine sahip olabilir. Harbor, proje seviyesinde atanmış rollerle sofistike bir RBAC sistemi uygular:

Bu granular izni modeli, kuruluşların en az ayrıcalık ilkesini uygulamalarına izin verir, kullanıcıların ve otomatik sistemlerin ihtiyaç duydukları kaynaklara erişimi vardır.

Kimlik Doğrulama Entegrasyonu

En basit durumlarda, kullanıcılar Harbor'un kendisi tarafından oluşturulabilir ve içsel olarak yönetilebilir, ancak bu özellikle de ölçeklendirmiyor, böylece Harbor ayrıca OIDC, Active Directory ve LDAP gibi diğer popüler hizmetlere entegrasyon sağlar. Bu esneklik, organizasyonların mevcut kimlik yönetimi altyapısını artırmasını sağlar ve sistemlerdeki tutarlı erişim politikalarını sağlar.

Önlemler ve Sistem Gereksinimleri

Harbor'ı yüklemeden önce, ortamınızın bir üretim hazır dağıtım için gerekli gereklilikleri yerine getirmesini sağlayın.

Donanım Gereksinimleri

Birden fazla kiracıyı destekleyen bir üretim için aşağıdaki minimum özellikleri göz önünde bulundurun:

Yazılım Önleri

Harbor aşağıdaki yazılım bileşenleri gerektirir:

Network and Domain Yapılandırma

Bir üretim dağıtım için, ihtiyacınız olacak:

Limanı yükleyin: Step-by-Step Guide

Harbor, Herhangi bir Kubernet ortamında veya Docker desteği ile bir sistem üzerinde kurulabilir. Bu kılavuz hem yükleme yöntemlerini kapsar, Docker Boşluk için Docker Boşaltma yaklaşımı ile başlayın, Helm grafikler kullanarak Kubernetes dağıtımını takip edin.

Yöntem 1: Docker Compose ile Harbor

Docker Compose, Harbor up ve koşmak için en hızlı yol sağlar, onu geliştirme ortamları ve daha küçük dağıtımlar için ideal hale getirir.

Adım 1: Docker ve Docker Kome

İlk olarak, Docker ve Docker Kome sizin sisteminizde kuruludur. Ubuntu'da, onları aşağıdaki komutlarla yükleyebilirsiniz:

# Update package index
sudo apt update

# Install prerequisites
sudo apt install -y ca-certificates curl gnupg lsb-release

# Add Docker's official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Set up Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker Engine and Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker

# Verify installation
docker --version
docker compose version

Adım 2: Download Harbor

Harbor serbest bırakılması ve Kurulum veamp'ı takip edin; Harbor'ı kurmak için yapılandırma Kılavuzu. Resmi GitHub repository'den son Harbor'ı indirmek için:

# Download the latest Harbor release
cd /opt
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep '.tgz$' | wget -i -

# Extract the archive
tar xzvf harbor-offline-installer-*.tgz

# Navigate to Harbor directory
cd harbor

Adım 3: Configure Harbor

Harbor, çevreniz için özelleştirilmiş olması gereken bir YAML yapılandırma dosyasını kullanır:

# Copy the template configuration file
cp harbor.yml.tmpl harbor.yml

# Edit the configuration file
nano harbor.yml

Değiştirilecek Anahtar yapılandırma parametreleri:

# The hostname or IP address of your Harbor server
hostname: harbor.yourdomain.com

# HTTP configuration
http:
 port: 80

# HTTPS configuration (recommended for production)
https:
 port: 443
 certificate: /path/to/your/certificate.crt
 private_key: /path/to/your/private_key.key

# Harbor admin password (change this!)
harbor_admin_password: YourSecurePassword123!

# Database configuration
database:
 password: DatabasePassword123!
 max_idle_conns: 100
 max_open_conns: 900

# Data storage location
data_volume: /data

# Log configuration
log:
 level: info
 local:
 rotate_count: 50
 rotate_size: 200M
 location: /var/log/harbor

Adım 4: Genrate SSL Sertifikaları (Opiyonel ama Öneri)

Üretim dağıtımları için CA imzalı sertifikalar kullanın. Test için, kendini imzalanmış sertifikalar oluşturabilirsiniz:

# Create certificate directory
mkdir -p /opt/harbor/certs
cd /opt/harbor/certs

# Generate private key
openssl genrsa -out harbor.key 4096

# Generate certificate signing request
openssl req -new -key harbor.key -out harbor.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=harbor.yourdomain.com"

# Generate self-signed certificate (valid for 365 days)
openssl x509 -req -days 365 -in harbor.csr -signkey harbor.key -out harbor.crt

# Update harbor.yml with certificate paths
# certificate: /opt/harbor/certs/harbor.crt
# private_key: /opt/harbor/certs/harbor.key

Adım 5: Trivy Browser ile Harbor

Trivy, Harbor v2.2'den beri varsayılan tarayıcıdır. Trivy kırılgan tarayıcı ile Harbor'ı kurmak için:

# Run the installation script with Trivy
sudo ./install.sh --with-trivy

# Verify all containers are running
docker compose ps

Liman-core, liman-portal, liman-db, kayıt, trivy-adapter ve diğerleri dahil olmak üzere tüm Harbor hizmetlerini göstermeniz gerekir.

Adım 6: Access Harbor Web Interface

Kurulum tamamlandığında, web tarayıcınızda Harbor UI'ye https://harbor.yourdomain.com ve oturum açma işlemine yönetici kullanıcı ve şifre ile giriş yapabilirsiniz.

Yöntem 2: Helm ile Kubernetes'te Liman Oluşturun

Liman'ı Kubernetes'te dağıtmak istiyorsanız, lütfen Harbor grafiğini kullanın. Kubernetes dağıtım daha iyi ölçeklenebilirlik, yüksek kullanılabilirlik ve bulut kaynaklı ekosistemlerle entegrasyon sağlar.

Adım 1: Add Harbor Helm Repository

# Add Harbor Helm repository
helm repo add harbor https://helm.goharbor.io

# Update Helm repositories
helm repo update

# Create namespace for Harbor
kubectl create namespace harbor

Adım 2: Helm Değerleri Dosyası Oluşturun

Liman dağıtımını yapılandırmak için özel bir değer dosyası oluşturun:

cat > harbor-values.yaml <<EOF
expose:
 type: ingress
 tls:
 enabled: true
 certSource: secret
 secret:
 secretName: harbor-tls
 ingress:
 hosts:
 core: harbor.yourdomain.com
 className: nginx
 annotations:
 cert-manager.io/cluster-issuer: "letsencrypt-prod"

externalURL: https://harbor.yourdomain.com

persistence:
 enabled: true
 resourcePolicy: "keep"
 persistentVolumeClaim:
 registry:
 storageClass: "fast-ssd"
 size: 500Gi
 database:
 storageClass: "fast-ssd"
 size: 10Gi
 redis:
 storageClass: "fast-ssd"
 size: 1Gi

harborAdminPassword: "ChangeThisPassword123!"

database:
 type: internal

redis:
 type: internal

trivy:
 enabled: true

notary:
 enabled: true
EOF

Adım 3: Helm aracılığıyla Harbor

# Install Harbor
helm install harbor harbor/harbor
 -n harbor
 -f harbor-values.yaml

# Wait for all components to be ready
kubectl wait --for=condition=available --timeout=600s
 deployment --all -n harbor

# Check pod status
kubectl get pods -n harbor

# Get Harbor admin password
kubectl get secret harbor-core -n harbor -o jsonpath='{.data.HARBOR_ADMIN_PASSWORD}' | base64 -d

Limanda Multi-tenancy

Harbor kurulduktan sonra, bir sonraki adım birden fazla takım, bölüm veya kuruluşunuzdaki müşterileri desteklemek için çok fazla bebek bulmaktır.

Tenants için projeler yaratmak

Limanda farklı ekipler veya bir işletme içindeki alt organizasyonlar tarafından saklanan eserleri ayırmak için birden fazla proje oluşturabilirsiniz. Projeler Harbor web arayüzü veya programmatik olarak API aracılığıyla oluşturulabilir.

Web Interface aracılığıyla projeler oluşturmak

Harbor portalı aracılığıyla bir proje oluşturmak için:

  1. Giriş yapın, bir yönetici olarak
  2. Sol navigasyon menüsünde "Projects" üzerine tıklayın
  3. "NEW PROJE" düğmesine tıklayın
  4. Proje ayarları yapılandırın: [[0.)[0] [Dönetici:2)Proje Adı: [DDDDDDDDÜDÜDÜDÜDÜDÜDÜDÜSÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ
  5. [FONT=0)Erişim Seviye:[Dönetici:[Dönetici:0)[[değiştir | kaynağı değiştir) veya "Özel" (gödeme doğrulama)
  6. [FONT:0]Storage Konta:[Dönetici:[Dönetici: 1 ) Bir tek kiracıyı aşırı depolamak için bir sınır kurmak
  7. [FONT:0)Proxy Cache:[Dönetici:[Dönetici:0)Projeyi dış kayıt için bir proxy önbellek olarak yapılandırın
  8. Projeyi oluşturmak için "OK" tıklayın

API aracılığıyla projeler oluşturmak

Otomatik proje oluşturma veya toplu işlemler için, Harbor REST API'yi kullanın:

# Set Harbor credentials
HARBOR_URL="https://harbor.yourdomain.com"
HARBOR_USER="admin"
HARBOR_PASSWORD="YourSecurePassword123!"

# Create multiple projects
for project in team-frontend team-backend team-ml customer-alpha customer-beta; do
 curl -X POST "${HARBOR_URL}/api/v2.0/projects"
 -H "Content-Type: application/json"
 -u "${HARBOR_USER}:${HARBOR_PASSWORD}"
 -d "{
 "project_name": "${project}",
 "public": false,
 "storage_limit": 107374182400
 }"
 echo "Created project: $project"
done

# List all projects
curl -X GET "${HARBOR_URL}/api/v2.0/projects"
 -u "${HARBOR_USER}:${HARBOR_PASSWORD}" | jq .

Project-Level Ayarları

Harbor'daki her proje güvenlik politikaları ve kaynakları sınırlarına uygulayan ayarlarla bağımsız olarak yapılandırılabilir.

Storage Quotas

Depolama kotaları bireysel kiracıları aşırı disk alanı kullanmaktan alıkoyuyor:

  1. Projeye Navigate
  2. "Configuration" sekmesine tıklayın
  3. "Kaynak Yönetimi" altında, depolama kotasını (örneğin 100 GB) kurdu.
  4. Click " Save"

Vulnerability Scanning Politikaları

Görüntüler için otomatik kırılgan tarama projesine itti:

  1. "Configuration" projesine git
  2. Enable "Automatically tarama görüntüleri it"
  3. “Örücük görüntüleri yürütmekten kaçın” kritik açıklarla görüntüleri engellemek için
  4. Dize ciddiyet eşi (örneğin, "Yüksek" veya "Critical" açıklarıyla fotoğraf)

Tag Retention Politikaları

Yeniden yükleme politikaları depolamayı verimli bir şekilde yönetmek için otomatik olarak eski veya kullanılmamış görüntüleri temizliyor:

  1. Projeye "Policy" sekmesini açın
  2. Tag Retention altında "Add Rule"
  3. Konformasyon kriteri: [[0)DÜDÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ: 0:0)ÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜye Olmayan Eşleştirme Modeli (EŞÜN, İZMİR, İZMİR)
  4. Retention rule (e.g., "en son zamanlarda 10 eser itti")
  5. Tag eşleştirme modeli (örneğin, dış "daha doğrusu" ve "projeksiyon" etiketleri)
  6. "Add" ve sonra "Run Now" politikası test etmek için

İçerik Güven ve Görüntü İşareti

Sadece imzalanmış görüntülerin çekilmesini sağlamak için enable içerik güven:

  1. Projede "Configuration", "Enable content trust" etkinleştirin.
  2. Bu, Docker Content Trust veya Cosign kullanarak imzalanması gereken görüntüler gerektirir
  3. İmzalanmamış görüntüler, kullanıcıların onları çekmeye çalışırken reddedilecektir

Kullanıcı Erişimi ve İzinleri Yönetin

Etkili multi-tenancy, kullanıcı erişim ve izinlerin dikkatli bir şekilde yönetilmesini gerektirir, ancak belirli kaynaklarına erişebilir.

Kullanıcı Yönetimi Stratejileri

Harbor, birden fazla kimlik doğrulama geri uçlarını destekler, organizasyonunuzun kimlik yönetim altyapınıza en iyi olan yaklaşımı seçmenize izin verir.

Yerel Kullanıcı Yönetimi

Küçük dağıtımlar veya test için, doğrudan Harbor'da kullanıcılar oluşturabilirsiniz:

  1. Giriş yapın
  2. "Yönetim" → "Kullanıcılar"
  3. Click "NEW USER"
  4. Kullanıcı ayrıntılarıyla doldurun (kullanıcı adı, e-posta, tam adı, şifre)
  5. Click "OK"

LDAP/Active Directory Entegrasyon

İşletme dağıtımları için, mevcut LDAP veya Active Directory ile Harbor'u entegre edin:

  1. "Yönetim" → "Configuration" → "Authentication"
  2. "LDAP"ı kimlik doğrulama modu olarak seçin
  3. LDAP ayarları: [[0.)[0] [FONT=2}LDAP URL: [Dönetici: 3][/FONT=0}[0]
  4. [FONTAP Arama DN:[Dönem:[Dönem: 1) cn=admin,dc=yourdomain,dc=com=com
  5. [FONTAP Base DN:[Dönem: 0: 3) dc = yourdomain,dc=com
  6. [FONT=0)) <>[[0]
  7. [FONT=0) <24|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|)
  8. [FONT=0) <0}[[Dönem: 1)
  9. Bağlantıyı test edin
  10. Click " Save"

OIDC Entegrasyonu

Okta, Auth0 veya Keycloak gibi modern kimlik sağlayıcıları için:

  1. "Authentication" ayarlarında, "OIDC" seçeneğini seçin.
  2. Configure OIDC parametreleri: [[0) [[0) [[Dönetici:0][Dönetici:0)[Dönetici: [Dönetici: [Dönetici: 3 )
  3. [FONT:0)OIDC Endpoint: [Dönem: [Dönetici:0]
  4. [FOIDC Müşteri Kimlik: [[Dönetici:0)
  5. [FOIDC Müşteri Gizli:[Dönem: 0)[Dönetici:0)
  6. [FOIDC Scope:[Dönetici: açık, profil, email
  7. Verify ve kurtarmak

Kullanıcılara Projelere Davet Etmek

Kullanıcılar kimlik doğrulaması yapılırsa, uygun rollerle projelere tayin edin:

  1. Projeye Navigate
  2. "Members" sekmesine tıklayın
  3. Üye eklemek için "USER" veya "GROUP"
  4. Kullanıcı veya grup için arama
  5. Uygun rolü seçin: [[0.0.DÜDÜDÜT:2)En büyük: [DÜDÜ:3) Görüntüleri çekmek için sadece erişim
  6. [FONT:0)Developer:[Dönetici:[Döncü: · 1 ) Görüntüleri itip çekebilir ve çizebilir
  7. [FONT:0)Maintainer:[Dönetici:[Dönetici:0)Proje üyelerini yönetebilir ve yapılandırılabilir ayarları yapılandırabilir
  8. [FONT:0)Proje Yöneticisi: [Dönetici: Proje üzerinde tam kontrol
  9. Click "OK"

CI/CD Entegrasyonu için Robot Hesapları

Robot hesapları, belirli izinlerle Harbor'da servis hesaplarıdır, CI/CD boru hatları gibi otomatik işlemler için kullanılan ve kimlikleri gerektiren görüntüleri çekmek veya çekmek için kullanılır.

Bir robot hesabı oluşturmak için:

  1. Projeye Navigate
  2. Click "Robot Hesapları" sekmesi
  3. Click "NEW ROBOT ACCOUNT"
  4. Robot hesabının yapılandırın: [[0.)][0] [Dönetici:2|Dönetici: [Dönetici: 3) Descriptive name (e.g., "ci-borline-bot")
  5. [FONT=0)Expiration zamanı:[[Dönlendirme süresi:[Dönlendirme süresi:[Dönlendirme süresi:[Dönlendirme süresi:[Dönlendirme tarihi: 1 )
  6. [FONT:0) İzinler:[[Dönler ve eylemler (push, çekme, silme)
  7. Click "ADD"
  8. Hemen üretilen token'i kopyalayın ( tekrar gösterilmeyecektir)

CI/CD boru hattınızda robot hesabı kullanın:

# In your CI/CD pipeline (e.g., GitLab CI, Jenkins)
docker login harbor.yourdomain.com -u 'robot$ci-pipeline-bot' -p 'TOKEN_HERE'
docker build -t harbor.yourdomain.com/team-frontend/app:${CI_COMMIT_SHA} .
docker push harbor.yourdomain.com/team-frontend/app:${CI_COMMIT_SHA}

Multi-tenant Çevreler için Güvenlik Özellikleri

Güvenlik, birden çok takım veya müşteri altyapısını paylaştığı çok sayıda ortamda parandır. Harbor, konteyner tedarik zincirinizi korumak için kapsamlı güvenlik özellikleri sunar.

Vulnerability Scanning

Trivy gibi popüler görüntü tarayıcılarını kullanarak, görüntüler bilinen açıklar için otomatik olarak taranabilir ve bu taramaların sonuçları, el ele alınmamış güvenlik sorunları ile eserler çekmesini engellemek için yararlanabilir.

Otomatik Tarama

Sistem veya proje seviyesinde enable otomatik tarama:

  1. Sistem çapında tarama için: "Yönetim" → "Kayıt Hizmetleri" → Configure Trivy ayarları
  2. Proje düzeyinde tarama için: Project → "Configuration" → Enable "Automatically scan Pictures on push"
  3. Yeni keşfedilen açık açıklar için mevcut görüntüleri yeniden kurmak için planlanan taramalar set up planlı taramalar

Vulnerability Policies

Hedeflenen görüntülerin dağıtılmasını engellemek için yapılandırın:

  1. Projede "Configuration", "Örleyici görüntülerden kaçınma" etkinleştirin.
  2. Erkeğin (örneğin, “Yüksek” veya “Critical”) kesişir.
  3. Bu eşiğin üzerindeki veya yukarıdaki görüntüler çekilmiş olamaz

Viewing Scan Sonuçlar

Güvenlik tarama sonuçlarını görüntülemek için:

  1. Projeye ve havuza Navigate
  2. Bir sanat / grafik üzerinde tıklayın
  3. ayrıntılı tarama sonuçları için "Vulner yükümlülükleri" sekmesini görüntüle
  4. CVE ayrıntıları, ciddiyet seviyeleri ve mevcut düzeltmeler

Resim İşaret ve İçerik Güvenir

Harbor, Docker Content Trust (daha önceleme ve kanıtlayıcılığı garanti etmek için) kullanarak konteyner görüntülerini imzalamayı ve dağıtılmamasını engelleyen politikalar da aktif olabilir.

Enabling Content Trust

Bir proje için içerik güven sağlamak:

  1. Projeye "Configuration" projesine geçiş
  2. Enable "Enable content trust"
  3. Enable "Sunlanmamış görüntüler çektikten sonra"

Docker Content ile fotoğraf çekmek

# Enable Docker Content Trust
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://harbor.yourdomain.com:4443

# Push and sign an image
docker push harbor.yourdomain.com/team-frontend/app:v1.0

# The first push will prompt you to create signing keys
# Follow the prompts to set passphrases for root and repository keys

Cosign ile oturum açın

Modern imza akışları için, Cosign kullanın:

# Install Cosign
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign

# Generate key pair
cosign generate-key-pair

# Sign an image
cosign sign --key cosign.key harbor.yourdomain.com/team-frontend/app:v1.0

# Verify signature
cosign verify --key cosign.pub harbor.yourdomain.com/team-frontend/app:v1.0

Denetim Logging ve Uyum

Tüm işlemler depoya girişler yoluyla takip edilir. Harbor tüm kullanıcı faaliyetlerini takip eden kapsamlı denetim loglarını koruyor, uyumluluk gerekliliklerini karşılamak ve güvenlik olayları araştırmak daha kolay hale getiriyor.

Viewing Audit Logs

  1. "Yönetim" → "Logs"
  2. Filtre girişleri: [[0:0)Username
  3. Operasyon türü (push, çekme, silin, yaratır, vb.)
  4. Kaynak türü (proje, repository, artifact)
  5. Zaman aralığı
  6. Dış analiz veya arşiv için ihracat logları

SIEM Systems ile bütünleşme

İşletme uyum için, Harbor loglarını SIEM sisteminizle entegre edin:

# Configure Harbor to send logs to syslog
# Edit harbor.yml
log:
 level: info
 external_endpoint:
 protocol: tcp
 host: syslog.yourdomain.com
 port: 514

# Restart Harbor to apply changes
docker compose down
docker compose up -d

Ağ Güvenliği ve Erişim Kontrolü

HTTPS'yi yapılandırın

Her zaman HTTPS'yi geçişte şifreli verileri şifrelemek için kullanın:

  1. Güvenilir bir CA'dan SSL/TLS sertifikalarını alın (Hareket, DigiCert, vs.)
  2. Sertifika yolları ile birlikte liman.y ml
  3. Yeniden Başlayın Harbor

Güvenlik Duvarı Yapılandırma

Duvara güvenlik duvarı kuralları kullanarak:

# Allow HTTPS traffic
sudo ufw allow 443/tcp

# Allow HTTP (if needed for redirect)
sudo ufw allow 80/tcp

# Allow Notary (if using Docker Content Trust)
sudo ufw allow 4443/tcp

# Restrict access to specific IP ranges (optional)
sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp

# Enable firewall
sudo ufw enable

Çok yerinde Deployments için Resim Replication

Görüntüler ve grafikler, yüklemeye yardımcı olmak için kullanılan bir çoğaltmayı otomatik olarak tekrarlayabilir ve çoklu bulut senaryolarında çoklu konum dağıtımları elde edebilir.

Set Up Replication Endpoints

Replication hedefleri diğer Harbor örneklerini içeriyor, Docker Hub, AWS ECR, Google GCR/GAR, Azure ACR ve herhangi bir OCI-compliant kayıt.

Bir replikasyon endpoint yapılandırmak için:

  1. "Yönetim" → "Yönetici"
  2. Click "NEW ENDPOINT"
  3. Configure endpoint details: [[Üyetim:0)] [Dönetici:2)[Dönetici: [Dönetici: 3) Kayıt türü (Harbor, Docker Hub, AWS ECR, vb.) seçin.
  4. [FONT:0) İsim:[Dönetici:)
  5. [[Dönemli URL:[Dönemli URL:) Kayıt URL
  6. [FONT=0) E-posta:[değiştir | kaynağı değiştir]
  7. Bağlantıyı test edin
  8. Click "OK"

Yenidenleme Kuralları Oluşturma Kuralları

Otomatik olarak senkronize edilen görüntüleri tanımlamak için yeniden uygulama politikaları tanımlayın:

  1. "Yönetim" → "Replications"
  2. "NEW REPLICATION RULE"
  3. Kuralı yapılandırın: [Üye:0] [DÜye:2)[Üye Olmayan Kural adı:[Dönetici:0)
  4. [0]Replication modu:[[Dönemli) veya Pull ( Uzaktan) veya Pull ( Uzaktan)
  5. [FONT=0) Kaynak kayıt:[[Dönem:0) Kaynak:[Dönem:
  6. [FONT:0)Destination kayıt:[DFLT:1) Hedef uç noktası seçin
  7. [FONT:0)Trigger modu:[Dönetici:[Dönetici: 1) Manual, Scheduled veya Event-based
  8. [FONT:0) Direktifler:[Dönler: 0,0)[[değiştir | kaynağı değiştir]
  9. Click "SAVE"

Yeniden çoğaltma için Vakaları Kullanın

Harbor ile Çalışma: Pratik İş Akışları

Harbor çok fazla kişilik için yapılandırılırken, takımlar konteyner iş akışları için kullanmaya başlayabilir.

Ikincileri Harbor'a Bağlamak

Harbor'a bir görüntü itmek için:

# Log in to Harbor
docker login harbor.yourdomain.com

# Tag your image with Harbor registry path
docker tag myapp:latest harbor.yourdomain.com/team-frontend/myapp:v1.0

# Push the image
docker push harbor.yourdomain.com/team-frontend/myapp:v1.0

Harbor'dan Fotoğraflar

# Log in to Harbor (if pulling private images)
docker login harbor.yourdomain.com

# Pull the image
docker pull harbor.yourdomain.com/team-frontend/myapp:v1.0

# Run the container
docker run -d harbor.yourdomain.com/team-frontend/myapp:v1.0

Kubernetes ile Liman Kullanımı

Kubernetes'teki Harbor'dan görüntüler çekmek için, bir görüntü gizli:

# Create a Docker registry secret
kubectl create secret docker-registry harbor-registry
 --docker-server=harbor.yourdomain.com
 --docker-username=your-username
 --docker-password=your-password
 [email protected]
 -n your-namespace

# Reference the secret in your pod spec
apiVersion: v1
kind: Pod
metadata:
 name: myapp
spec:
 containers:
 - name: myapp
 image: harbor.yourdomain.com/team-frontend/myapp:v1.0
 imagePullSecrets:
 - name: harbor-registry

Dış Kayıtlar için Proxy Cache

Harbor'un proxy özelliği, Harbor'un dış kayıt için bir caching proxy olarak hareket etmesine, bant genişliği kullanımını azaltma ve çekme performansı geliştirmesine olanak sağlar.

Bir proxy önbellek projesini yapılandırmak için:

  1. Yeni bir proje oluşturun
  2. Proje türü olarak "Proxy Cache" seçin
  3. Hedef kayıt (Docker Hub, Quay.io, vs.) seçin.
  4. Gerekirse, gerekli olan bilgi
  5. Proxy önbellek yolu kullanarak Harbor aracılığıyla resim
# Instead of pulling from Docker Hub directly
docker pull nginx:latest

# Pull through Harbor proxy cache
docker pull harbor.yourdomain.com/dockerhub-proxy/library/nginx:latest

Backup and Disaster Recovery

Harbor dağıtımını korumak ve verileri iş sürekliliği için kritik.

Backing Up Harbor Data

Harbor, verilerini depolamak için bir veritabanı kullanır ve varsayılan olarak, Docker tarafından yönetilen bir PostgreSQL veritabanı kullanır.

Liman'ı geri almak için:

# Stop Harbor
cd /opt/harbor
docker compose down

# Backup the data directory
sudo tar -czf harbor-backup-$(date +%Y%m%d).tar.gz /data

# Backup the configuration
sudo cp harbor.yml harbor.yml.backup

# Backup the database (if using external database)
docker exec harbor-db pg_dump -U postgres registry > harbor-db-backup-$(date +%Y%m%d).sql

# Restart Harbor
docker compose up -d

Otomatik Backup script

#!/bin/bash
# harbor-backup.sh

BACKUP_DIR="/backup/harbor"
DATE=$(date +%Y%m%d-%H%M%S)
HARBOR_DIR="/opt/harbor"
DATA_DIR="/data"

# Create backup directory
mkdir -p $BACKUP_DIR

# Stop Harbor
cd $HARBOR_DIR
docker compose down

# Backup data volume
tar -czf $BACKUP_DIR/harbor-data-$DATE.tar.gz $DATA_DIR

# Backup configuration
cp $HARBOR_DIR/harbor.yml $BACKUP_DIR/harbor-config-$DATE.yml

# Restart Harbor
docker compose up -d

# Remove backups older than 30 days
find $BACKUP_DIR -name "harbor-*" -mtime +30 -delete

echo "Backup completed: $BACKUP_DIR/harbor-data-$DATE.tar.gz"

Bu senaryoyu cron ile programlamak:

# Run backup daily at 2 AM
0 2 * * * /usr/local/bin/harbor-backup.sh >> /var/log/harbor-backup.log 2>&1

Backup'tan geri almak

# Stop Harbor
cd /opt/harbor
docker compose down

# Restore data directory
sudo rm -rf /data
sudo tar -xzf /backup/harbor/harbor-data-20260402.tar.gz -C /

# Restore configuration
sudo cp /backup/harbor/harbor-config-20260402.yml /opt/harbor/harbor.yml

# Restart Harbor
docker compose up -d

İzleme ve Performans Optimizasyonu

Harbor'ın sağlığını ve performansını izlemek, kullanıcıların etki yapmadan önce sorunları tanımlamaya yardımcı olur.

İzleme Harbor Health

Harbor sağlık kontrol uç noktaları ortaya çıkarır:

# Check Harbor health
curl -k https://harbor.yourdomain.com/api/v2.0/health

# Expected response
{
 "status": "healthy",
 "components": [
 {"name": "core", "status": "healthy"},
 {"name": "database", "status": "healthy"},
 {"name": "redis", "status": "healthy"},
 {"name": "registry", "status": "healthy"}
 ]
}

Prometheus Metriks

Harbor, izleme için Prometheus metrics ortaya çıkıyor:

# Enable metrics in harbor.yml
metric:
 enabled: true
 port: 9090
 path: /metrics

# Scrape metrics with Prometheus
curl http://harbor.yourdomain.com:9090/metrics

Performans Optimizasyonu İpuçları

Garbage Collection

Garbage koleksiyonu, artık ihtiyaç duyulmayan blobs ve eserler ortadan kaldırmakla yeniden rezervasyon yapma alanıdır.

Çöp toplama:

  1. "Yönetim" → "Garbage Collection"
  2. Hemen koleksiyon için "GC Now"
  3. Veya düzenli çöp toplama (e.g., haftalık 2 AM)

Sorun Ortak Konuları Sorun Gidermek

Cannot Push Images

[FONT:0]Symptoms:[Dönem: “Öyleme: talep edilen kaynağa erişim reddedilir” hata

[FONT=0) ⁇ ⁇

SSL Sertifika Hataları

[FONT:0]Symptoms:[Dönem:[Dönemli yetkiyle imzalanmış sertifika” hatası

[FONT=0) ⁇ ⁇

Slow Image Push /Pull

[FONT:0]Symptomlar: [Döntgen: [Dönem: 1) Görüntü operasyonları aşırı zaman alır

[FONT=0) ⁇ ⁇

Veritabanı Bağlantı Sorunları

[FONT=0]Symptoms:[Dönem:[Döntgen:[Dönem:0] Harbor UI hataları gösterir veya yük yüklenemez

[FONT=0) ⁇ ⁇

Gelişmiş Multi-tenancy Scenarios

Müşteri Hizmetleri

Harbor, konteynerli yazılımları dış müşterilere dağıtmak için kullanılabilir:

Çok-Region Deployment

Küresel kuruluşlar için, Harbor'ı birden çok bölgede dağıtma:

Uyum ve Düzenleme Gereksinimleri

Düzenlenen endüstriler için (sağlık, finans, hükümet):

Multi-tenant Harbor Deployments için en iyi uygulamalar

Güvenlik En İyi Uygulamaları

Operasyonel En İyi Uygulamalar

Organizasyon En İyi Uygulamaları

DevOps Ekosystem ile bütünleşme

CI/CD Boru Entegrasyonu

Örnek GitLab CI boru hattı:

stages:
 - build
 - scan
 - deploy

variables:
 HARBOR_REGISTRY: harbor.yourdomain.com
 HARBOR_PROJECT: team-frontend
 IMAGE_NAME: myapp

build:
 stage: build
 script:
 - docker login -u robot$ci-bot -p $HARBOR_TOKEN $HARBOR_REGISTRY
 - docker build -t $HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA .
 - docker push $HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA

scan:
 stage: scan
 script:
 - |
 # Wait for Harbor to scan the image
 sleep 30
 # Check scan results via Harbor API
 SCAN_STATUS=$(curl -u robot$ci-bot:$HARBOR_TOKEN
 "$HARBOR_REGISTRY/api/v2.0/projects/$HARBOR_PROJECT/repositories/$IMAGE_NAME/artifacts/$CI_COMMIT_SHA"
 | jq -r '.scan_overview.scan_status')
 if [ "$SCAN_STATUS" != "Success" ]; then
 echo "Vulnerability scan failed"
 exit 1
 fi

deploy:
 stage: deploy
 script:
 - kubectl set image deployment/myapp myapp=$HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA
 only:
 - main

Webhook Entegrasyon

Görüntüler itildiği zaman eylemleri tetikleyen webhooks:

  1. Projeye "Webhooks" projesine geçiş
  2. Click "NEW WEBHOOK"
  3. Webhook: [[Üye:0) [[Dönetici:0][Dönemli URL:[Dönetici: 3)[Üye Olmayan Kullanıcı URL:[Üye Olmayan URL:[Üye Olmayan URL:[Üye Olmayan URL:0)
  4. [FONT:0] Events:[[Dönem:[Dönem: · 1) Uyarıya olayları seçin (push, pull, delete, tarama tamamlandı)
  5. [FONT:0)Authentication:[Dönemli:[Döncüm:[Döncüm: 1)
  6. Webhook test et
  7. Click "CONTINUE"

Helm Chart Repository

Harbor ayrıca Helm grafik repository olarak hizmet edebilir:

# Add Harbor as Helm repository
helm repo add myteam https://harbor.yourdomain.com/chartrepo/team-frontend
 --username your-username
 --password your-password

# Push a Helm chart to Harbor
helm package ./mychart
helm push mychart-1.0.0.tgz myteam

# Install from Harbor
helm install myapp myteam/mychart

Future-Proofing Your Harbor Deployment

Güncellemelerle Şimdiki konum

v2.15.0 ile başlayın, Harbor serbest bırakılması eserler, Cosign'ı gerçek ve bütünleşmeyi sağlamak için kriptografik olarak imzalanmıştır.

# Download Harbor release and signature
wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz
wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz.sigstore.json

# Verify signature
cosign verify-blob
 --bundle harbor-offline-installer-v2.15.0.tgz.sigstore.json
 --certificate-oidc-issuer https://token.actions.githubusercontent.com
 --certificate-identity-regexp '^https://github.com/goharbor/harbor/.github/workflows/publish_release.yml@refs/tags/v.*$'
 harbor-offline-installer-v2.15.0.tgz

Scaling Thinkations

Organizasyonunuz büyüdükçe, düşünün:

Gelişen Kullanım Vakaları

Harbor her zaman OCI-compliant olmuştur, yani OCI Dağıtımı'na uygun herhangi bir sanatifactı depolayabilir ve OCI şartnamesinin eskizibilitesi, AI modellerinin artık aynı güvenlik, yönetim ve operasyonel olgunluğa sahip olabileceği anlamına gelir.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Harbor ile çok katmanlı bir Docker kayıt inşa etmek, mevcut paradigma operasyonelleri yönetmek ve modern konteyner imajı yönetimi ihtiyaçlarını karşılamak için güçlü, güvenli ve ölçeklenebilir bir çözüm sunuyor. Harbor boşlukları açık kaynak olarak, işletme sınıfı konteyner resmi yönetimine getiren bir şirket-grad konteyner kaydı olarak, mevcut paradigma operasyonel yönetimle sorunsuz bir şekilde bütünleştirir.

Bu kılavuzda belirtilen uygulamaları uygulamak - uygun kurulum ve yapılandırmadan güvenlik zorlaştırmaya, çok katlı bir kuruluma ve operasyonel en iyi uygulamaları uygulamaya koymak - kuruluşunuzun ihtiyaçlarına hizmet eden bir üretim hazırla-okuy Harbor dağıtımını bugün yapabilirsiniz.

Başarılı Harbor için Key takeaways multi-tenancy:

Küçük bir gelişim ekibi için konteynerleri yönetiyorsanız veya yüzlerce müşteriye hizmet eden geniş ölçekli bir çok katmanlı platform işletmek, Harbor, başarılı olmak için gereken özellikleri, esnekliği ve topluluk desteği sağlar.Temelleri ile başlayın, güvenlik en iyi uygulamaları uygulayın ve yavaş yavaş yavaş yavaş yavaş yavaş ihtiyaçlarınız geliştikçe gelişmiş özellikleri uygulayın.

Daha fazla bilgi ve kaynaklar için, 03. Sezonun resmi olarak yer alan "[Dönetici:0)" ⁇ .The Harbor web sitesi[Dönetici:2)GitHub repository) , Slack'deki topluluğuna katılmak ve kapsamlıFLT:4'a danışın.[DÜye Olmayanlar İçin Tıklayınız.