Architecture Overview of Harbor 介绍了 harbor 每个组件的用途:
proxy: 反向代理,将请求代理到 harbor 的自服务
core: harbor 的核心功能实现,操作页面上提供的绝大多数功能
认证授权、配置管理、项目管理、配额管理、tag 管理、镜像扫描、webhook等
job: 任务队列
log: 日志收集
gc: gc 管理
chart: chart存放管理
registry: docker镜像存放管理
notary: 内容鉴真
docker login 的过程:
harbor 部署文件是一个 docker-compose.yml,各个组件被打包了镜像中,关键是找到 Docker 镜像的构建过程。
harbor v1.9.4 的编译构建过程:
$ docker pull golang:1.12.12
# NOTARYFLAG=true 和 CLAIRFLAG=true 可选
$ make install GOBUILDIMAGE=golang:1.12.12 COMPILETAG=compile_golangimage
查看 Makefile 可以知道镜像的构建文件位于 make/photon 目录中:
▾ make/
▸ kubernetes/
▸ migrations/
▾ photon/
▸ chartserver/
▸ clair/
▸ common/
▸ core/
▸ db/
▸ jobservice/
▸ log/
▸ nginx/
▸ notary/
▸ portal/
▸ prepare/
▸ redis/
▸ registry/
▸ registryctl/
Makefile
checkenv.sh*
harbor.yml
install.sh*
prepare*
pushimage.sh*
编译结束后,可以直接在 make 目录启动 harbor:
$ cd make
$ ./install.sh
部署 harbor 的时候,会生成一个 common 目录,这个目录中存放的是各个组件的配置文件:
▾ common/config/
▸ core/
▸ db/
▸ jobservice/
▸ log/
▾ nginx/
▸ conf.d/
nginx.conf
▸ registry/
▸ registryctl/
nginx/conf.d/nginx.conf 就是 nginx 使用转发配置:
location / {
proxy_pass http://portal/;
...
location /c/ {
proxy_pass http://core/c/;
...
location /api/ {
proxy_pass http://core/api/;
...
location /chartrepo/ {
proxy_pass http://core/chartrepo/;
...
location /v1/ {
return 404;
...
location /v2/ {
proxy_pass http://core/v2/;
...
location /service/ {
proxy_pass http://core/service/;
...
location /service/notifications {
return 404;