私有倉庫harbor的搭建

Harbor安裝和配置指導python

Harbor 可使用如下三種方式進行安裝部署:mysql

  • 在線安裝: 使用者能夠直接從docker hub上下載harbor的官方鏡像。
  • 離線安裝: 使用者須要下載源碼包,並進行本身構建images。源碼包比較大
  • Virtual Appliance: 通常使用這種方式在第三方平臺搭建一個私有倉庫做爲平臺的組建好比vsphere等,須要下載OVA 版本的Harbor.

官方下載頁面 請點擊我 .linux

須要安裝Harbor's virtual appliance,請點擊我.nginx

本篇指導主要講解經過使用在線和離線方式去一步步安裝和配置Harbor.安裝的步驟基本上都是相同的。git

若是用戶運行了老版本的harbor,可能須要遷移數據到新的數據庫隊列中,詳細的步驟請**點擊我**github

另外在kubernetes上面部署的步驟和看如下連接**harbor on kubernets **sql

Harbor依賴docker

Harbor 被做爲一個docker容器部署在服務區上,所以,他可以被部署在任何linux發行版本。目標主機上須要安裝python,docker,以及docker-compose工具。數據庫

  • Python 須要 2.7+. 須要注意的是,最好安裝對應linux髮型版本的python。
  • Docker engine 須要1.10+ 目前比較新的版本1.12. docker安裝
  • Docker Compose 須要 1.6.0+. Compose安裝

Harbor安裝與配置swift

安裝步驟爲如下幾個部分:

  1. 下載安裝包
  2. 修改相關配置 harbor.cfg;
  3. 運行 install.sh 去安裝和啓動harbor;

1.下載安裝包

點擊連接下載二進制包 Harbor下載 . 選擇一個在線或者離線包進行下載. 使用 tar 命令解壓下載的源碼包

在線包安裝:

$ tar xvf harbor-online-installer-<version>.tgz

離線包安裝:

$ tar xvf harbor-offline-installer-<version>.tgz

2.配置 Harbor

配置參數被放在文件 harbor.cfg 中. 詳細參數講解 至少得配置 hostname 參數

  • hostname: 配置目標主機的主機名, 被用來訪問Harbor ui 和鏡像倉庫的,能夠配置爲ip地址和全域名,好比 192.168.1.10 or reg.yourdomain.com. 不要使用 localhost or 127.0.0.1 爲主機名
  • ui_url_protocol: (http or https. 默認協議爲 http) 該協議被用來訪問 the UI and the token/notification 服務. 默認是 http. 想要設置https協議,請看連接 配置Harbor支持https協議.
  • Email settings: 配置Harbor來發送郵件,固然改配置並非必須的 .注意:默認的ssl連接沒有被啓用,若是SMTP須要ssl支持,能夠設置如下參數以支持。
  • email_ssl = true

* email_server = smtp.mydomain.com * email_server_port = 25 * email_username = sample_admin@mydomain.com * email_password = abc * email_from = admin <sample_admin@mydomain.com> * email_ssl = false

  • harbor_admin_password: 設置管理員內部密碼,該密碼牢牢在第一次啓動Harbor的時候生效.在以後這個設置被忽略,管理員的密碼將在UI中從新設置。 默認的用戶名和密碼以下: admin/Harbor12345 .
  • auth_mode: 被用來認證的方式,默認使用的是 db_auth,該認證會被肢解存儲到數據庫中。 若是須要設置LDAP方式認證須要使用ldap_auth.
  • ldap_url: LDAP認證方式的URL (e.g. ldaps://ldap.mydomain.com). 當 auth_mode 被設置爲ldap_auth 的時候。
  • ldap_searchdn: 連接LDAP/AD服務的用戶域(e.g. uid=admin,ou=people,dc=mydomain,dc=com).
  • ldap_search_pwd: 爲上面設定的用戶域設置密碼 ldap_searchdn.
  • ldap_basedn: 基礎域爲方便尋找一個用戶e.g. ou=people,dc=mydomain,dc=com. 僅當 auth_mode is 設置爲ldap_auth的時候才使用
  • ldap_filter:用戶搜索過濾 (objectClass=person).
  • ldap_uid: 該參數被用來匹配一個LDAP搜索的用戶,可使uid,cn,email或者其餘的方式。
  • ldap_scope: 用戶搜索範圍, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3.
  • db_password: mysql數據庫root用戶密碼 db_auth.
  • self_registration: (on or off. Default is on) 啓用和關閉用戶註冊功能.當被關閉,新用戶職能經過admin用戶去建立。 _注意: 當 auth_mode 被設置爲 ldap_auth, self-registration 會被一直關閉,該參數也會被忽略。
  • use_compressed_js: (on or off. 默認爲 on) 生產中使用,建議將該參數設置爲 on. 在部署模式中將參數設置爲off 以致於js 文件可以被分開去修改.
  • max_job_workers: (默認爲 3) 設置在任務服務中最大的工做副本, 每個image副本任務,會有一個worker從倉庫中將全部的tag同步到遠端。增大這個值回容許更多當前的副本任務,然而由於每一個worker都會去消耗必定的網絡/cpu/io等資源,必須根據系統的資源進行合理設置該值。
  • secret_key: 該值爲加解密在副本策略中遠端倉庫的密碼,長度爲16位字符。生產中必需修改該值. NOTE: After changing this key, previously encrypted password of a policy can not be decrypted.
  • token_expiration: token過時時間,默認30分鐘
  • verify_remote_cert: (on or off. 默認 on) 該參數決定了當harbor盒遠端的registry實例交互的時候是否使用SSL/TLS .設置爲off 的時候,通常遠端的registry會採用自簽名或者未受信任的證書。
  • customize_crt: (on or off. 默認爲on) 當設置爲on的時候,會使用腳本去建立私鑰和root證書去認證registry的token
  • 如下參數:crt_country, crt_state, crt_location, crt_organization, crt_organizationalunit, crt_commonname, crt_email 被用來省城key。設置爲off的時候,key和root證書能夠被應用在外部的源中。爲Harbor token服務自定義證書

3. 配置後端存儲 (可選的)

默認,Harbor會存儲鏡像文件到本地文件系統。在生產環境中應該考慮使用一些後端存儲去代替本地文件系統,好比S3,openstack swift或者ceph等。能夠在文件templates/registry/config.yml去選擇更新存儲方式。好比你想使用Openstack Swift做爲你的存儲後端,對應的配置會以下:

storage: swift: username: admin password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/auth tenant: admin domain: default region: regionOne container: docker_images

注意: 關於docker registry在存儲後端的詳細信息能夠查看相應連接 Registry 配置詳情 .

4.完成Harbor的安裝並進行啓動Harbor

一旦 harbord.cfg 和存儲後端被配置完成就可使用install.sh腳本進行安裝和啓動Harbor服務。 須要注意的是,執行該操做可能會花費一些,由於須要從docker hub上去下載一些Harbor相關依賴的images文件。

$ sudo ./install.sh

若是上面腳本執行完成以後,一切工做正常,你就能夠在瀏覽器上輸入配置文件harbor.cfg中配置的hostname而且使用配置的admin用戶來訪問Harbor服務。 http://reg.yourdomain.com 默認的管理員用戶名密碼: username/password:admin/Harbor12345 .

使用admin用戶登陸進去後首先建立一個項目,好比myproject. 接下來用戶就可使用docker login reg.yourdomain.com登陸並進行push鏡像。(默認的registry服務監聽的80端口):

sh $ docker login reg.yourdomain.com $ docker push reg.yourdomain.com/myproject/myrepo:mytag

重要提示: 默認安裝的Harbor使用的是 HTTP 協議,所以,當用戶在使用的時候,須要在docker daemon的配置文件中增長如下參數 --insecure-registry reg.yourdomain.com 而且重啓docker.

更多使用Harbor的詳情信息,請點我**Harbor使用指南** .

5.配置Harbor以支持HTTPs訪問

Harbor不會使用任何認證進行運行,默認使用http來提供服務。這種方式對於部署或者測試環境會相應的簡單一些,可是在生產環境中不建議那樣作。爲了啓用HTTPS的支持,請看下面的連接 配置Harbor以支持https.

管理 Harbor的生命週期

你可使用docker-compose去管理Harbor的整個生命週期。如下是相應的管理命令,須要注意的是docker-compose必須得在有docker-compose.yml文件的目錄下執行:

中止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

啓動Harbor服務:

$ 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

若是須要修改Harbor的配置,首先須要停掉正在運行的 Harbor實例,更新harbor.cfg文件,再次運行install.sh

$ sudo docker-compose down $ vim harbor.cfg $ sudo install.sh

刪除Harbor容器,保存鏡像文件和Harbor的數據庫文件:

$ 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

刪除Harbor的數據庫信息和鏡像文件(通常爲了純淨安裝):

$ rm -r /data/database $ rm -r /data/registry

更多docker-compose命令使用指南

持久化數據和日誌文件

默認狀況下,regirstry的數據被持久化到目標主機的/data/目錄。當Harbor的容器唄刪除或者從新建立的時候,數據不會有任何改變。 另外,Harbor使用rsyslog去收集每一個容器的日誌,默認的,政協日誌文件被存儲在目標主機的/var/log/harbor/目錄以便進行troubleshooting

配置Harbor監聽自定義端口

默認狀況下,Harbor監聽80和443(須要配置)來做爲admin用戶登陸的入口,固然也能夠自定義該端口。

Http協議

1.修改 docker-compose.yml 文件 替換ui中的端口映射, e.g. 8888:80.

proxy: image: library/nginx:1.11.5 restart: always volumes: - ./config/nginx:/etc/nginx ports: - 8888: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

, 在參數 "$ui_url"以後增長自定義端口":8888".

auth: token: issuer: registry-token-issuer realm: $ui_url:8888/service/token rootcertbundle: /etc/registry/root.crt service: token-service

3.運行install.sh更新並啓動harbor.

$ sudo docker-compose down $ sudo install.sh

HTTPS 協議

1.啓用Https協議指南 guide.

2.修改 docker-compose.yml配置文件

修改compose文件中的443端口映射,好比: 4443:443.

proxy: image: library/nginx:1.11.5 restart: always volumes: - ./config/nginx:/etc/nginx ports: - 80:80 - 4443:443 depends_on: - mysql - registry - ui - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy"

3.修改模版文件 templates/registry/config.yml

在"$ui_url"以後增長自定義端口,好比":4443"

auth: token: issuer: registry-token-issuer realm: $ui_url:4443/service/token rootcertbundle: /etc/registry/root.crt service: token-service

4.運行 install.sh 更新啓動 Harbor.

$ sudo docker-compose down $ sudo install.sh

故障排查

  1. 當harbor不正常工做的時候,可使用一下命令查看正在運行的容器信息:

$ sudo docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------- harbor_jobservice_1 /harbor/harbor_jobservice Up harbor_log_1 /bin/sh -c crond && rsyslo ... Up 0.0.0.0:1514->514/tcp harbor_mysql_1 /entrypoint.sh mysqld Up 3306/tcp harbor_proxy_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp harbor_registry_1 /entrypoint.sh serve /etc/ ... Up 5000/tcp harbor_ui_1 /harbor/harbor_ui Up

若是有容器處於非up狀態,能夠檢查容器日誌/var/log/harbor

2.對harbor進行彈性負載均衡nginx反響代理的時候能夠查看如下文件,

make/config/nginx/nginx.conf 中的相關配置 location /, location /v2/ location /service/.

proxy_set_header X-Forwarded-Proto $scheme;

相關文章
相關標籤/搜索