您的位置:首页 > 运维架构 > Docker

Docker私有仓库Harbor-v1.10.1 Https Ip方式访问的安装配置

2020-04-09 16:50 225 查看

一、简介

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor官方网站 https://goharbor.io/
Harbor项目开源地址 https://github.com/goharbor/harbor
Harbor被部署为多个Docker容器。因此,您可以将其部署在任何支持Docker的Linux发行版上。目标主机需要Docker和Docker Compose才能安装。

二、环境准备

1、硬件需求

下表列出了用于部署Harbor的最低和建议的硬件配置。

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.

4、安装方式

官方发布git仓库页面下载Harbor安装程序 。
下载联机安装程序或脱机安装程序。
在线安装包:https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-online-installer-v1.10.1.tgz
离线安装包:https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
离线安装包百度云:
链接:https://pan.baidu.com/s/1JkiJoU2PQVMN-uhX0BWTsw 提取码:w55i

三、安装部署

本文采用离线方式安装

1、安装docker docker-compose

wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install epel-release -y
yum install docker-ce -y
yum install docker-compose -y
systemctl start docker &&systemctl enbale docker && systemctl status docker

查看docker版本和docker-compose版本

[root@hub2 /]# docker info
Client:
Debug Mode: false

Server:
Containers: 11
Running: 11
Paused: 0
Stopped: 0
Images: 103
Server Version: 19.03.1

[root@hub2 /]# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9

2、下载离线安装包并解压

#官方镜像下载,服务器在国外,速度较慢
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
#解压缩
tar xvf harbor-offline-installer-v1.10.1.tgz
#查看
[root@hub2 ~]# tree harbor
harbor
├── common
│   └── config
│       ├── core
│       │   ├── app.conf
│       │   ├── certificates
│       │   └── env
│       ├── db
│       │   └── env
│       ├── jobservice
│       │   ├── config.yml
│       │   └── env
│       ├── log
│       │   ├── logrotate.conf
│       │   └── rsyslog_docker.conf
│       ├── nginx
│       │   ├── conf.d
│       │   └── nginx.conf
│       ├── registry
│       │   ├── config.yml
│       │   └── root.crt
│       └── registryctl
│           ├── config.yml
│           └── env
├── common.sh
├── docker-compose.yml
├── harbor.v1.10.1.tar.gz
├── harbor.yml  #配置文件
├── install.sh
├── LICENSE
└── prepare

3、配置对Harbor的HTTPS访问

注:如果不使用https方式可以跳过此步骤,直接修改文件后部署,使用http方式在部署后需要在docker上添加为信任节点

vim  /etc/docker/daemon.json
{
"insecure-registries" : ["192.168.21.210:5000"] #私有仓库地址
}
3.1生成证书颁发机构证书

生成CA证书私钥。

openssl genrsa -out ca.key 4096

生成CA证书。

#修改 yourdomain.com 为你的domain或者IP地址
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
3.2生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crt和yourdomain.com.key。

  • 生成私钥
openssl genrsa -out yourdomain.com.key 4096
  • 生成证书签名请求(CSR)

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为公用名(CN)属性,并在密钥和CSR文件名中使用它。

#使用域名或者Ip地址替换命令中的"CN=yourdomain.com",域名需替换
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
  • 生成一个x509 v3扩展文件
    无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS条目以反映您的域。
#官方模板
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
#使用ip直接访问方式修改模板x.x.x.x替换为你要设置的ip
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:x.x.x.x
EOF

注:使用域名访问方式,直接修改官方模板中的DNS.1 DNS.2 ...

  • 使用该v3.ext文件为您的Harbor主机生成证书。
#将yourdomain.comCRS和CRT文件名中的替换为Harbor主机名。
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.3提供证书给Harbor和Docker
mkdir -p /data/cert/
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/
3.4 docker客户端证书文件转换

转换yourdomain.com.crt为yourdomain.com.cert,供Docker使用。
Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
3.5服务器证书拷贝

将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中。您必须首先创建适当的文件夹。

mkdir  -p /etc/docker/certs.d/yourdomain.com/
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/

如果将默认nginx端口443 映射到其他端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port。
以下示例说明了使用自定义证书的配置。

/etc/docker/certs.d/
└── yourdomain.com:port
├── yourdomain.com.cert  <-- Server certificate signed by CA
├── yourdomain.com.key   <-- Server key signed by CA
└── ca.crt               <-- Certificate authority that signed the registry certificate

4、修改配置文件harbor.yml

配置文件说明详情见官方文档

vim /harbor/harbor.yml
hostname:      #Ip或者域名
...
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/yourdomain.com.crt    #证书文件路径
private_key: /data/cert/yourdomain.com.key    #证书文件路径
...
harbor_admin_password: Harbor12345   #admin管理员密码此为初始密码

5、部署或重新配置harbor

5.1运行prepare脚本以启用HTTPS。

Harbor将nginx实例用作所有服务的反向代理。您可以使用prepare脚本来配置nginx为使用HTTPS。

./prepare
5.2如果Harbor正在运行,请停止并删除现有实例,镜像数据保留在文件系统中,不会丢失任何数据。
docker-compose down -v
5.3重启harbor:
docker-compose up -d

四、验证HTTPS连接

为Harbor设置HTTPS之后,您可以通过执行以下步骤来验证HTTPS连接。

1、浏览器验证

打开浏览器,然后输入https://yourdomain.com。它应该显示Harbor界面。
某些浏览器可能会显示警告,指出证书颁发机构(CA)未知。使用不是来自受信任的第三方CA的自签名CA时,会发生这种情况。您可以将CA导入浏览器以删除警告。

在运行Docker守护程序的机器上,检查/etc/docker/daemon.json文件以确保-insecure-registry未为https://yourdomain.com设置该选项。

2、Docker客户端验证

从Docker登录Harbor。

docker login yourdomain.com

如果已将nginx443端口映射到其他端口,请在login命令中添加该端口。

docker login yourdomain.com:port
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: