Harbor部署

阿哲技术之路發表於2024-03-28

Harbor 概述

Harbor是由VMWare公司開源的容器映象倉庫。事實上,Harbor是在Docker Registry上進行了相應的企業級擴充套件, 從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理使用者介面,基於角色的訪問控制 ,AD/LDAP整合以及 審計日誌等,足以滿足基本企業需求。

官方:https://goharbor.io/

Github:https://github.com/goharbor/harbor

Harbor 部署先決條件

伺服器硬體配置:

最低要求:CPU2核/記憶體4G/硬碟40GB

推薦:CPU4核/記憶體8G/硬碟160GB

軟體:

Docker CE 17.06版本+

Docker Compose 1.18版本+

Harbor安裝有2種方式:

線上安裝:從Docker Hub下載Harbor相關映象,因此安裝軟體包非常小

離線安裝:安裝包包含部署的相關映象,因此安裝包比較大

Harbor 部署HTTP

1、先安裝Docker和Docker Compose

https://github.com/docker/compose/releases

2、部署Harbor HTTP

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose

tar zxvf harbor-offline-installer-v2.0.0.tgz

cd harbor

cp harbor.yml.tmpl harbor.yml

vi harbor.yml

hostname: reg.azhe.com

#https: # 先註釋https相關配置

harbor_admin_password: Harbor12345

./prepare

./install.sh

3、訪問harbor

http://reg.azhe.com/

clipboard.png

Harbor 基本使用

1、配置http映象倉庫可信任(預設是https訪問的,上面配置的是http,這裡需要配置可信任)

#配置http映象倉庫可信任

vi /etc/docker/daemon.json

{"insecure-registries":["reg.azhe.com"]}

systemctl restart docker

#檢視是否有harbor容器退出,重新停止再拉起

docker-compose ps

docker-compose down

docker-compose up -d

2.配置本地hosts檔案解析

vim /etc/hosts

192.168.0.11 reg.azhe.com

3.登入harbbor,打標籤,上傳,下載

docker login reg.azhe.com

Username: admin

Password: Harbor12345

docker images

docker tag mysql:5.7 reg.azhe.com/library/mysql:5.7

docker push reg.azhe.com/library/mysql:5.7

docker pull reg.azhe.com/library/mysql:5.7

clipboard.png

Harbor 部署HTTPS

1、生成SSL證書

mkdir ssl

cd ssl

ls

ca-config.json ca-key.pem cfssl.sh reg.azhe.com-key.pem

ca.csr ca.pem reg.azhe.com.csr reg.azhe.com.pem

ca-csr.json certs.sh reg.azhe.com-csr.json

vim cfssl.sh (證書生成工具)

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

chmod +x cfssl*

mv cfssl_linux-amd64 /usr/bin/cfssl

mv cfssljson_linux-amd64 /usr/bin/cfssljson

mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

vim certs.sh(證書生成指令碼)

#注意裡面的域名修改為自己的harbor域名

cat > ca-config.json <<EOF

{

"signing": {

"default": {

"expiry": "87600h"

},

"profiles": {

"kubernetes": {

"expiry": "87600h",

"usages": [

"signing",

"key encipherment",

"server auth",

"client auth"

]

}

}

}

}

EOF

cat > ca-csr.json <<EOF

{

"CN": "kubernetes",

"key": {

"algo": "rsa",

"size": 2048

},

"names": [

{

"C": "CN",

"L": "Beijing",

"ST": "Beijing"

}

]

}

EOF

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

cat > reg.azhe.com-csr.json <<EOF

{

"CN": "reg.azhe.com",

"hosts": [],

"key": {

"algo": "rsa",

"size": 2048

},

"names": [

{

"C": "CN",

"L": "BeiJing",

"ST": "BeiJing"

}

]

}

EOF

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes reg.azhe.com-csr.json | cfssljson -bare reg.azhe.com

2、Harbor啟用HTTPS

vi harbor.yml

https:

port: 443

certificate: /root/ssl/reg.azhe.com.pem #指定你生成的數字證書

private_key: /root/ssl/reg.azhe.com-key.pem #指定key

3、重新配置並部署Harbor

./prepare

docker-compose down

docker-compose up –d

4、修改Docker啟動檔案新增“--insecure-registry reg.azhe.com”並配置hosts檔案

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry reg.azhe.com

systemctl restart docker

vim /etc/hosts

192.168.0.11 reg.azhe.com

5、驗證

docker login reg.azhe.com

Username: admin

Password: Harbor12345

docker images

docker pull reg.azhe.com/library/mysql:5.7

以上harbor部署https方式的第4步驟,如果配置完成後,在docker主機登入harbor報證書錯誤,那麼可以透過以下方式解決或參考連結:

4.將數字證書複製到Docker主機

scp reg.azhe.com.pem root@192.168.0.13:~ #複製到要登入harbor的docker客戶端

mkdir /etc/docker/certs.d/reg.azhe.com

cp reg.azhe.com.pem /etc/docker/certs.d/reg.azhe.com/reg.azhe.com.crt

參考連結

https://blog.csdn.net/chenglang0914/article/details/100833054

Harbor 主從複製

clipboard.png

主備模式

1.準備備機harbor

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose

tar -zxf harbor-offline-installer-v2.0.0.tgz

cd harbor

cp harbor.yml.tmpl harbor.yml

vi harbor.yml

hostname: 192.168.0.12

#https: # 先註釋https相關配置

harbor_admin_password: Harbor12345

./prepare

./install.sh

2.在主harbor頁面配置主從複製和規則

clipboard.png

clipboard.png

3.客戶端docker主機上傳映象到主harbor並驗證是否複製到從harbor

docker login reg.azhe.com

Username: admin

Password: Harbor12345

docker tag centos:7 reg.azhe.com/library/centos:7

docker push reg.azhe.com/library/centos:7

clipboard.png

clipboard.png

clipboard.png

Harbor 運維維護

clipboard.png

容器資料持久化目錄:/data

日誌檔案目錄:/var/log/harbor

PG資料庫做好定期備份,裡面存放使用者資料檔案。

主從複製,主harbor掛掉,啟用備harbor,需要把pg資料匯入到備harbor。

相關文章