1. 程式人生 > 其它 >|NO.Z.00013|——————————|CloudVirtualiZation|——|Cloud&Docker映象.V05|-------------------------------------|Harbor架構|

|NO.Z.00013|——————————|CloudVirtualiZation|——|Cloud&Docker映象.V05|-------------------------------------|Harbor架構|



[CloudVirtualiZation:Cloud&Docker映象.V05]                                              [Applications.CloudVirtualiZation] [|docker|docker映象|倉庫管理|映象特性|dockerfile|docker倉庫構建|Harbor企業級私有倉庫]








一、 Harbor 原理說明軟體資源介紹

### --- 軟體資源介紹

~~~     Harbor是 VMware公司開源的企業級 DockerRegistry專案,
~~~     專案地址為 https://github.com/vmware/harbor。
~~~     其目標是幫助使用者迅速搭建一個企業級的 Dockerregistry服務。
~~~     它以 Docker公司開源的 registry為基礎,
~~~     提供了管理 UI,基於角色的訪問控制 (Role Based Access Control), 
~~~     AD/LDAP整合、以及審計日誌 (Auditlogging) 等企業使用者需求的功能,同時還原生支援中文。 
~~~     Harbor的每個元件都是以 Docker容器的形式構建的,使用 Docker Compose來對它進行部署。
~~~     用於部署 Harbor的 Docker Compose模板位於 /Deployer/docker-compose.yml,
~~~     由 5個容器組成,這幾個容器通過Docker link的形式連線在一起,
~~~     在容器之間通過容器名字互相訪問。
~~~     對終端使用者而言,只需要暴露 proxy ( 即Nginx)的服務埠

~~~     # Proxy:
~~~     由 Nginx 伺服器構成的反向代理。
~~~     # Registry:
~~~     由 Docker官方的開源 registry 映象構成的容器例項。
~~~     # UI:
~~~     即架構中的 core services, 構成此容器的程式碼是 Harbor 專案的主體。

~~~     # MySQL:
~~~     由官方 MySQL 映象構成的資料庫容器。
~~~     # Log:
~~~     執行著 rsyslogd 的容器,通過 log-driver 的形式收集其他容器的日誌

二、Harbor 特性

### --- Harbor 特性

~~~     # 基於角色控制:
~~~     使用者和倉庫都是基於專案進行組織的, 而使用者基於專案可以擁有不同的許可權
~~~     # 基於映象的複製策略:
~~~     映象可以在多個 Harbor例項之間進行復制
~~~     # 支援 LDAP: 
~~~     Harbor的使用者授權可以使用已經存在 LDAP使用者

~~~     # 映象刪除 & 垃圾回收: 
~~~     Image可以被刪除並且回收 Image佔用的空間,絕大部分的使用者操作 API, 方便使用者對系統進行擴充套件
~~~     # 使用者 UI:
~~~     使用者可以輕鬆的瀏覽、搜尋映象倉庫以及對專案進行管理

~~~     # 輕鬆的部署功能: 
~~~     Harbor提供了 online、 offline安裝,除此之外還提供了 virtualappliance安裝
~~~     # Harbor 和 docker registry 關係: 
~~~     Harbor實質上是對 docker registry 做了封裝,擴充套件了自己的業務模組

三、Harbor 認證過程

### --- Harbor 認證過程

~~~     dockerdaemon從 docker registry拉取映象。
~~~     如果 dockerregistry需要進行授權時, registry將會返回 401 Unauthorized響應,
~~~     同時在響應中包含了 docker client如何進行認證的資訊。
~~~     dockerclient根據 registry返回的資訊,向 auth server傳送請求獲取認證 token。
~~~     auth server則根據自己的業務實現去驗證提交的使用者資訊是否存符合業務要求。
~~~     使用者資料倉庫返回使用者的相關資訊。
~~~     auth server將會根據查詢的使用者資訊,生成 token令牌,
~~~     以及當前使用者所具有的相關許可權資訊 .上述就是完整的授權過程 .
~~~     當用戶完成上述過程以後便可以執行相關的 pull/push操作。
~~~     認證資訊會每次都帶在請求頭中

四、Harbor 認證流程

### --- Harbor 認證流程

~~~     首先,請求被代理容器監聽攔截,並跳轉到指定的認證伺服器。
~~~     如果認證伺服器配置了許可權認證,則會返回 401。
~~~     通知 dockerclient在特定的請求中需要帶上一個合法的token。
~~~     而認證的邏輯地址則指向架構圖中的 core services。
~~~     當 docker client接受到錯誤 code。 
~~~     client就會發送認證請求 (帶有使用者名稱和密碼 )到 coreservices進行 basicauth認證。
~~~     當 C的請求傳送給 ngnix以後, 
~~~     ngnix會根據配置的認證地址將帶有使用者名稱和密碼的請求傳送到 coreserivces。
~~~     coreservices獲取使用者名稱和密碼以後對使用者資訊進行認證 
~~~     (自己的資料庫或者介入 LDAP都可以 )。成功以後,返回認證成功的資訊








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)