harbor-v2.2.2 高可用 HTTPS部署
介绍
vmware 官方开源服务器列表地址: https://vmware.github.io/harbor/cn/
harbor 官方 github 地址: https://github.com/vmware/harbor/
harbor 官方网址: https://goharbor.io/
harbor 功能介绍
- 基于角色访问控制, 用户与 Docker 镜像仓库通过项目进行组织管理, 一个用户可以对多个项目仓库在同一命名空间 project 里有不同的权限,
- 镜像复制: 镜像可以在多个 Registry 实例中复制同步, 尤其适合于负载均衡,高可用, 混合云和多云的场景.
- 图形化用户界面: 用户可以通过浏览器来浏览, 检索当前Docker镜像仓库, 管理项目和命名空间,
- AD\LDAP支持: Harbor 可以继承企业内部已有的AD/LDAP, 用于鉴权认证管理,
- 审计管理: 所有针对镜像仓库的操作都可以被记录追溯, 用于审计管理.
- 国际化, 目前拥有中文, 英文, 德文, 日文, 和俄文的本地化版本更多语言将会添加进来.
- RESTful API: 提供给管理员对Harbor 更多的操控, 是的与其他管理软件继承变得更容易.
- 部署简单: 提供在线和离线两种安装工具, 也可以安装到 Vsphere 平台(OVA 方式) 虚拟化设备.
harbor 组件介绍
- nginx: harbor 的一个反向代理组件, 代理 Registry, ui, token等服务, 这个代理会转发 harbor web 和 docker client 的各种请求到后端服务器上.
- harbor-adminserver: harbor 系统管理接口, 可能修改系统配置以及获取系统信息.
- harbor-db: 存储项目的元数据, 用户, 规则, 赋值策略等信息
- harbor-jobservice: harbor 里面主要是为了镜像仓库之前同步使用的.
- harbor-log: 手机其他harbor的日志信息.
- harbor-ui: 一个用户界面模块, 用来管理 registry.
- registry: 储存 docker images 的服务. 并且提供 pull/push服务.
- regis: 储存缓存信息.
- webhook: 当 registry 中的 image 状态发生变化的时候区记录更新日志, 复制等操作.
- token service: 在 docker client 进行 pull/push 的时候负责 token 的发送.
基于http方式高可用部署
- 下载地址: https://github.com/vmware/harbor/releases
- 安装文档: https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
下载软件并解压
1 [root@ops110 ~]# cd /opt
2 [root@ops110 ops]# wget https://github.com/goharbor/harbor/releases/download/v2.2.2/harbor-offline-installer-v2.2.2.tgz
3 [root@ops110 ops]# tar xf harbor-offline-installer-v2.2.2.tgz
4 [root@ops110 ops]# cd harbor/
修改配置文件并配置
1 root@k8s207:/opt/harbor# cat harbor.yml | grep -Ev "^#|^$|^.*#"
2 hostname: 172.16.0.207
3 http:
4 port: 8888
5 harbor_admin_password: devops
6 database:
7 password: root123
8 max_idle_conns: 50
9 max_open_conns: 1000
10 data_volume: /data/harbor
11 trivy:
12 ignore_unfixed: false
13 skip_update: false
14 insecure: false
15 jobservice:
16 max_job_workers: 10
17 notification:
18 webhook_job_max_retry: 10
19 chart:
20 absolute_url: disabled
21 log:
22 level: info
23 local:
24 rotate_count: 50
25 rotate_size: 200M
26 location: /var/log/harbor
27 _version: 2.2.0
28 proxy:
29 http_proxy:
30 https_proxy:
31 no_proxy:
32 components:
33 - core
34 - jobservice
35 - trivy
36 root@k8s207:/opt/harbor# ./install.sh
haproxy配置文件
1 root@k8s207:/opt/harbor# cat /etc/haproxy/haproxy.cfg
2 global
3 log 127.0.0.1 local2
4 log /dev/log local1 notice
5 chroot /var/lib/haproxy
6 stats socket /run/haproxy/admin.sock mode 660 level admin
7 stats timeout 30s
8 user haproxy
9 group haproxy
10 daemon
11
12 # Default SSL material locations
13 # ca-base /etc/ssl/certs
14 # crt-base /etc/ssl/private
15
16 # Default ciphers to use on SSL-enabled listening sockets.
17 # For more information, see ciphers(1SSL). This list is from:
18 # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
19 # ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
20 # ssl-default-bind-options no-sslv3
21
22 defaults
23 log global
24 mode tcp
25 option httplog
26 option dontlognull
27 retries 3
28 timeout http-request 10s
29 timeout queue 1m
30 timeout connect 10s
31 timeout client 1m
32 timeout server 1m
33 timeout http-keep-alive 10s
34 timeout check 10s
35 maxconn 600
36 timeout connect 5000
37 timeout client 50000
38 timeout server 50000
39 errorfile 400 /etc/haproxy/errors/400.http
40 errorfile 403 /etc/haproxy/errors/403.http
41 errorfile 408 /etc/haproxy/errors/408.http
42 errorfile 500 /etc/haproxy/errors/500.http
43 errorfile 502 /etc/haproxy/errors/502.http
44 errorfile 503 /etc/haproxy/errors/503.http
45 errorfile 504 /etc/haproxy/errors/504.http
46
47 listen stats
48 mode http
49 bind :9090
50 stats enable
51 stats hide-version
52
53 stats uri /haproxyadmin?stats
54 stats realm Haproxy\ Statistics
55 stats auth admin:admin
56
57 frontend main
58 bind 0.0.0.0:80
59 default_backend harbor
60
61 backend harbor
62 balance leastconn
63 server harbor1 172.16.0.207:8888 check port 8888 maxconn 300
64 server harbor2 172.16.0.208:8888 check port 8888 maxconn 300
keeplived配置文件
root@k8s207:/opt/harbor# cat /etc/keepalived/keepalived.conf
global_defs {
smtp_connect_timeout 30
router_id keeplived_207
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.0.10
}
}
访问测试
配置高可用
仓库管理 -> 添加目标
作者:闫世成
出处:http://cnblogs.com/yanshicheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题或建议,请联系上述邮箱,非常感谢。