共計(jì) 7582 個(gè)字符,預(yù)計(jì)需要花費(fèi) 19 分鐘才能閱讀完成。
這篇文章主要講解了“Harbo 如何使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Harbo 如何使用”吧!
基本架構(gòu)
Harbor 安裝和配置指導(dǎo)
Harbor 可以使用以下三種方式進(jìn)行安裝部署:
在線安裝: 使用者可以直接從 docker hub 上下載 harbor 的官方鏡像。
離線安裝: 使用者需要下載源碼包,并進(jìn)行自己構(gòu)建 images。源碼包比較大
Virtual Appliance: 一般使用這種方式在第三方平臺(tái)搭建一個(gè)私有倉(cāng)庫(kù)作為平臺(tái)的組建比如 vsphere 等, 需要下載 OVA 版本的 Harbor.
官方下載頁面 請(qǐng)點(diǎn)擊我 .
需要安裝 Harbor s virtual appliance, 請(qǐng)點(diǎn)擊我.
本篇指導(dǎo)主要講解通過使用在線和離線方式去一步步安裝和配置 Harbor. 安裝的步驟基本上都是相同的。
如果用戶運(yùn)行了老版本的 harbor, 可能需要遷移數(shù)據(jù)到新的數(shù)據(jù)庫(kù)隊(duì)列中,詳細(xì)的步驟請(qǐng) ** 點(diǎn)擊我 **
另外在 kubernetes 上面部署的步驟和看以下鏈接 **harbor on kubernets **
Harbor 依賴
Harbor 被作為一個(gè) docker 容器部署在服務(wù)區(qū)上,因此,他能夠被部署在任何 linux 發(fā)行版本。目標(biāo)主機(jī)上需要安裝 python,docker,以及 docker-compose 工具。
Python 需要 2.7+. 需要注意的是,最好安裝對(duì)應(yīng) linux 發(fā)型版本的 python。
Docker engine 需要 1.10+ 目前比較新的版本 1.12. docker 安裝
Docker Compose 需要 1.6.0+. Compose 安裝
Harbor 安裝與配置
安裝步驟為以下幾個(gè)部分:
下載安裝包
修改相關(guān)配置 harbor.cfg;
運(yùn)行 install.sh 去安裝和啟動(dòng) harbor;
1. 下載安裝包
點(diǎn)擊鏈接下載二進(jìn)制包 Harbor 下載 . 選擇一個(gè)在線或者離線包進(jìn)行下載. 使用 tar 命令解壓下載的源碼包
在線包安裝:
$ tar xvf harbor-online-installer- version .tgz
離線包安裝:
$ tar xvf harbor-offline-installer- version .tgz
2. 配置 Harbor
配置參數(shù)被放在文件 harbor.cfg 中. 詳細(xì)參數(shù)講解 至少得配置 hostname 參數(shù)
hostname: 配置目標(biāo)主機(jī)的主機(jī)名, 被用來訪問 Harbor ui 和鏡像倉(cāng)庫(kù)的,可以配置為 ip 地址和全域名, 比如 192.168.1.10 or reg.yourdomain.com. 不要使用 localhost or 127.0.0.1 為主機(jī)名
ui_url_protocol: (http or https. 默認(rèn)協(xié)議為 http) 該協(xié)議被用來訪問 the UI and the token/notification 服務(wù). 默認(rèn)是 http. 想要設(shè)置 https 協(xié)議, 請(qǐng)看鏈接 配置 Harbor 支持 https 協(xié)議.
Email settings: 配置 Harbor 來發(fā)送郵件,當(dāng)然改配置并不是必須的 . 注意: 默認(rèn)的 ssl 鏈接沒有被啟用, 如果 SMTP 需要 ssl 支持,可以設(shè)置以下參數(shù)以支持。
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: 設(shè)置管理員內(nèi)部密碼,該密碼緊緊在第一次啟動(dòng) Harbor 的時(shí)候生效. 在之后這個(gè)設(shè)置被忽略,管理員的密碼將在 UI 中重新設(shè)置。默認(rèn)的用戶名和密碼如下:admin/Harbor12345 .
auth_mode: 被用來認(rèn)證的方式,默認(rèn)使用的是 db_auth, 該認(rèn)證會(huì)被肢解存儲(chǔ)到數(shù)據(jù)庫(kù)中。如果需要設(shè)置 LDAP 方式認(rèn)證需要使用 ldap_auth.
ldap_url: LDAP 認(rèn)證方式的 URL (e.g. ldaps://ldap.mydomain.com). 當(dāng) auth_mode 被設(shè)置為 ldap_auth 的時(shí)候。
ldap_searchdn: 鏈接 LDAP/AD 服務(wù)的用戶域 (e.g. uid=admin,ou=people,dc=mydomain,dc=com).
ldap_search_pwd: 為上面設(shè)定的用戶域設(shè)置密碼 ldap_searchdn.
ldap_basedn: 基礎(chǔ)域?yàn)榉奖銓ふ乙粋€(gè)用戶 e.g. ou=people,dc=mydomain,dc=com. 僅當(dāng) auth_mode is 設(shè)置為 ldap_auth 的時(shí)候才使用
ldap_filter: 用戶搜索過濾 (object >
ldap_uid: 該參數(shù)被用來匹配一個(gè) LDAP 搜索的用戶,可以使 uid,cn,email 或者其他的方式。
ldap_scope: 用戶搜索范圍, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3.
db_password: mysql 數(shù)據(jù)庫(kù) root 用戶密碼 db_auth.
self_registration: (on or off. Default is on) 啟用和關(guān)閉用戶注冊(cè)功能. 當(dāng)被關(guān)閉,新用戶職能通過 admin 用戶去創(chuàng)建。_注意: 當(dāng) auth_mode 被設(shè)置為 ldap_auth, self-registration 會(huì)被一直關(guān)閉, 該參數(shù)也會(huì)被忽略。
use_compressed_js: (on or off. 默認(rèn)為 on) 生產(chǎn)中使用,建議將該參數(shù)設(shè)置為 on. 在部署模式中將參數(shù)設(shè)置為 off 以至于 js 文件能夠被分開去修改.
max_job_workers: (默認(rèn)為 3) 設(shè)置在任務(wù)服務(wù)中最大的工作副本,每一個(gè) image 副本任務(wù),會(huì)有一個(gè) worker 從倉(cāng)庫(kù)中將所有的 tag 同步到遠(yuǎn)端。增大這個(gè)值回允許更多當(dāng)前的副本任務(wù),然而因?yàn)槊總€(gè) worker 都會(huì)去消耗一定的網(wǎng)絡(luò) /cpu/io 等資源,必須根據(jù)系統(tǒng)的資源進(jìn)行合理設(shè)置該值。
secret_key: 該值為加解密在副本策略中遠(yuǎn)端倉(cāng)庫(kù)的密碼,長(zhǎng)度為 16 位字符。生產(chǎn)中必需修改該值. NOTE: After changing this key, previously encrypted password of a policy can not be decrypted.
token_expiration: token 過期時(shí)間,默認(rèn) 30 分鐘
verify_remote_cert: (on or off. 默認(rèn) on) 該參數(shù)決定了當(dāng) harbor 盒遠(yuǎn)端的 registry 實(shí)例交互的時(shí)候是否使用 SSL/TLS . 設(shè)置為 off 的時(shí)候,一般遠(yuǎn)端的 registry 會(huì)采用自簽名或者未受信任的證書。
customize_crt: (on or off. 默認(rèn)為 on) 當(dāng)設(shè)置為 on 的時(shí)候,會(huì)使用腳本去創(chuàng)建私鑰和 root 證書去認(rèn)證 registry 的 token
以下參數(shù):crt_country, crt_state, crt_location, crt_organization, crt_organizationalunit, crt_commonname, crt_email 被用來省城 key。設(shè)置為 off 的時(shí)候,key 和 root 證書可以被應(yīng)用在外部的源中。為 Harbor token 服務(wù)自定義證書
3. 配置后端存儲(chǔ) (可選的)
默認(rèn),Harbor 會(huì)存儲(chǔ)鏡像文件到本地文件系統(tǒng)。在生產(chǎn)環(huán)境中應(yīng)該考慮使用一些后端存儲(chǔ)去代替本地文件系統(tǒng),比如 S3,openstack swift 或者 ceph 等??梢栽谖募?templates/registry/config.yml 去選擇更新存儲(chǔ)方式。比如你想使用 Openstack Swift 作為你的存儲(chǔ)后端,對(duì)應(yīng)的配置會(huì)如下:
storage:
swift:
username: admin
password: ADMIN_PASS
authurl: http://keystone_addr:35357/v3/auth
tenant: admin
domain: default
region: regionOne
container: docker_images
注意: 關(guān)于 docker registry 在存儲(chǔ)后端的詳細(xì)信息可以查看相應(yīng)鏈接 Registry 配置詳情 .
4. 完成 Harbor 的安裝并進(jìn)行啟動(dòng) Harbor
一旦 harbord.cfg 和存儲(chǔ)后端被配置完成就可以使用 install.sh 腳本進(jìn)行安裝和啟動(dòng) Harbor 服務(wù)。需要注意的是,執(zhí)行該操作可能會(huì)花費(fèi)一些,因?yàn)樾枰獜?docker hub 上去下載一些 Harbor 相關(guān)依賴的 images 文件。
$ sudo ./install.sh
如果上面腳本執(zhí)行完成之后,一切工作正常,你就可以在瀏覽器上輸入配置文件 harbor.cfg 中配置的 hostname 并且使用配置的 admin 用戶來訪問 Harbor 服務(wù)。http://reg.yourdomain.com 默認(rèn)的管理員用戶名密碼:username/password:admin/Harbor12345 .
使用 admin 用戶登錄進(jìn)去后首先創(chuàng)建一個(gè)項(xiàng)目,比如 myproject. 接下來用戶就可以使用 docker login reg.yourdomain.com 登錄并進(jìn)行 push 鏡像。(默認(rèn)的 registry 服務(wù)監(jiān)聽的 80 端口):
sh
$ docker login reg.yourdomain.com
$ docker push reg.yourdomain.com/myproject/myrepo:mytag
重要提示: 默認(rèn)安裝的 Harbor 使用的是 HTTP 協(xié)議,因此,當(dāng)用戶在使用的時(shí)候,需要在 docker daemon 的配置文件中增加以下參數(shù) –insecure-registry reg.yourdomain.com 并且重啟 docker.
更多使用 Harbor 的詳情信息,請(qǐng)點(diǎn)我 **Harbor 使用指南 ** .
5. 配置 Harbor 以支持 HTTPs 訪問
Harbor 不會(huì)使用任何認(rèn)證進(jìn)行運(yùn)行,默認(rèn)使用 http 來提供服務(wù)。這種方式對(duì)于部署或者測(cè)試環(huán)境會(huì)相應(yīng)的簡(jiǎn)單一些,但是在生產(chǎn)環(huán)境中不建議那樣做。為了啟用 HTTPS 的支持,請(qǐng)看下面的鏈接 配置 Harbor 以支持 https.
管理 Harbor 的生命周期
你可以使用 docker-compose 去管理 Harbor 的整個(gè)生命周期。以下是相應(yīng)的管理命令,需要注意的是 docker-compose 必須得在有 docker-compose.yml 文件的目錄下執(zhí)行:
停止 Harbor 服務(wù):
$ 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
啟動(dòng) Harbor 服務(wù):
$ 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 的配置,首先需要停掉正在運(yùn)行的 Harbor 實(shí)例,更新 harbor.cfg 文件,再次運(yùn)行 install.sh
$ sudo docker-compose down
$ vim harbor.cfg
$ sudo install.sh
刪除 Harbor 容器,保存鏡像文件和 Harbor 的數(shù)據(jù)庫(kù)文件:
$ 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 的數(shù)據(jù)庫(kù)信息和鏡像文件 (一般為了純凈安裝):
$ rm -r /data/database
$ rm -r /data/registry
更多 docker-compose 命令使用指南
持久化數(shù)據(jù)和日志文件
默認(rèn)情況下,regirstry 的數(shù)據(jù)被持久化到目標(biāo)主機(jī)的 /data/ 目錄。當(dāng) Harbor 的容器唄刪除或者重新創(chuàng)建的時(shí)候,數(shù)據(jù)不會(huì)有任何改變。另外,Harbor 使用 rsyslog 去收集每個(gè)容器的日志,默認(rèn)的,政協(xié)日志文件被存儲(chǔ)在目標(biāo)主機(jī)的 /var/log/harbor/ 目錄以便進(jìn)行 troubleshooting
配置 Harbor 監(jiān)聽自定義端口
默認(rèn)情況下,Harbor 監(jiān)聽 80 和 443(需要配置) 來作為 admin 用戶登錄的入口,當(dāng)然也可以自定義該端口。
Http 協(xié)議
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
, 在參數(shù) $ui_url 之后增加自定義端口 :8888 .
auth:
token:
issuer: registry-token-issuer
realm: $ui_url:8888/service/token
rootcertbundle: /etc/registry/root.crt
service: token-service
3. 運(yùn)行 install.sh 更新并啟動(dòng) harbor.
$ sudo docker-compose down
$ sudo install.sh
HTTPS 協(xié)議
1. 啟用 Https 協(xié)議指南 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. 運(yùn)行 install.sh 更新啟動(dòng) Harbor.
$ sudo docker-compose down
$ sudo install.sh
故障排查
當(dāng) harbor 不正常工作的時(shí)候,可以使用一下命令查看正在運(yùn)行的容器信息:
$ 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 狀態(tài),可以檢查容器日志 /var/log/harbor
2. 對(duì) harbor 進(jìn)行彈性負(fù)載均衡 nginx 反響代理的時(shí)候可以查看以下文件,
make/config/nginx/nginx.conf 中的相關(guān)配置 location /, location /v2/ location /service/.
proxy_set_header X-Forwarded-Proto $scheme;
感謝各位的閱讀,以上就是“Harbo 如何使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì) Harbo 如何使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!