Docker私有倉庫之Harbor神器
今天老jay為大家介紹一款開源的Harbor映象倉庫,它是用來管理docker映象的,映象倉庫提供了視覺化的Web介面去管理docker映象操作簡易,還能管理多個專案的映象許可權管理控制。下面我就給大家介紹一下Harbor自身特性和Harbor私有倉庫部署。
背景
VMware 公司去年3月開源了企業級容器 Registry 專案Harbor,由VMware中國研發的團隊負責開發。Harbor可幫助使用者迅速搭建企業級的 registry 服務,它提供了管理圖形介面, 基於角色的訪問控制 RBAC,映象遠端複製(同步),AD/LDAP整合、以及審計日誌等企業使用者需求的功能,同時還原生支援中文和英文,深受國內外使用者的喜愛。許多開源社群的開發者也給Harbor專案添磚加瓦,貢獻程式碼、反饋問題和提出建議。在大家共同努力下,Harbor專案推出以來,在GitHub獲得了近2000個點贊星星和500多個forks。
架構簡介
此圖來源:https://my.oschina.net/vmwareharbor/blog/650964
從上圖我們可以看出,Harbor系統由以下5個元件組成:
序號 |
元件 |
元件功能 |
1 |
Proxy |
提供反向代理服務,使用者的不同請求由 Proxy 分發到後端的 UI 或者 Registry 。 Harbor 中使用的是官方的 nginx 映象。 |
2 |
Registry |
Docker 官方映象倉庫, 主要提供映象的儲存和分發功能 。 |
3 |
Core services |
Harbor 專案的核心元件,主要提供許可權管理、審計、管理介面 UI 、 token service 以及可供其他系統呼叫的 API 等功能 |
4 |
Database |
提供資料持久化服務,採用了官方的 mysql 映象。 |
5 |
Log Collector |
負責收集其他容器的日誌並進行日誌輪轉。 |
特性
-
基於角色控制
使用者和倉庫都是基於專案進行組織的, 而使用者基於專案可以擁有不同的許可權。
-
基於映象的複製策略
映象可以在多個Harbor例項之間進行復制(同步)。 適用於負載平衡,高可用性,多資料中心,混合和多雲場景。
-
支援LDAP / AD
Harbour與現有的企業LDAP / ADA整合,用於使用者認證和管理。
-
影像刪除和垃圾收集
映象可以被刪除並且也可以回收映象佔用的空間。
-
圖形UI
使用者可以輕鬆瀏覽,搜尋映象倉庫以及對專案進行管理。
-
審計
對儲存庫的所有操作都進行跟蹤。
-
RESTful API
用於大多數管理操作的RESTful API,易於與外部系統整合。
-
輕鬆部署
同時提供線上和離線安裝程式。此外還提供了用於vSphere平臺(OVA)的虛擬裝置。
高可用設計
Registry高可用性(HA)是多數生產系統需要關心的問題,基本要求就是沒有單點故障。通常需要根據允許服務中斷的時間,以及可以承受的成本和損失,來確定採用的技術。下面介紹3種HA的方案。
4.1 磁碟共享負載均衡分發方案
這是一種比較標準的方案,就是多個的Registry例項共享同一個儲存,任何一個例項持久化到儲存的映象,都可被其他例項中讀取。透過前置負載均衡進來的請求,可以分流到不同的例項中去處理,實現了負載均衡,也避免了單點故障。
4.2 Harbor複製同步策略方案
這一種方案利用了Harbor映象複製特性,能將多個節點間採用多主複製策略來互相複製映象。倉庫沒有共享同一個儲存,前置採用負載均衡進來請求,只要配置好主從專案同步複製映象策略後映象會自動同步到對應Harbor例項 倉庫沒有共享同一個儲存,這種方案無法保障映象的一致性。即使有一個例項失效,另一個例項仍然可以提供服務,從而在一定程度上可以滿足HA的需求。
4.2 HA主從方案
這種方案是利用主機的HA軟體高可用來實現Harbor的HA,當節點一個Harbor節點主機故障時,HA軟體會自動切換到正常的Harbor節點,另一臺Harbor主機仍然可以提供服務,從而在一定程度上可以滿足HA的需求。
環境安裝
Harbor安裝有三種方式:
1、 線上安裝:安裝軟體從Docker hub下載Harbour的映象, 因此安裝軟體包非常小。
2、離線安裝:當主機沒有外網訪問許可權時,可以去Harbor官網下載離線軟體包來安裝,離線軟體包含預製映象,因此檔案大小較大。
3、虛擬裝置:如果要安裝Harbor作為vSphere整合容器(VIC)的登錄檔元件,或者在vSphere平臺上將Harbor作為獨立登錄檔使用,請下載OVA版本的Harbor
這裡我主要講述如何離線安裝harbor倉庫,另外還有兩種Harbor軟體安裝方式有興趣的朋友可以去參考Harbor的官方文件來驗證。
1、 下載Harbor離線軟體包
這裡我們會以harbor 0.4.5版本為例來安裝,首先要去Harbor官網去下載離線軟體包harbor-offline-installer-0.4.5.tgz,然後上傳伺服器解壓。 Harbor是由多個容器組成,因此需要藉助docker-compose去載入docker-compose.yml工程配置檔案來啟停Harbor元件容器。
2、 配置Harbor
注意docker 1.10以後,使用的registryv2映象倉庫,必須使用https方式來訪問。在Harbor中會有一個harbor.cfg檔案,需要提前做好配置修改。
需要配置的引數如下:
hostname:私有倉庫的主機名。可以是IP地址或是域名。
ui_url_protocol:使用者訪問私倉使用的協議,預設時http,這裡配置成https;
harbor_admin_password:harbor的管理員賬戶密碼,預設密碼是Harbor12345
指向正確的https證照檔案目錄
3、 https 證照配
修改配置檔案/etc/pki/tls/openssl.cnf
指定CA伺服器地址為harbor倉庫伺服器地址
然後執行以下命令來生成 ca.crt 和ca.key兩個證照檔案。注意這裡的CN=XXX和IP=XXX,如果Harbor用域名來訪問則XXX換成域名,如果使用的是IP訪問https訪問則配置ip, 將證照檔案生成到 /opt/cert目錄。
mkdir –p /opt/cert openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/cert/ca.key \ -subj '/C=xj/O=shsnc on Docker/CN=192.168.56.106/emailAddress=harbor@shsnc.com subjectAltName=IP=192.168.56.106' \ -x509 -days 365 -out /opt/cert/ca.crt |
4、 安裝並啟動Harbor
在安裝Harbor之前需要提前規劃一個比較大的儲存空間用於儲存Harbor的映象、資料庫和日誌。以保證後續Harbor系統執行良好。
./ prepare
系統已經提前準備好一個大的檔案系統 /opt/harbor/data,我們需要在執行prepare後,需要修改/opt/harbor/docker-compose.yml檔案中,並提前建立一些資料卷目錄:
mkdir -p /opt/harbor/data/registry
mkdir -p /opt/harbor/data/log
mkdir -p /opt/harbor/data/database
修改docker-compose.yml檔案內容如下:
執行install.sh指令碼安裝harbor並同時啟動harbor服務
./ install.sh
此時會啟動6個docker容器,可以用docker-compose ps檢視harbor元件的執行時的狀態。
5、 客戶端訪問harbor倉庫
需要訪問Harbor倉庫的客戶端,需要複製剛生成的證照:將harbor主機上的/opt/cert/ca.crt檔案,複製到客戶端宿主機上的:/etc/docker/certs.d/192.168.56.104/ca.crt
許可權管理和映象複製
1. 專案許可權管理
角色許可權分類:
專案管理員:專案管理、使用者管理、映象管理和複製策略等許可權
開發人員:只能針對自己專案映象具有pull/push 等許可權
訪客:只能針對自己專案映象具有 pull 許可權
1)給testrpo專案分配一個普通使用者xinju,角色許可權為開發人員
2 )透過xinju 使用者登入我們可以正常看到,testrpo專案,倉庫中有2個映象,許可權為開發人員,只要上傳和下載許可權。無刪除映象許可權。
3 )透過API 給專案新增使用者許可權(5 代表專案testrpo )
1)、檢視專案中擁有的許可權 curl -u "admin:Harbor12345" -X GET -H "Content-Type: application/json" "https://192.168.56.105/api/projects/5/members/" 2)、刪除專案中使用者許可權 curl -u "admin:Harbor12345" -X DELETE -H "Content-Type: application/json" "https://192.168.56.105/api/projects/5/members/3" 3)、給專案testrpo分配一個xinju使用者訪問許可權,並賦予開發人員角色 curl -u "admin:Harbor12345" -X POST -H "Content-Type: application/json" "https://192.168.56.105/api/projects/5/members/" -d @role.json --json檔案 :roles:2代表開發人員角色,xinju代表使用者 cat role.json { "roles": [ 2 ], "username": "xinju" } |
2. 跨倉庫資料中心複製映象
目前Harbor支援跨資料倉儲映象遠端複製功能,從某種程度上滿足了映象倉庫HA高可用。但複製策略是以“專案”為中心, 透過管理員對具體專案的Harbor源端配置“複製策略”,標明需要複製的專案以及映象到harbor目標倉庫。並對它的地址和連線時使用的使用者名稱密碼進行設定。當複製策略被啟用時,Harbor源專案下的所有映象,都會被複制到harbor目標倉庫;此外,當Harbor源專案下的映象被新增或刪除(push或delete), 只要策略還在啟用狀態,映象的變化都會同步到harbor目標倉庫上去, 如下圖所示:
以下驗證一下如何進行跨資料中心映象複製功能
Harbor源倉庫主機:192.168.56.105 (主節點)
Harbor目標倉庫主機:192.168.56.106 (從節點)
將主節點的其中一個testrpo專案中的映象檔案同步到從節點中
1)登入Harbor源倉庫web ui https:// 192.168.56.105,選擇testrpo專案來做映象同步
2)填寫需要同步的目標倉庫地址
3)開啟複製策略,看到下面的複製任務已完成
4)登入Harbor目標倉(https://192.168.56.106)發現目標倉庫中已經同步過來了testrpo目標中有兩個映象檔案。
5)同時也可以看到日誌中映象複製過程中的所有操作
1、提供視覺化的Web介面方便雲端計算機運維工程師來管理docker映象,友好的操作介面使用簡單又方便。
2、提供了基於角色的訪問控制機制,並透過專案來對映象進行組織和訪問許可權的控制,Harbor的安全機制是做的比較好。
3、支援跨資料倉儲映象遠端同步功能,從某種程度上可以滿足HA的需求。
4、提供詳細的RESTful API介面方便第三方開發整合。
5、Harbor是VMware中國研發的團隊負責開發社群文件資料比較豐富。
6、Harbor系統平臺不支援映象檔案自動清理,在平臺上刪除一些映象卻只是刪除了映象的軟連結,需要人工用命令去後臺清理映象。
7、後續會考慮如何去搭建使用Harbor高可用叢集。
https://my.oschina.net/vmwareharbor/blog/650964
有需要的朋友可以關注我的公眾號,文章每日一更
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2723077/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker搭建Harbor私有倉庫Docker
- 容器技術之Docker私有映象倉庫harborDocker
- Docker搭建私有倉庫Registry&HarborDocker
- Docker-------私有倉庫 Harbor 的搭建Docker
- Docker--harbor私有倉庫部署與管理Docker
- 手把手教你搭建Docker私有倉庫HarborDocker
- 部署docker-consul群集,Harbor構建Docker私有倉庫Docker
- 【Harbor學習筆記】-教你快速搭建Docker私有倉庫筆記Docker
- 私有Docker倉庫Docker
- containerd 配置使用私有映象倉庫 harborAI
- Docker建立私有倉庫Docker
- docker 私有倉庫搭建Docker
- docker搭建私有倉庫Docker
- Docker信任私有倉庫Docker
- Docker倉庫之Harbor企業級映象倉庫的搭建與使用Docker
- Docker倉庫之Registry私有映象倉庫的搭建與使用Docker
- 微服務探索之路03篇-docker私有倉庫Harbor搭建+Kubernetes(k8s)部署私有倉庫的映象微服務DockerK8S
- Harbor-私有映象倉庫的安裝部署
- 程式設計師都在學的docker--搭建harbor私有倉庫與管理程式設計師Docker
- 用Docker搭建cnpm私有倉庫以及私有倉庫的使用DockerNPM
- docker的企業級倉庫-harborDocker
- Docker企業級映象倉庫HarborDocker
- Docker registry私有倉庫(七)Docker
- Docker搭建私有映象倉庫Docker
- Docker入門-搭建docker私有倉庫Docker
- 容器技術之Docker私有映象倉庫docker-distributionDocker
- Centos7安裝docker倉庫HarborCentOSDocker
- Docker基礎-搭建本地私有倉庫Docker
- docker使用容器搭建本地私有倉庫Docker
- 使用 docker + verdaccio 搭建npm私有倉庫DockerNPM
- docker-registry 私有倉庫映象 之 檢視與刪除Docker
- docker筆記37-docker私有倉庫的搭建Docker筆記
- 私有化輕量級持續整合部署方案--06-私有映象倉庫-Harbor
- 可能是最詳細的部署:Docker Registry企業級私有映象倉庫Harbor管理WEB UIDockerWebUI
- 搭建Harbor 映象倉庫
- 《Git團隊協作》之Docker快速搭建GitLab私有倉庫DockerGitlab
- docker 映象倉庫 Harbor 部署 以及 跨資料複製Docker
- Jenkins打Docker映象推送到私有倉庫JenkinsDocker