網站首頁 編程語言 正文
一、Harbor 簡介
Harbor 是由 VMware 公司使用 Go 語言開發,主要就是用于存放鏡像使用,同時我們還可以通過 Web 界面來對存放的鏡像進行管理。并且 Harbor 提供的功能有:基于角色的訪問控制,鏡像遠程復制同步,以及審計日志等功能。官方文檔
1.Harbor 功能介紹
1)基于角色的訪問控制: 我們可以通過項目來對用戶進行權限劃分,項目中可以包含多個鏡像。
2)審計管理: 我們可以在用戶審計管理中,找到我們所有對鏡像倉庫做的操作。
3)鏡像復制: 我們可以通過配置,使在兩臺 Harbor 服務器間實現鏡像同步。
4)漏洞掃描: Harbor 會定期對倉庫中的鏡像進行掃描,并進行策略檢查,以防止部署出易受到攻擊的鏡像。
2.Harbor 高可用方式
目前 Harbor 最常見的高可用方式有兩種,分別是:
1)安裝兩臺 Harbor 倉庫,他們共同使用一個存儲(一般常見的便是 NFS 共享存儲)
2)安裝兩臺 Harbor 倉庫,并互相配置同步關系。
因為第一種方式的話,需要額外配置 Redis 和 PostgreSQL 以及 NFS 服務,所以我們下面使用第二種方式進行 Harbor 高可用配置。
二、Harbor 倉庫使用介紹
準備工作:
主機名 | 操作系統 | IP 地址 |
---|---|---|
Nginx | CentOS?7.x | 192.168.1.1 |
Harbor-01 | CentOS?7.x | 192.168.1.2 |
Harbor-02 | CentOS?7.x | 192.168.1.3 |
1.安裝 Docker
1)安裝基礎包
[root@Harbor-01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
2)配置 Docker 的 yum 源
[root@Harbor-01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Harbor-01 ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3)安裝并啟動 Docker
我們可以使用 yum list docker-ce --showduplicates | sort -r 命令來查看 Docker 的所有版本。
[root@Harbor-01 ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12
[root@Harbor-01 ~]# systemctl enable docker --now # 啟動并配置開機自啟動
2.安裝 Docker-Compose
[root@Harbor-01 ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose
[root@Harbor-01 ~]# chmod +x /usr/local/bin/docker-compose
[root@Harbor-01 ~]# docker-compose --version
3.配置 Harbor
1)安裝 Harbor
[root@Harbor-01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz
[root@Harbor-01 ~]# tar zxf harbor-offline-installer-v2.3.1.tgz
2)修改 Harbor 配置文件
[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# cp harbor.yml.tmpl harbor.yml
[root@Harbor-01 ~]# sed -i 's/reg.mydomain.com/192.168.1.2/' harbor.yml # 修改 Harbor 主機名
[root@Harbor-01 ~]# mkdir -p /app/harbor/data
[root@Harbor-01 ~]# sed -i '/data_volume/s/\/data/\/app\/harbor\/data/' harbor.yml # 修改存儲目錄
3)啟動 Harbor
[root@Harbor-01 ~]# ./install.sh
啟動時出現:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set 報錯,這個報錯是因為 Harbor 配置文件里的 HTTPS 相關配置 并沒有進行修改或是關閉處理。
重新安裝即可。
驗證:http://192.168.1.2(默認的賬號密碼為:admin/Harbor12345)
4.Harbor 高可用配置
1)安裝 Nginx 服務
[root@Nginx ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
[root@Nginx ~]# ls
anaconda-ks.cfg nginx-1.21.0.tar.gz
[root@Nginx ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
[root@Nginx ~]# cd /usr/src/nginx-1.21.0/
[root@Nginx nginx-1.21.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx nginx-1.21.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-stream \
--with-pcre && make && make install
[root@Nginx nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
2)修改 Nginx 配置文件
[root@Nginx ~]# cat <<END >> /usr/local/nginx/conf/nginx.conf
stream {
upstream harbor {
server 192.168.1.2:80;
server 192.168.1.3:80 backup; # 備用服務器
}
server {
listen 5000;
proxy_pass harbor;
proxy_timeout 300s;
proxy_connect_timeout 5s;
}
}
END
[root@Nginx ~]# nginx -s reload
[root@Nginx ~]# echo "192.168.1.1 harbor.tianya.com" >> /etc/hosts
上面配置 backup(備用)的原因,主要就是因為 Harbor 需要使用賬號密碼來進行驗證。
也就是說,當我們登錄到其中一臺 Harbor 主機上,可能還會輪詢到另一臺 Harbor 主機上,但是這另一臺 Harbor 主機并沒有使用賬號密碼來進行驗證。可能就會階段性的出現 401 Unauthorized(認證失敗)錯誤碼。
3)Harbor 界面配置
1)創建一個新的項目:http://192.168.1.2
2)在倉庫管理新建一個目標
3)在復制管理新建一個規則
因為我們做的是基于雙主的 Harbor 高可用,所以需要在備用的 Harbor 上也執行下上面的步驟。
5.驗證
1)在 Docker 上配置 Harbor 倉庫
[root@Harbor-01 ~]# cat <<END > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://ipbtg5l0.mirror.aliyuncs.com"
],
"insecure-registries": [
"http://harbor.tianya.com:5000"
]
}
END
[root@Harbor-01 ~]# systemctl daemon-reload && systemctl restart docker
[root@Harbor-01 ~]# docker login http://harbor.tianya.com:5000
Username: admin
Password: Harbor12345
2)驗證推送
[root@Harbor-01 ~]# docker pull nginx:1.18.0
[root@Harbor-01 ~]# docker tag nginx:1.18.0 harbor.tianya.com:5000/kubernetes/nginx:1.18.0
[root@Harbor-01 ~]# docker push harbor.tianya.com:5000/kubernetes/nginx:1.18.0
3)驗證高可用
[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# docker-compose down # 關閉 Harbor
[root@Harbor-02 ~]# docker pull harbor.tianya.com:5000/kubernetes/nginx:1.18.0
原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/122880335
相關推薦
- 2023-05-24 Golang?HTTP編程的源碼解析詳解_Golang
- 2022-05-06 Docker遠程連接設置的實現示例_docker
- 2022-11-20 關于rust的模塊引入問題_相關技巧
- 2023-04-19 yarn : 無法加載文件 D:xx\yarn.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請
- 2021-12-16 詳細講解HTTP協議工作方式_相關技巧
- 2022-03-28 Android實現調取支付寶健康碼_Android
- 2022-03-08 C#中BackgroundWorker類用法總結_C#教程
- 2022-07-10 SQL語句優化詳解
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支