一、Harbor简介
1、什么是Harbor?
Harbor是一个开源的容器镜像存储软件,它通过基于角色的访问控制保护镜像,扫描镜像以查找漏洞,并将镜像标记为可信。作为一个CNCF孵化项目,Harbor提供了法规遵从性、性能和互操作性,可以帮助在Kubernetes和Docker等云计算平台上一致、安全地管理镜像
2、Harbor的特点
- 安全
安全和漏洞分析
内容签名和验证 - 管理
多租户
可拓展的API和Web UI
跨多个Harbor实例的镜像复制
身份集成和基于角色的访问控制
二、Harbor参数文件harbor.cfg
- 关于harbor.cfg 配置文件中有两类参数:所需参数和可选参数
1、所需参数
这些参数需要在配置文件harbor.cfg中设置,如果更新这些参数,需要重新运行install.sh脚本重新安装Harbor,参数才会生效,具体的参数如下:
hostname
:用于访问用户界面和register服务,它应该是目标机器的IP址或完全限定的域名(FQDN)
例如:192.168.7.168或者hub.aaa.cn,不要使用localhost或127.0.0.1为主机名ui_url_protocol
:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为httpsmax_job_workers
:镜像复制作业线程db_password
:用于db_auth的MySQL数据库root用户的密码customize_crt
:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌,当由外部来源提供密钥和根证书时,将此属性设置为offssl_cert
:SSL证书的路径,仅当协议设置为https时才应用ssl_cert_key
:SSL密钥的路径,仅当协议设置为https时才应用secretkey_path
:用于在复制策略中加密或解密远程register密码的密钥路径ssl_cert_key
:SSL密钥的路径,仅当协议设置为https时才应用secretkey_path
:用于在复制策略中加密或解密远程register密码的密钥路径
2、可选参数
这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbor后在Web UI上进行更新,如果进入harbor.cfg设置,只会在第一次启动Harbor时生效,随后这些参数的更新,harbor.cfg将被忽略
注意:如果选择通过UI设置这些参数,需要确保在启动Harbour后立即执行此操作。具体来说,必须在注册或在Harbor中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除了默认的 admin 用户),auth_mode 不能被修改。具体参数如下:
Email
:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要
请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUEharbour_admin_password
:管理员的初始密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应 UI中设置管理员的密码,默认的用户名/密码是:admin/Harbor12345auth_mode
:使用的认证类型,默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_authself_registration
:启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour中创建新用户
注意:当auth_mode设置为ldap_auth时,自注册功能将始终处于禁用状态,并且该标志被忽略Token_expiration
:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟project_creation_restriction
:用于控制哪些用户有权创建项目的标志。默认情况下, 每个人都可以创建一个项目,如果将其值设置为"adminonly",那么只有admin可以创建项目verify_remote_cert
:打开或关闭,默认打开。此标志决定了当Harbor与远程register实例通信时是否验证SSL/TLS证书,将此属性设置为 off 将绕过 SSL/TLS 验证,这在远程实例具有自签名或不可信证书时经常使用
默认情况下,Harbour将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如 S3、Openstack Swif、Ceph等。但需要更新common/templates/registry/config.yml文件
三、安装部署Harbor及镜像上传下载
- Harbor 被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版 上。服务端主机需要安装 Python、Docker 和 Docker Compose
1、下载Harbor安装程序
[root@h