说明:
版本2.6.0
一、安装要求
硬件
硬件类型 | 最小要求 | 建议 |
---|---|---|
CPU | 2 CPU | 4 CPU |
内存 | 4 GB | 8GB |
硬盘 | 40 GB | 160 GB |
软件
软件名称 | 版本 |
---|---|
Docker engine | 17.06.0-ce+或更高 |
Docker Compose | docker-compose(v1.18.0+)或者docker coompose v2(docker-compose-plugin) |
Openssl | 首选最新版本 |
网络端口
端口 | 协议 | 描述 |
---|---|---|
443 | https | Harbor门户和核心API接受在此端口上的https请求,你可以在配置文件中改变这个端口 |
4443 | https | 为了让Harbor连接到Docker Content Trust服务,只在启用Notary的时候需要,可以在配置文件中改变这个端口 |
80 | http | Harbor门户和核心API接受在此端口上的http请求,你可以在配置文件中改变这个端口 |
二、下载安装工具
安装工具有以下两种:
- 在线安装工具
- 从Docker Hub下载镜像,因此,安装工具的体积特别小
- 离线安装工具
- 如果安装Harbor的主机没有连接网络可以选择这种方式。
以上这两种方式的安装过程大致相同
1. 根据你的情况去下载对应的安装工具
如下图:
2. 验证安装工具是正版(可选步骤,如果你从官网下载的,不验证也没关系
)
*.asc
文件是OpenPGP文件,可以验证你下载的工具是不是正版
- ①、首先通过以下命令获取公钥
gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 644FF454C0B4115C
- ②、验证安装工具包是正版
在线安装工具包
gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-online-installer-version.tgz.asc
离线安装工具包
gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-offline-installer-version.tgz.asc
3. 解压安装工具包
在线安装工具包
tar xzvf harbor-online-installer-version.tgz
离线安装工具包
tar xzvf harbor-offline-installer-version.tgz
三、配置https访问Harbor
如果启用了Content Trust with Notary
去为镜像签名,那么,你必须使用https.
1. 生成一个CA证书
-
- 生成一个CA证书私钥
openssl genrsa -out ca.key 4096
-
- 生成CA证书
如果你使用FQDN
((Fully Qualified Domain Name)全限定域名)去连接你的Habor主机,则必须配置-subj的CN
选项,值为Habor的FQDN
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \ -key ca.key \ -out ca.crt
- 生成CA证书
2. 生成一个服务器证书
-
- 生成私钥
openssl genrsa -out yourdomain.com.key 4096
-
- 生成证书签名请求(CSR)
调整-subj
的值以体现你公司的信息,如果你用FQDN
((Fully Qualified Domain Name)全限定域名)去连接你的Habor主机,则必须配置-subj
,并且CN选项值为FQDN
,并且这个值也要用在key
选项和CSR
的文件名
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \ -key yourdomain.com.key \ -out yourdomain.com.csr
- 生成证书签名请求(CSR)
-
- 生成一个
x509 v3
扩展文件
不管你是使用FQDN
还是IP
连接你的Harbor主机,你必须创建这个文件,这样你才可以为Harbor主机生成符合Subject Alternative Name (SAN)
和x509 v3
扩展要求的证书
cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=yourdomain.com DNS.2=yourdomain DNS.3=hostname EOF
- 生成一个
-
- 使用
v3.ext
文件去为你的Harbor主机生成证书
用你安装Harbor的主机名替换掉下面CRS和CRT文件名中的yourdomain.com
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in yourdomain.com.csr \ -out yourdomain.com.crt
- 使用
3. 向Harbor和Docker提供证书
在生成ca.crt
,yourdomain.com.crt
和yourdomain.com.key
文件后,你必须将他们提供给Harbor和Docker,用它们来重新配置Harbor.
-
- 在你的Harbor主机上复制服务器证书和key到证书文件夹
cp yourdomain.com.crt /data/cert/ cp yourdomain.com.key /data/cert/
-
- 将
youdomain.com.crt
转换成yourdomain.com.cert
以供docker使用
Docker守护进程将.crt文件解释为CA证书,将.cert文件解释为客户端证书。
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
- 将
-
- 在Harbor主机上复制服务器证书,key和CA文件到Docker证书文件夹(可能需要你先创建这些文件夹)
注意:如果你将nginx默认端口443映射到了一个不同的端口,创建以下文件夹:cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/ cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/ cp ca.crt /etc/docker/certs.d/yourdomain.com/
/etc/docker/certs.d/yourdomain.com:port
或者/etc/docker/certs.d/harbor_IP:port
-
- 重启Docker Engine
systemctl restart docker
四、配置Harbor的yml文件
在你下载的安装工具包中包含harbor.yml文件,这个就是配置文件,其中必要的参数都没有被#注释,可选的参数都被#注释,请注意,不要删除或注释必要的参数
,这些参数可以不必修改,保持默认即可,以下两项必须修改:
hostname:
https:
hostname的值必须改成你自己安装Harbor机器的域名
如果你配置了https,请修改此项
其他的一些配置项,请参阅
五、 配置内置的TLS 作为Harbor组件之间的交互(可选的,如果你实在不想用https
)
在v2.0版本之前,Harbor组件(harbor-core,harbor-jobservice,proxy,harbor-portal,registry,registryctl,trivy_adapter,chartmuseum)之间使用http交互,2.0版本之后TLS
可以用在内部网络,在生产环境中,最好还是使用https.
-
- 在
harbor.yml
中设置
internal_tls: enable: true dir: /etc/harbor/tls/internal #包含内部证书的文件夹
- 在
-
- 证书可以通过
prepare
工具自动生成
也可以通过自己的CA去生成证书,只需要把证书和key放到内部tls证书目录并且命名为docker run -v /:/hostfs goharbor/prepare:v2.1.0 gencert -p /path/to/internal/tls/cert
harbor_internal_ca.key
、harbor_internal_ca.crt
,所有的组件都可以。但是这种方式有以下约束:- 所有的证书必须被单个唯一的CA签名
- 内部证书的文件名和证书文件的CN属性必须遵循以下表格中的约定
- 因为没有SAN的自签名证书在Golang 1.5中已被弃用,所以您必须在自己生成证书时将SAN扩展添加到您的证书文件中,否则Harbor实例将无法正常启动。SAN扩展中的DNS名称应与下表中的CN字段相同
- 证书可以通过
name | usage | CN |
---|---|---|
harbor_internal_ca.key | ca’s key file for internal TLS | N/A |
harbor_internal_ca.crt | ca’s certificate file for internal TLS | N/A |
core.key | core’s key file | N/A |
core.crt | core’s certificate file | core |
job_service.key | job_service’s key file | N/A |
job_service.crt | job_service’s certificate file | jobservice |
proxy.key | proxy’s key file | N/A |
proxy.crt | proxy’s certificate file | proxy |
portal.key | portal’s key file | N/A |
portal.crt | portal’s certificate file | portal |
registry.key | registry’s key file | N/A |
registry.crt | registry’s certificate file | registry |
registryctl.key | registryctl’s key file | N/A |
registryctl.crt | registryctl’s certificate file | registryctl |
notary_server.key | notary_server’s key file | N/A |
notary_server.crt | notary_server’s certificate file | notary-server |
notary_signer.key | notary_signer’s key file | N/A |
notary_signer.crt | notary_signer’s certificate file | notary-signer |
trivy_adapter.key | trivy_adapter.’s key file | N/A |
trivy_adapter.crt | trivy_adapter.’s certificate file | trivy-adapter |
chartmuseum.key | chartmuseum’s key file | N/A |
chartmuseum.crt | chartmuseum’s certificate file | chartmuseum |
六、运行安装脚本
1. 安装
可以安装Harbor使用不同的配置
- 默认安装,仅Harbor,不包含Notary、Trivy、Chart Repository Service
- 包含Noatary
- 包含Trivy
- 包含Chart Repository Service
- 包含两个或者所有的服务
①. 默认安装,不包含Notary、Trivy、Chart Repository Service
sudo ./install.sh
成功之后,打开你在harbor中配置的hostname就可以访问,默认的用户名密码是admin
和Harbor12345
然后就可以使用docker去使用了,例如:
docker login reg.yourdomain.com
docker push reg.yourdomain.com/myproject/myrepo:mytag
②. 包含Notary
此时,你必须配置https
sudo ./install.sh --with-notary
③. 包含Trivy
sudo ./install.sh --with-trivy
关于Trivy的更多信息,可以参考Trivy官方文档
④. 包含Chart Repository Service
sudo ./install.sh --with-chartmuseum
⑤. 包含多个
sudo ./install.sh --with-notary --with-trivy --with-chartmuseum
2. 通过Http连接到Harbor
如果你使用http而不是https,请注意要在docer daemon的配置文件(/etc/docker/daemon.json
)中进行配置
{
"insecure-registries" : ["myregistrydomain.com:5000", "0.0.0.0"]
}
编辑完记得重启docker
#重启docker
systemctl restart docker
#停止Harbor
docker-compose down -v
#重启启动Harbor
docker-compose up -d
七、重新配置Harbor
运行安装工具包中的prepare
bash ./prepare
停止和启动Harbor
docker-compose down -v
docker-compose up -d