MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

私有化容器仓库在线安装启用HTTPS访问——Harbor

2024-12-16 13:23 huorong 精选文章 5 ℃ 0 评论

Harbor 使命

Harbor的使命是成为kubernetes值得信赖的云原生存储库。

Harbor介绍

?Harbor 是一个开源注册仓库,它通过策略和基于角色的访问控制来保护工件,确保扫描映像并消除漏洞,并将映像标记为受信任。?Harbor是CNCF项目,提供合规性、性能和互操作性,帮助跨云原生计算平台(k8s,Docker)一致、安全地管理工件。

Harbor安装和配置

先决条件

Harbor部署为多个Docker容器。可以在任何支持Docker的Linux发行版上部署。目标主机需要具备docker及docker-compose环境。

软件要求

软件

版本

描述

Docker Engine

V 17.06.0-ce or later

Docker 引擎版本要求

Docker compose

Version 1.18.0 或更高

Docker 编排

Openssl

建议最新版本

未Harbor提供证书和key

网络端口

Port

协议

描述

443

HTTPS

Harbor Portal和核心API 通过此端口接受HTTPS请求

4443

HTTPS

连接到Harbor的 Docker Content Trust服务,仅当启用了公证人时需要

80

HTTP

Harbor Portal和核心API 通过此端口接受HTTP请求

下载harbor 安装程序

可以通过官方 release页面下载Harbor安装程序——在线安装或者离线安装。

  • 在线安装:通过docker hub下载harbor images,这种安装方式,安装器体积较小
  • 离线安装:如果服务器所在网络环境无法连接互联网,可选择离线安装包。该安装包是Harbor官方与构建的镜像,相比于在线安装,体积比较大

下载压缩包之后,执行解压

# 在线安装包
tar -zxvf harbor-online-installer-v2.5.3.tgz
# 离线安装包
tar -zxvf harbor-offline-installer-v2.5.3.tgz

(可选,建议)配置HTTPS访问Harbor

默认情况下,Harbor不附带证书。

要配置HTTPS,必须创建SSL证书。可以使用第三方受信任的CA颁发机构的证书也可使用自己对自己签发的证书。该小节将使用OpenSSL来创建CA,并使用CA 签发服务器证书和Client证书。

(一)生成证书颁发机构证书

  • 生成证书颁发机构证书私钥
openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
..................................++++
......................................................................................................................................++++
e is 65537 (0x010001)
  • 生成证书颁发机构证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=QingDao/L=QingDao/O=example/OU=Runo/CN=harbor.domain.com" \
-key ca.key \
-out ca.crt

(二)生成服务器证书

  • 生成服务器证书私钥
openssl genrsa -out harbor.domain.com.key 4096
  • 生成证书签名请求 (CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=QingDao/L=QingDao/O=example/OU=Runo/CN=harbor.domain.com"
-key harbor.domain.com.key \
-out harbor.domain.com.csr
  • 生成 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=harbor.domain.com
DNS.2=harbor.domain
DNS.3=harbor.domain.com
EOF
  • 使用 v3.ext 文件为您的 Harbor 主机生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.domain.com.csr \
-out harbor.domain.com.crt

(三)将证书提供给Docker和Harbor

  • 拷贝服务器证书和key到harbor主机的证书文件夹
# 将服务器证书和key拷贝到harbor服务的cert目录
cp harbor.domain.com.crt /data/harbor-cert/
cp harbor.domain.com.key /data/harbor-cert/
[root@harbor harbor-cert]# tree /data/harbor-cert/
/data/harbor-cert/
├── harbor.domain.com.crt
└── harbor.domain.com.key
  • 转换服务器证书文件,给Docker使用:yourdomain.com.crt ==> yourdomain.com.cert
openssl x509 -inform PEM -in harbor.domain.com.crt -out harbor.domain.com.cert

Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书。

  • 拷贝服务器证书、key和证书颁发机构的CA文件到Harbor主机上的Docker 证书文件夹
# 将转换后的服务器证书和key文件和证书颁发机构(自签)的证书 拷贝到docker配置文件目录下
cp ca.crt /etc/docker/certs.d/harbor.domain.com/
cp harbor.domain.com.cert /etc/docker/certs.d/harbor.domain.com/
cp harbor.domain.com.key /etc/docker/certs.d/harbor.domain.com/
[root@harbor harbor-cert]# tree /etc/docker/certs.d/
/etc/docker/certs.d/
└── harbor.domain.com
    ├── ca.crt
    ├── harbor.domain.com.cert
    └── harbor.domain.com.key
  • 重启Docker Engine

(四)配置操作系统信任证书

cp harbor.domain.com.crt /etc/pki/ca-trust/source/anchors/harbor.domain.com.crt
update-ca-trust

(五)证书相关文件

  • -rw-r--r--. 1 root root 2049 7月 13 14:09 ca.crt
    -rw-------. 1 root root 3247 7月 13 14:09 ca.key
    -rw-r--r--. 1 root root 41 7月 13 14:25 ca.srl
    -rw-r--r--. 1 root root 2134 7月 13 14:25 harbor.domain.com.crt
    -rw-r--r--. 1 root root 1708 7月 13 14:12 harbor.domain.com.csr
    -rw-------. 1 root root 3243 7月 13 14:10 harbor.domain.com.key
    -rw-r--r--. 1 root root 280 7月 13 14:21 v3.ext

配置 Harbor YML文件

修改harbor配置文件harbor.yml

[root@harbor harbor]# cat harbor.yml |grep -Ev "^#|^$|#"
hostname: 10.100.202.211
http:
port: 80
https:
port: 443
certificate: /data/harbor-cert/harbor.domain.com.crt # 配置SSL证书
private_key: /data/harbor-cert/harbor.domain.com.key # 配置SSL key
harbor_admin_password: ****** # 设置harbor 管理员账号admin的免密
database:
password: ****** # 设置PostgreSQL 数据库的密码
max_idle_conns: 100
max_open_conns: 900
data_volume: /data/harbor-data
trivy:
ignore_unfixed: false
skip_update: false
offline_scan: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.5.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
upload_purging:
enabled: true
age: 168h
interval: 24h
dryrun: false

执行安装脚本

./install.sh

Harbor Web界面

harbor所需各容器启动完成后,通过IP地址进行访问


至此,Harbor仓库搭建完成。

Tags:harbor安装

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言