前戏
Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及 审计日志等,足以满足基本企业需求。
官方:https://goharbor.io/
Github:https://github.com/goharbor/harbor
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服务 |
redis | 存储缓存信息 |
webhook | 当registry中的image状态发生变化的时候去记录更新日志、复制等操作 |
token service | 在docker client进行pull/push的时候负责token的发放 |
Harbor安装的先决条件
Docker安装(linux)_51CTO博客_linux 安装 docker
1、服务器硬件配置:
Resource | Minimum | Recommended |
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
2、软件
Software | Version | Description |
Docker engine | Version 17.06.0-ce+ or higher | For installation instructions, see Docker Engine documentation |
Docker Compose | Version 1.18.0 or higher | For installation instructions, see Docker Compose documentation |
Openssl | Latest is preferred | Used to generate certificate and keys for Harbor |
3、端口
Port | Protocol | Description |
443 | HTTPS | Harbor portal and core API accept HTTPS requests on this port. You can change this port in the configuration file. |
4443 | HTTPS | Connections to the Docker Content Trust service for Harbor. Only required if Notary is enabled. You can change this port in the configuration file. |
80 | HTTP | Harbor portal and core API accept HTTP requests on this port. You can change this port in the configuration file. |
Harbor安装有2种方式:
• 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
• 离线安装:安装包包含部署的相关镜像,因此安装包比较大
部署步骤
1.解压安装包
2.根据模板文件创建harbor配置文件
3.执行命令下载
4.访问harbor
使用默认用户密码登录
Harbor基本使用
1、配置http镜像仓库可信任
# vi /etc/docker/daemon.json
{"insecure-registries":["reg.ctnrs.com"]}
# systemctl restart docker
2、打标签
# docker tag centos:7 reg.ctnrs.com/library/centos:7
3、上传
# docker push reg.ctnrs.com/library/centos:7
4、下载
docker pull reg.ctnrs.com/library/centos:7
harbor配置文件详情**
使用vi/vim打开刚才创建的配置文件harbor.yml查看配置文件详细情况。
服务访问地址
访问管理UI和注册表服务的IP地址或主机名。不能使用localhost或127.0.0.1,因为Harbor需要由外部客户端访问。值填写Harbor服务的主机IP或主机名(域名访问方式)。
服务访问方式(端口)
http的端口,默认为80。如果启用https,此端口将重定向到https端口。模板文件模式禁用https安全访问方式(适合初学者或测试环境的配置)。生产环境需要将https部分取消注释,以增加Harbor的安全性。
是否启用Harbor组件之间的tls通信
是否启用外部代理
如果启用,那么主机名将不再使用,默认禁用,值为外部代理的地址。
配置管理员密码
管理员admin的初始密码,默认为Harbor12345,只在第一次安装harbor时起作用,安装时不需要修改,登录Harbor UI管理界面后,为保证密码的安全性,强烈建议修改。管理员admin的初始密码,默认为Harbor12345,只在第一次安装harbor时起作用,安装时不需要修改,登录Harbor UI管理界面后,为保证密码的安全性,强烈建议修改。
数据库配置
harbor数据库配置部分,harbor使用postgresql作为数据库。
password: harbor数据库root用户的密码,生产环境建议修改;
max_idle_conns: 空闲连接池中的最大连接数。如果小于等于0,则不保留空闲连接。
max_open_conns: 打开到数据库的最大连接数。如果小于等于0,则对打开的连接数没有限制。
data_volume: 数据存储目录,harbor中的每个组件的数据都存储在该指定路径下的子目录中。
是否启用外部存储
如果需要使用外部存储,则将该部分的注释去掉,生产环境建议使用外部存储,
ca_bundle: 自定义根ca证书的路径,该证书将被注入信任库。
filesystem: 存储后端,默认为文件系统,选项包括文件系统、azure、gcs、s3、swift、NFS和oss存储。本专栏后面会出后端存储的文章。
扫描器配置
是否启用Trivy扫描器来扫描镜像的漏洞,默认未启用。
job服务的最大数量
webhook配置
默认启用,默认的值为10.
Chart配置
harbor不仅可以存储镜像,还可以存Chart,当helm服务器使用。
日志配置
配置harbor的日志信息
rotate_count:日志文件在被删除之前旋转的次数,如果为0,旧版本将被删除而不是旋转。
rotate_size:只有当日志文件的大小大于该值字节时,才会对其进行旋转。如果size后跟k,则假定大小以KB为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。那么100、100k、100M和100G。
location: 主机上存储日志的目录
Harbor版本号
因为配置文件是使用模板文件创建的,需要将版本号修改为安装包一样的版本,否则按照会失败。
是否启用外部数据库
如果要使用外部数据库,请取消注释该部分来启用。注意与前面的外部数据区分。 目前Harbor仅支持PostgraSQL数据库,需要手动在外部的PostgreSQL上创建harbor、notary_signer、notary_servers三个数据库,Harbor启动时会自动在对应数据库下生成表。配置如下:
是否启用外部redis缓存服务器
host: redis: redis的地址:端口;
sentinel_master_set: 必须设置为支持redis+sentinel,仅在使用 Sentinel 模式时设置;
registry_db_index: 注册表的数据库索引;
jobservice_db_index: job服务的数据库索引;
UAA身份验证
是否通过自签名证书托管的uaa实例证书的信任,2.4.0开始不支持该配置。
全局代理
为组件配置http代理,组件不需要通过http代理相互连接。如果要禁用代理,请从“components”中删除组件,如果要使用代理进行复制,必须启用代理。如果要禁用代理,请将域添加到“no_proxy”字段后面,
启用指标采集组件
是否启用指标采集组件来收集Harbor相关的指标,默认未启用,该部分配置主要用来监控Harbor