<th id="0poub"></th>
  1. <th id="0poub"><track id="0poub"><dl id="0poub"></dl></track></th><dd id="0poub"><track id="0poub"></track></dd>

    <dd id="0poub"></dd>
    <dd id="0poub"><pre id="0poub"></pre></dd><th id="0poub"></th>
    <th id="0poub"><track id="0poub"></track></th>
    <tbody id="0poub"><pre id="0poub"></pre></tbody>
    <em id="0poub"><acronym id="0poub"><kbd id="0poub"></kbd></acronym></em>
    logo

    地址:深圳南山區大沖國際中心21樓

    聯系我們 : contact@wise2c.com

    產品支持 : service@wise2c.com

    售前咨詢 : sales@wise2c.com

    電話: +86 (755) 33268246

    粵ICP備16049363號

    如何快速利用Harbor搭建自己的企業級registry server?

    深圳睿云智合科技有限公司 > 睿云新聞  > 如何快速利用Harbor搭建自己的企業級registry server?

    如何快速利用Harbor搭建自己的企業級registry server?

    小貼士

     

    Harbor是由VMware團隊為企業用戶設計的Registry?Server開源項目,用戶可以利用Harbor搭建自己的私有鏡像倉庫。在我們睿云智合(Wise2C)企業級容器云解決方案中默認使用Harbor做為私有鏡像倉庫,目前已在國內多家金融行業企業生產環境使用。即使你是harbor小白,也可以從本文快速從認識Harbor到利用Harbor搭建自己的企業級registry server。

     

    Harbor特性

     

    ? 基于角色控制

     

    用戶和倉庫都是基于項目進行組織的, 而用戶基于項目可以擁有不同的權限。

    ? 基于鏡像的復制策略

     

    鏡像可以在多個Harbor實例之間進行復制。

    ? 支持LDAP

     

    Harbor的用戶授權可以使用已經存在LDAP用戶。

    ? 鏡像刪除?& 垃圾回收

     

    Image可以被刪除并且回收Image占用的空間。

    ? 用戶UI

     

    用戶可以輕松的瀏覽、搜索鏡像倉庫以及對項目進行管理。

    ? 鏡像刪除?& 垃圾回收

     

    絕大部分的用戶操作API, 方便用戶對系統進行擴展。

    ? 輕松的部署功能

     

    Harbor提供了online、offline安裝,除此之外還提供了virtual appliance安裝。

     

    Harbordocker registry關系

     

    Harbor實質上是對docker registry做了封裝,擴展了自己的業務模塊.下面展示一下docker registry和Harbor的架構圖用以說明。

    docker registry和Harbor的架構

     

     

     

    Harbor認證過程

    1、docker daemon從docker registry拉取鏡像。

     

    2、如果docker registry需要進行授權時,registry將會返回401 Unauthorized響應,同時在響應中包含了docker client如何進行認證的信息。

     

    3、docker client根據registry返回的信息,向auth server發送請求獲取認證token。

     

    4、auth server則根據自己的業務實現去驗證提交的用戶信息是否存符合業務要求。

     

    5、用戶數據倉庫返回用戶的相關信息。

     

    6、auth server將會根據查詢的用戶信息,生成token令牌,以及當前用戶所具有的相關權限信息?。上述就是完整的授權過程.當用戶完成上述過程以后便可以執行相關的pull push操作。認證信息會每次都帶在請求頭中。

     

    Harbor整體架構

     

    Harbor整體架構

     

    Harbor認證流程

    Harbor認證流程

     

     

     

    A、首先,請求被代理容器監聽攔截,并跳轉到指定的認證服務器。

     

    B、?如果認證服務器配置了權限認證,則會返回401。通知docker client在特定的請求中需要帶上一個合法的token。而認證的邏輯地址則指向架構圖中的core services。

     

    C、?當docker client接受到錯誤code。client就會發送認證請求(帶有用戶名和密碼)到core services進行basic auth認證。

     

    D、?當C的請求發送給ngnix以后,ngnix會根據配置的認證地址將帶有用戶名和密碼的請求發送到core serivces。

     

    E、?core services獲取用戶名和密碼以后對用戶信息進行認證(自己的數據庫或者介入LDAP都可以)。成功以后,返回認證成功的信息。

     

     

    從上面的docker registry 和?Harbor的架構圖、流程圖可以看出Harbor的擴展部分為core services。這部分實現了用戶的認證, 添加了UI模塊已經webhook。

     

    Harbor安裝

     

    Harbor安裝有三種方式,這里以online的方式為例,另外兩種有興趣的童鞋可以參考Harbor的官方文檔。

     

    Harbor的安裝

     

    1、下載安裝包

    2、配置harbor.cfg文件

    3、執行install.sh腳本安裝并啟動Harbor

     

    用戶可以到release頁下載相關文件,解壓tar xvf harbor-online-installer-<version>.tgz。

     

    ?Harbor配置

     

    • hostname 運行Harbor的主機地址(域名或者IP地址

    不能是localhost or 127.0.0.1。

    • ui_url_protocol url協議(http或者htpps)

    https配置可以參考?Configuring Harbor with ? ? ?HTTPS Access。

    • Email設定

    配置的郵件可以用戶Harbor進行密碼重置處理。

     

    e.g:

    email_server =smtp.mydomain.com

    email_server_port = 25

    email_username=ample_admin@mydomain.com

    email_password = abc

    email_from = admin sample_admin@mydomain.com

    email_ssl = false

     

    • harbor_admin_password

    admin初始化密碼。

    • auth_mode

    認證方式,默認為db_auth。也可以使用ldap_auth 由于參數太多就不一一列舉了

    • Harbor安裝手冊講的很清楚。

     

    Storage配置

     

    默認情況下,Harbor是把鏡像存儲在本地文件系統中的。但是在生成環境中你可能會考慮到使用其他的存儲方案來代替本地存儲。比如S3、Openstack Swift、Ceph等等。那么這個時候你就需要更改templates/registry/config.yml中的存儲配置部分。例如:

     

    storage:

    swift:

    username: admin

    password: ADMIN_PASS

    authurl: http://keystone_addr:35357/v3/auth

    tenant: admin

    domain: default

    region: regionOne

    container: docker_images

     

    詳細配置可以參考Registry Configuration Reference

     

    完成安裝并啟動

     

    sudo ./install.sh

     

    登錄并創建自己的首個倉庫試試(初始用戶名/密碼?admin/Harbor12345)

     

    $docker login reg.yourdomain.com

    $dockerpushreg.yourdomain.com/myproject/myrepo:mytag

     

    Harbor的生命周期管理?你可以使用docker-compose來管理Harbor的生命周期,下面列舉一些有用的常用的命令。

     

    Stop Harbor:

     

    $ sudo docker-compose stop

    Stopping harbor_proxy_1 … done

    Stopping harbor_ui_1 … done

    Stopping harbor_registry_1 … done

    Stopping harbor_mysql_1 … done

    Stopping harbor_log_1 … done

    Stopping harbor_jobservice_1 … done

     

    Restart Harbor after stopping:

     

    $ sudo docker-compose start

    Starting harbor_log_1

    Starting harbor_mysql_1

    Starting harbor_registry_1

    Starting harbor_ui_1

    Starting harbor_proxy_1

    Starting harbor_jobservice_1

     

    移除docker container 但是保留相關鏡像文件

     

    sudo docker-compose rm

    Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1, harbor_jobservice_1

    Are you sure? [yN] y

    Removing harbor_proxy_1 … done

    Removing harbor_ui_1 … done

    Removing harbor_registry_1 … done

    Removing harbor_mysql_1 … done

    Removing harbor_log_1 … done

    Removing harbor_jobservice_1 … done

     

    詳細信息可以參考Docker Compose command-line reference

     

    • 持久化data和日志文件默認情況下data是被存儲在Harbor host機的/data目錄.不管harbor container是刪除還是重新創建這里的數據都是一致存在的。另外harbor的日志文件默認情況下是存在/var/log/harbor/目錄下的。
    • 自定義ngnix監聽端口修改docker-compose.yml文件。

     

     

    1、替換80端口為任意存在未被占用的端口?e.g 8899

    proxy:

    image: library/nginx:1.11.5

    restart: always

    volumes:

    – ./config/nginx:/etc/nginx

    ports:

    – 8899:80

    – 443:443

    depends_on:

    – mysql

    – registry

    – ui

    – log

    logging:

    driver: “syslog”

    options:

    syslog-address: “tcp://127.0.0.1:1514”

    tag: “proxy”

     

    2、修改templates/registry/config.yml文件

    auth:

    token:

    issuer: registry-token-issuer

    realm: $ui_url:8899/service/token

    rootcertbundle: /etc/registry/root.crt

    service: token-service

    3、運行install.sh來更新并啟動Harbor

    $ sudo docker-compose down

    $ sudo install.sh

     

    HTTPS 協議的修改和自定義監聽端口修改一樣的操作

     

    有興趣的童鞋如果想深入研究的話還可以參考下面的鏈接

     

    • Harbor API Specs by Swagger

     

    • Internationalization Guide

     

    • Python SDK

     

    • Harbor CLI

     

    • Configuring Harbor as a local registry mirror
    No Comments

    Post a Comment

    Comment
    Name
    Email
    Website