网站首页 > 精选文章 / 正文
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安装
猜你喜欢
- 2024-12-16 「云原生」Kubernetes(k8s)最完整版环境部署(V1.24.1)
- 2024-12-16 通过docker-compose 快速部署 harbor
- 2024-12-16 吊炸天的 Docker 图形化工具 Portainer,必须推荐给你
- 2024-12-16 Harbor私有镜像仓库的管理与使用 私有docker镜像仓库
- 2024-12-16 一文详解 Jenkins 与 Docker 的自动化 CI/CD 实战
- 2024-12-16 Docker打包制作openoffice镜像(Dockerfile方式),并处理中文乱码
- 2024-12-16 Devops实践之K8S部署:Jenkins部署Vue和Php环境
- 2024-12-16 替代虚拟机的容器Docker安装教程——(Windows版)
- 2024-12-16 一个值得信赖的云原生注册中心项目
- 2024-12-16 Linux环境中部署Harbor私有镜像仓库