Harbor v2.9.0版本变化及离线部署

云计算 云原生
Harbor 现在支持 OCI Distribution Spec v1.1.0-rc2,并增加了对符号签名和 Nydus 转换作为引用的支持。

版本变化

1.1 更新内容

  • 安全中心管理员用户现在可以访问有价值的安全见解,其中包括扫描和未扫描的项目数量、危险项目和 CVE 的识别,以及使用多个组合条件对漏洞的高级搜索功能。
  • GC 增强功能通过详细的 GC 执行历史记录提高可见性,并启用并行删除以加快 GC 触发器。
  • 支持 OCI 分发规范 v1.1.0-rc2Harbor 现在支持 OCI Distribution Spec v1.1.0-rc2,并增加了对符号签名和 Nydus 转换作为引用的支持。
  • 自定义横幅消息管理员现在可以设置显示在 Harbor 网页顶部的自定义横幅消息,其也是在生产环境比较实用的功能,在harbor的运维过程中,Harbor中存储多个项目的镜像,如果存储空间满时可向用户发布清理镜像的”通告“而不需要管理员来清理镜像,以防止重要的镜像被误删的情况。

功能使用如图位置:

图片图片

  • 配额更新提供程序引入了一种利用 Redis 在推送镜像时配额更新期间进行乐观锁定的新机制。有关启用和使用此功能的说明,请参阅 https://github.com/goharbor/perf/wiki/Quota-Update 中的文档。
  • 移除Notary从版本 v2.9.0 开始,Harbor 不再在用户界面或后端中包含 Notary。详情请浏览至此页面。

1.2 已知问题

如果使用版本低v20.10.10的Docker在线/离线安装Harbor 2.9.0,则可能会遇到Harbor数据库容器无法启动的问题。此问题正在 (#19141) 进行跟踪。有关此特定问题的更多详细信息,请访问此页面(timescale/timescaledb-docker-ha#260)。

为避免此问题,建议在将 Harbor v20.10.10 与在线/离线安装程序一起使用时,确保 Docker 版本等于或大于 2.9.0。

安装部署(离线)

适用于多个版本,离线安装的步骤基本没什么变化。

2.1 主机初始化

① 关闭SELinux、swap
$ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config
  • 禁用Swap
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
$ swapoff -a
② 配置repo源
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ wget http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo  -o  /etc/yum.repos.d/docker-ce.repo
$ yum clean all
③ 安装docker-ce
  • 下载rpm包并安装
$ mkdir docker-ce
$ yum install  -y docker-ce  --downloadonly  --downloaddir=./docker-ce/
$ yum install  -y rpm/*.rpm
  • 启动docker
$ systemctl enable --now docker
  • 修改docker配置 在insecure-registries参数后填写Harbor的地址及端口
$ cat /etc/docker/daemon.json 
{
 "registry-mirrors": ["http://127.0.0.1:65001"], 
 "insecure-registries": ["192.168.2.19:443","134.194.15.150:1021"],  "storage-driver": "overlay2",
 "exec-opts": ["native.cgroupdriver=systemd"] ,
 "graph": "/dcos/data/docker",
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "500m"
     }
}
  • 重启服务
$ systemctl daemon-reload && systemctl restart docker
④ 安装docker-compose

docker-compose的版本在1.18.0+

$ wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
$ mv docker-compose-linux-x86_64   /usr/local/bin/docker-compose
$ chmod +x   /usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
⑤ 配置内核参数

配置3个必要的内核参数,其他内核参数可自行添加。

$ modprobe br_netfilter          #加载内核模块(临时)
$ cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF 
$ sysctl -p

net.ipv4.ip_forward:开启路由转发(不配置该参数,当主机重启后,服务状态正常,却无法访问到服务器)

⑥ 安装cfssl证书工具(可选)

https模式需要签发证书,本处使用cfssl向Harbor签发证书,

下载二进制可执行文件并放入到/usr/local/bin/下并给执行权限即完成。

$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64 -O /usr/local/bin/cfssl
$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssljson_1.6.0_linux_amd64 -O /usr/local/bin/cfssljson
$ wget -c https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl-certinfo_1.6.0_linux_amd64 -O /usr/local/bin/cfssl-certinfo
$ chmod +x  /usr/local/bin/cfssl*
cfssl version
Version: 1.6.0
Runtime: go1.18

2.2 签发HTTPS证书(可选)

http模式可不需要进行本处操作,生产环境建议使用https模式来保障安全。

本处使用cfssl向Harbor签发证书,详细见文章: https://mp.weixin.qq.com/s/T9xug20FNU3zOodno5IwPA

① 生成证书颁发机构证书(CA)

自建CA证书颁发机构,使用刚才安装好的cfssl工具为harbor制作颁发证书

  • 生成并修改CA默认配置文件
$ mkdir -p  /app/harbor/ssl/         #创建证书存放目录
$ cfssl print-defaults  config > /app/harbor/ssl/ca-config.json            #生成默认配置文件
$ cat <<EOF > /app/harbor/ssl/ca-config.json
{
    "signing": {
        "default": {
            "expiry": "87600h"  
        },
        "profiles": {
            "harbor": {
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF

图片图片

  • 生成并修改默认csr请求文件
$ cfssl  print-defaults csr  > /app/harbor/ssl/ca-csr.json
$ cat <<EOF > /app/harbor/ssl/ca-csr.json
{
    "CN": "harbor",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing"
        }
    ]
}
EOF

图片图片

  • 初始化CA证书
$ cfssl gencert -initca /app/harbor/ssl/ca-csr.json | cfssljson -bare /app/harbor/ssl/ca 
$ ls /app/harbor/ssl/
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem

可以看到,当前目录下新生成了ca.csr、ca-key.pem、ca.pem这3个文件。ca-key.pem、ca.pem这两个是CA相关的证书,通过这个CA来向Harbor颁发证书。

图片图片

② CA给Harbor颁发证书

Harbor使用类似于申请表的一个请求文件向CA机构申请证书,CA机构则根据配置文件(证书策略)和请求文件(申请表)向Harbor颁发证书。

  • 创建并修改Harbor证书请求文件

使用以下命令创建一个默认的请求文件,但默认的部分参数需要修改。

$ cfssl print-defaults csr > /app/harbor/ssl/harbor-csr.json
$ cat /app/harbor/ssl/harbor-csr.json
{
    "CN": "harbor",
    "hosts": [
        "127.0.0.1",
        "192.168.2.19",
        "lidabai.harbor.cn"
    ],  
    "key": {
        "algo": "rsa",
        "size": 2048
    },  
    "names": [
        {   
            "C": "CN",
            "ST": "BeiJing",
            "L": "BeiJing"
        }   
    ]   
}

图片图片

  • CA向Harbor颁发证书

CA使用请求文件根据配置向Harbor颁发证书。

$ cfssl gencert -ca=/app/harbor/ssl/ca.pem \
-ca-key=/app/harbor/ssl/ca-key.pem \
-cnotallow=/app/harbor/ssl/ca-config.json \
-profile=harbor  /app/harbor/ssl/harbor-csr.json | cfssljson -bare  /app/harbor/ssl/harbor 
$ ls /app/harbor/ssl/
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  harbor.csr  harbor-csr.json  harbor-key.pem  harbor.pem
$ cp harbor.pem harbor-key.pem  /app/harbor/ssl/

图片图片

安装

① 下载离线安装包

$ export  HARBOR_VERSION=2.9.0        #声明变量,指定版本号
$ wget https://github.com/goharbor/harbor/releases/download/v$HARBOR_VERSION/harbor-offline-installer-v$HARBOR_VERSION.tgz
$ tar  -zxvf harbor-offline-installer-v$HARBOR_VERSION.tg z -C /app/
harbor/harbor.v$HARBOR_VERSION.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

② 导入镜像

$ docker load  -i harbor.v$HARBOR_VERSION.tar.gz

③ 修改配置文件

将配置模板复制为配置文件后修改配置参数

$ cp harbor.yml.tmpl  harbor.yml
$ vim harbor.yml
hostname: lidabai.harbor.com
http:
  port: 80

# 启用https
https:
  port: 443
  certificate: /app/harbor/ssl/harbor.pem        #Harbor的证书
  private_key: /app/harbor/ssl/harbor-key.pem   #Harbor的证书私钥

metric:
  enabled: true  #开启Harbor Metrics监控
  port: 9090
  path: /metric

其他配置参数根据需要进行修改。

④ 加载配置

在安装目录下执行./prepare加载各个组件的配置。

$ ./prepare

图片图片

⑤ 安装启动Harbor

$ ./install.sh  --with-trivy

图片图片

图片图片

出现:✔ ----Harbor has been installed and started successfully.则表示安装成功

服务验证

3.1 检查服务及组件状态

$ docker-compose ps

图片图片

服务正常!

登录Harbor UI

浏览器输入https://192.168.2.19:443

图片图片

图片图片

图片图片

图片图片

登录正常!

参考文献

https://github.com/goharbor/harbor/releases

责任编辑:武晓燕 来源: Harbor进阶实战
相关推荐

2014-07-16 17:57:50

Cocos

2011-08-30 14:03:01

KeryxUbuntu

2015-01-12 10:02:22

云笔记云应用Leanote

2024-04-19 13:53:20

2023-02-15 08:20:03

2017-09-08 15:49:42

互联网

2020-10-10 14:27:01

kubernetes 二进制部署

2012-11-16 09:50:32

Windbg

2021-12-28 08:10:39

ZabbixLinux运维

2021-10-04 14:59:35

微信手机安卓

2010-07-30 09:34:50

网络优化安全网关深信服科技

2012-03-06 13:45:43

JavaJActor

2010-06-08 09:45:27

openSUSE 11

2012-05-07 23:45:54

FantomJavaJVM

2015-08-19 17:08:20

WiFi畅游V4.9

2013-03-25 16:07:13

和信创天云存储

2014-08-18 09:58:48

一铭龙鑫操作系统

2012-05-28 15:25:40

微疯客栈

2011-12-02 09:59:29

API

2010-08-26 17:08:20

vsftpd faq
点赞
收藏

51CTO技术栈公众号