Harbor(https://goharbor.io/)是一个开源的企业级镜像管理工具,它提供了一个安全、可靠、可扩展的平台,用于存储、管理和分发Docker镜像。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。

基本介绍

代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型和 URI 转发给不同的后端服务进行处理。

功能层

  • Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。
  • Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。
  • JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。
  • Docker Distribution:Harbor 通过 Distribution 实现 Artifact 的读写和存取等功能。
  • RegistryCtl:Docker Distribution 的控制组件。
  • Notary(可选):基于 TUF 提供镜像签名管理的功能。
  • 扫描工具(可选):镜像的漏洞检测工具。
  • ChartMuseum(可选):提供 API 管理非 OCI 规范的 Helm Chart,随着兼容 OCI 规范的 Helm Chart 在社区上被更广泛地接受,Helm Chart 能以 Artifact 的形式在 Harbor 中存储和管理,不再依赖 ChartMuseum,因此 Harbor 可能会在后续版本中移除对 ChartMuseum 的支持。

数据层

  • Redis:主要作为缓存服务存储一些生命周期较短的数据,同时对于 JobService 还提供了类似队列的功能。
  • PostgreSQL:存储 Harbor 的应用数据,比如项目信息、用户与项目的关系、管理策略、配置信息、Artifact 的元数据等等。
  • Artifact 存储:存储 Artifact 本身的内容,也就是每次推送镜像、Helm Chart 或其他 Artifact 时,数据最终存储的地方。默认情况下,Harbor 会把 Artifact 写入本地文件系统中。用户也可以修改配置,将 Artifact 存储在外部存储中,例如亚马逊的对象存储 S3、谷歌云存储 GCS、阿里云的对象存储 OSS 等等。

前期准备

所有的容器都跑在docker上面

https://github.com/goharbor/harbor/releases/tag/v2.10.2,下载最新的offline版本,然后上传到服务器

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

修改配置

cp harbor.yml.tmpl harbor.yml
hostname: 192.168.1.93

# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80

# https related config
#https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
# enable strong ssl ciphers (default: false)
# strong_ssl_ciphers: false

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123

hostname 修改成自己的可以访问的服务器地址

port 可以访问的端口,默认是80

harbor_admin_password 管理账号密码

password 数据库密码

把https暂时注释掉

脚本安装

 bash install.sh
[Step 0]: checking if docker is installed ...

Note: docker version: 24.0.5

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.25.0

[Step 2]: loading Harbor images ...
Loaded image: goharbor/harbor-db:v2.10.2
Loaded image: goharbor/harbor-jobservice:v2.10.2
Loaded image: goharbor/redis-photon:v2.10.2
Loaded image: goharbor/registry-photon:v2.10.2
Loaded image: goharbor/harbor-log:v2.10.2
Loaded image: goharbor/harbor-portal:v2.10.2
Loaded image: goharbor/harbor-core:v2.10.2
Loaded image: goharbor/harbor-registryctl:v2.10.2
Loaded image: goharbor/harbor-exporter:v2.10.2
Loaded image: goharbor/nginx-photon:v2.10.2
Loaded image: goharbor/trivy-adapter-photon:v2.10.2
Loaded image: goharbor/prepare:v2.10.2

[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /home/forenet/harbor

[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db ... done
Creating registry ... done
Creating harbor-portal ... done
Creating redis ... done
Creating registryctl ... done
Creating harbor-core ... done
Creating harbor-jobservice ... done
Creating nginx ... done
✔ ----Harbor has been installed and started successfully.----

到这里Harbor就全部安装好了

访问:http://192.168.1.93 账号/密码:admin/Harbor12345

0

本文为原创文章,转载请注明出处,欢迎访问作者网站(和而不同)

发表评论

error: Content is protected !!