1、Harbor的定義與核心作用
-
定義:
Harbor是由VMware開源的企業級容器鏡像倉庫系統,后捐贈給 CNCF (Cloud Native Computing Foundation)。它基于Docker Registry擴展了企業級功能,用于存儲、分發和管理容器鏡像(如Docker、OCI標準鏡像)及其他制品(如Helm Chart、CNAB等)。 -
核心作用:
- 鏡像管理:提供安全、高效的鏡像存儲與版本控制。
- 權限控制:支持細粒度的訪問權限管理。
- 安全掃描:集成漏洞掃描工具(如Clair)確保鏡像安全。
- 鏡像復制:支持跨數據中心或云環境的鏡像同步。
- 審計日志:記錄用戶操作,滿足合規性要求。
2、Harbor的核心功能
(1)、企業級權限管理
- RBAC(基于角色的訪問控制):
- 支持按項目分配用戶權限(如Guest、Developer、Admin)。
- 可自定義角色,根據用戶的角色來管理對項目和資源的訪問權限,滿足多團隊協作需求。
- 集成身份認證:
- 支持對接LDAP/AD,與企業現有用戶體系無縫集成。
(2)、鏡像安全與掃描
- 漏洞掃描:
- 集成Clair等工具,自動掃描鏡像中的已知漏洞。
- 可配置鏡像推送時的自動掃描策略。
- 內容信任:
- 支持鏡像簽名(通過Notary),確保鏡像來源可信。
擴展:Clair
Clair是一個開源項目,專注于為容器鏡像提供漏洞靜態分析的能力。它由CoreOS開發(后來CoreOS被Red Hat收購),旨在幫助用戶識別并解決容器鏡像中的安全問題。通過分析容器鏡像的各個層,并將它們與已知的安全漏洞數據庫進行比較,Clair能夠檢測出其中包含的軟件包是否有任何公開的、已知的安全漏洞。
Clair工作流程:
- 用戶提交需要掃描的容器鏡像至Clair。
- Clair分析該鏡像的各層,并提取出操作系統及軟件包的信息。
- 將提取的信息與Clair的漏洞數據庫進行對比。
- 根據對比結果生成漏洞報告,顯示受影響的軟件包、相關漏洞的描述以及建議的解決方案。
- 用戶根據報告更新鏡像,修補發現的漏洞。
(3)、鏡像生命周期管理
- 鏡像復制:
- 支持將鏡像同步到遠程Harbor實例(如災備中心或多地部署)。
- 垃圾回收:
- 自動清理未使用的鏡像層,釋放存儲空間。
- 版本控制:
- 支持保留或刪除舊版本鏡像,管理存儲成本。
(4)、用戶界面與擴展性
- Web界面:
- 提供圖形化界面管理項目、用戶、鏡像及操作日志。
- 鏡像刪除回收站:提供安全地刪除鏡像以及從回收站恢復的功能。
- API集成:
- 提供RESTful API,支持與CI/CD工具(如Jenkins、GitLab)集成。
- 存儲擴展:
- 支持將鏡像存儲在對象存儲(如AWS S3、阿里云OSS)中,實現高可用與彈性擴展。
3、Harbor的架構
(1)、架構分層
- 代理層:
- Nginx反向代理:接收客戶端請求(如瀏覽器、Docker CLI),并轉發到后端服務。
- 功能層:
- Portal:Web前端界面,基于Angular開發。
- Core Service:核心業務邏輯組件,包括UI、token服務、API服務等,處理用戶請求、權限驗證等業務邏輯。
- Job Service:異步任務處理(如鏡像復制、漏洞掃描)。
- Registry:基于Docker Registry的鏡像存儲引擎。核心組件,負責存儲Docker鏡像,并處理Docker客戶端的push和pull請求。
- Clair(可選):漏洞掃描工具。
- Log collector:收集各個組件的日志信息,便于問題排查和審計。
- 數據層:
- PostgreSQL:存儲元數據(如項目、用戶、權限)。
- Redis:緩存及任務隊列管理。
- 存儲后端:本地文件系統或對象存儲(如S3)。
(2)、核心組件
4、Harbor的安裝與配置
(1)、環境要求
- 硬件:至少2核CPU、4G內存、40G存儲。
- 軟件:Docker 1.10+、Docker Compose 1.6+。
(2)、安裝步驟(以v2.4.1為例)
1. 下載安裝包:
bash示例:
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz
tar zxvf harbor-online-installer-v2.4.1.tgz
cd harbor
2. 配置harbor.yml:
- 修改hostname(如harbor.example.com)。
- 配置數據庫密碼、管理員密碼等。
3. 啟動Harbor:
bash示例:
./install.sh
4. HTTPS 配置(可選):
- 生成SSL證書(如Let’s Encrypt)。
- 修改harbor.yml中的HTTPS相關配置,重啟服務。
5. 部署注意事項
- 內網環境:
- 需配置Docker客戶端信任私有倉庫
修改/etc/docker/daemon.json:
- 需配置Docker客戶端信任私有倉庫
{"insecure-registries": ["your-harbor-host:port"]
}
6.重啟docker
systemctl restart docker
7.鏡像推送測試
bash示例:
docker tag my-image your-harbor-host:port/project/image:tag
docker push your-harbor-host:port/project/image:tag
5、Harbor的典型應用場景
(1)、企業級私有鏡像管理倉庫
- 場景:
- 多團隊協作開發,需隔離鏡像倉庫。
- 需要權限控制(如限制敏感鏡像訪問)。
bash示例:
# 創建項目并分配權限
harbor admin create-project --project-name my-team --public false
harbor admin add-user-to-project --user admin --project my-team --role Admin
(2)、安全合規與漏洞管理
- 場景:
- 需確保鏡像無已知漏洞(如CVE)。
- 需審計鏡像操作日志。
- 操作:
- 在Harbor Web界面啟用漏洞掃描策略。
- 通過API或CLI導出審計日志。
(3)、跨數據中心鏡像同步
利用其鏡像復制功能,可以在不同的地理位置或數據中心之間同步鏡像,保證服務的連續性和可靠性。
- 場景:
- 在多地部署Kubernetes集群,需同步鏡像。
- 災備場景下鏡像備份到異地倉庫。
- 配置:
- 在Harbor中配置“復制目標”(遠程Harbor實例),設置定時任務。
6、Harbor的優勢與特點
(1)、與Docker Registry的對比
(2)、核心優勢
- 安全增強:漏洞掃描、鏡像簽名、細粒度權限控制。
- 易用性:圖形化界面簡化鏡像和項目管理。
- 企業級擴展:支持高可用部署、多云存儲、與 CI/CD 工具集成。
7、常見問題與解決方案
(1)、Harbor安裝后無法訪問Web界面?
- 原因:
- 防火墻未開放端口(默認80/443)。
- DNS解析問題(需確保hostname可解析)。
- 解決:
bash示例:
# 檢查服務狀態
docker ps -a | grep harbor
# 查看日志
docker logs harbor-core
(2)、鏡像推送時提示權限不足?
- 原因:
- 用戶未被分配項目權限。
- 未登錄Harbor或密碼錯誤。
- 解決:
bash示例:
docker logout your-harbor-host:port
docker login your-harbor-host:port -u admin -p your_password
(3)、如何啟用漏洞掃描?
- 步驟:
- 在Harbor Web界面啟用Clair組件。
- 進入項目設置,開啟漏洞掃描策略。
- 推送鏡像后,查看掃描結果。
8、總結
- Harbor是企業級容器鏡像管理的首選解決方案,通過權限控制、安全掃描、鏡像復制等功能,解決了Docker Registry的不足。
- 適用場景:
- 多團隊協作開發。
- 需要嚴格的安全合規要求。
- 跨數據中心或云環境部署。
- 關鍵價值:
- 安全可控:漏洞掃描與權限隔離。
- 高效管理:圖形化界面與自動化任務。
- 靈活擴展:支持多種存儲后端與多云環境。
逆風前行,Dare To Be!!!