[TOC]
0x00 前言简述 Q: 什么是Harbor?
答: Harbor(Harbor)是一个开源受信任的云本地注册项目(cloud native registry project
),它存储、签署和扫描内容。Harbor通过添加用户通常需要的功能(如安全、身份和管理)来扩展开源 Docker 分发。使注册表更接近生成和运行环境可以提高映像传输效率。港湾支持在注册表之间复制映像,还提供高级安全功能,如用户管理、访问控制和活动审核。 其目标是成为 Kubernetes 值得信赖的云原生存储库 官网地址: https://goharbor.io/ 项目地址: https://github.com/goharbor/harbor
Q: 为啥要使用选择Harbor?
答: HHarbor 是一个云原生计算基金会毕业项目,Harbor是VMware公司开源的企业级Docker Registry
项目即企业级 Docker 私有仓库;其目标是帮助用户迅速搭建一个企业级的Docker Registry服务,它是以Docker公司开源的registry为基础,但其提供了可视化管理界面以及高级安全功能,如用户管理、访问控制和活动审核。
Harbor 特性
(1) 本地Registry :通过同时支持容器映像和Helm图表,港湾可充当云本机环境(如容器运行时和业务流程平台)的注册表。
(2) 基于角色控制:用户通过”项目”访问不同的存储库,用户可以对项目下的图像或 Helm 图表具有不同的权限。
(3) 基于策略的复制:可以使用筛选器(存储库、标记和标签)在多个注册表实例之间复制(同步)图像和图表。如果复制遇到任何错误,港湾会自动重新复制。这可用于在混合和多云方案中帮助负载平衡、实现高可用性和辅助多数据中心部署。
(4) 漏洞扫描:港港定期扫描图像是否存在漏洞,并进行策略检查,以防止部署易受攻击的图像。
(5) 至此LDAP/AD认证方式: 港与现有企业 LDAP/AD 集成,用于用户身份验证和管理,并支持将 LDAP 组导入港,然后可授予特定项目的权限。
(6) OIDC 支持:港湾利用 OpenID 连接 (OIDC) 来验证由外部授权服务器或身份提供商验证的用户的身份。可以启用单点登录以登录到港口门户。
(7) 图像删除和垃圾回收:系统管理员可以运行垃圾回收作业,以便可以删除图像(悬空清单和未引用的 Blob),并可以定期释放其空间。
(8) 签名认证: 支持使用 Docker 内容信任(利用公证)对容器映像进行签名,以保证真实性和来源性。在附加中,还可以激活阻止未签名映像部署的策略。
(9) 图形化UI界面管理: 用户可以轻松地浏览、搜索存储库和管理项目并且支持中文原生。
(10) 轻松部署: Harbor提供了online、offline安装,Harbor的每个组件都是以Docker容器的形式构建的,使用Docker-Compose来对它进行部署;
(11) 日志审核(Auditlogging): 通过日志跟踪存储库的所有操作。
(12) RESTful API: 提供 RESTful API 以方便管理操作,并且易于用于与外部系统集成
Harbor 组成 描述: 用于部 署Harbor 的 Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。
[TOC]
0x00 前言简述 Q: 什么是Harbor?
答: Harbor(Harbor)是一个开源受信任的云本地注册项目(cloud native registry project
),它存储、签署和扫描内容。Harbor通过添加用户通常需要的功能(如安全、身份和管理)来扩展开源 Docker 分发。使注册表更接近生成和运行环境可以提高映像传输效率。港湾支持在注册表之间复制映像,还提供高级安全功能,如用户管理、访问控制和活动审核。 其目标是成为 Kubernetes 值得信赖的云原生存储库 官网地址: https://goharbor.io/ 项目地址: https://github.com/goharbor/harbor
Q: 为啥要使用选择Harbor?
答: HHarbor 是一个云原生计算基金会毕业项目,Harbor是VMware公司开源的企业级Docker Registry
项目即企业级 Docker 私有仓库;其目标是帮助用户迅速搭建一个企业级的Docker Registry服务,它是以Docker公司开源的registry为基础,但其提供了可视化管理界面以及高级安全功能,如用户管理、访问控制和活动审核。
Harbor 特性
(1) 本地Registry :通过同时支持容器映像和Helm图表,港湾可充当云本机环境(如容器运行时和业务流程平台)的注册表。
(2) 基于角色控制:用户通过”项目”访问不同的存储库,用户可以对项目下的图像或 Helm 图表具有不同的权限。
(3) 基于策略的复制:可以使用筛选器(存储库、标记和标签)在多个注册表实例之间复制(同步)图像和图表。如果复制遇到任何错误,港湾会自动重新复制。这可用于在混合和多云方案中帮助负载平衡、实现高可用性和辅助多数据中心部署。
(4) 漏洞扫描:港港定期扫描图像是否存在漏洞,并进行策略检查,以防止部署易受攻击的图像。
(5) 至此LDAP/AD认证方式: 港与现有企业 LDAP/AD 集成,用于用户身份验证和管理,并支持将 LDAP 组导入港,然后可授予特定项目的权限。
(6) OIDC 支持:港湾利用 OpenID 连接 (OIDC) 来验证由外部授权服务器或身份提供商验证的用户的身份。可以启用单点登录以登录到港口门户。
(7) 图像删除和垃圾回收:系统管理员可以运行垃圾回收作业,以便可以删除图像(悬空清单和未引用的 Blob),并可以定期释放其空间。
(8) 签名认证: 支持使用 Docker 内容信任(利用公证)对容器映像进行签名,以保证真实性和来源性。在附加中,还可以激活阻止未签名映像部署的策略。
(9) 图形化UI界面管理: 用户可以轻松地浏览、搜索存储库和管理项目并且支持中文原生。
(10) 轻松部署: Harbor提供了online、offline安装,Harbor的每个组件都是以Docker容器的形式构建的,使用Docker-Compose来对它进行部署;
(11) 日志审核(Auditlogging): 通过日志跟踪存储库的所有操作。
(12) RESTful API: 提供 RESTful API 以方便管理操作,并且易于用于与外部系统集成
Harbor 组成 描述: 用于部 署Harbor 的 Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成,这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 Loaded image: goharbor/harbor-db:v2.4.1 Loaded image: goharbor/redis-photon:v2.4.1 Loaded image: goharbor/notary-signer-photon:v2.4.1 Loaded image: goharbor/clair-photon:v2.4.1 Loaded image: goharbor/clair-adapter-photon:v2.4.1 Loaded image: goharbor/harbor-core:v2.4.1 Loaded image: goharbor/harbor-portal:v2.4.1 Loaded image: goharbor/harbor-log:v2.4.1 Loaded image: goharbor/nginx-photon:v2.4.1 Loaded image: goharbor/prepare:v2.4.1 Loaded image: goharbor/harbor-registryctl:v2.4.1 Loaded image: goharbor/notary-server-photon:v2.4.1 Loaded image: goharbor/trivy-adapter-photon:v2.4.1 Loaded image: goharbor/harbor-jobservice:v2.4.1 Loaded image: goharbor/chartmuseum-photon:v2.4.1 Loaded image: goharbor/registry-photon:v2.4.1 ~/harbor/common/config$ tree . ├── core │ ├── app.conf │ ├── certificates │ └── env ├── db │ └── env ├── jobservice │ ├── config.yml │ └── env ├── log │ ├── logrotate.conf │ └── rsyslog_docker.conf ├── nginx │ ├── conf.d │ └── nginx.conf ├── portal │ └── nginx.conf ├── registry │ ├── config.yml │ ├── passwd │ └── root.crt ├── registryctl │ ├── config.yml │ └── env └── shared └── trust-certificates
UI:即架构中的 core services 构成此容器的代码是 Harbor 项目的主体。
Proxy:由 Nginx 服务器构成的反向代理。
Registry:由 Docker官方的开源 registry 镜像构成的容器实例。
Postgresql:由官方 POSTGRESQL 镜像构成的数据库容器。
Redis : 由官方 Redis 镜像构成的缓存数据库容器。
Log:运行着 rsyslogd的容器,通过 log-driver的形式收集其他容器的日志
Harbor认证过程
a、dockerdaemon从dockerregistry拉取镜像。
b、如果dockerregistry需要进行授权时,registry将会返回401 Unauthorized响应,同时在响应中包含了docker client如何进行认证的信息。
c、dockerclient根据registry返回的信息,向auth server发送请求获取认证token。
d、auth server则根据自己的业务实现去验证提交的用户信息是否存符合业务要求。
e、用户数据仓库返回用户的相关信息。
f、auth server将会根据查询的用户信息,生成token令牌,以及当前用户所具有的相关权限信息.上述就是完整的授权过程.当用户完成上述过程以后便可以执行相关的pull/push操作。认证信息会每次都带在请求头中
Harbor认证流程
a、首先,请求被代理容器监听拦截,并跳转到指定的认证服务器。
b、 如果认证服务器配置了权限认证,则会返回401。通知dockerclient在特定的请求中需要带上一个合法的
token。而认证的逻辑地址则指向架构图中的core services。
c、 当dockerclient接受到错误code。client就会发送认证请求(带有用户名和密码)到coreservices进行basic
auth认证。
d、 当C的请求发送给ngnix以后,ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core
serivces。
e、 coreservices获取用户名和密码以后对用户信息进行认证(自己的数据库或者介入LDAP都可以)。成功以
后,返回认证成功的信息
0x01 安装配置 系统要求 & System requirements:1 On a Linux host: docker 17.06.0-ce+ and docker-compose 1.18.0+ and Python 2.7+
安装方式: Download binaries of Harbor release
(1) 源码编译安装
(2) 二进制在线或者离线安装(推荐-实际上还是docker镜像安装)
安装环境声明: 1 2 3 4 Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64) Docker 19.03.13 Docker-Compose 1.27.4 Harbor v2.4.1
(1) 本地安装 安装流程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 sudo wget https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -O /usr/bin/docker-compose sudo chmod a+x /usr/bin/docker-compose wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz tar -zxf harbor-offline-installer-v2.4.1.tgz && ls harbor/ docker load -i harbor.v2.4.1.tar.gz echo '192.168.1.2 harbor.weiyigeek.top' >> /etc/hosts$ egrep -v "^#|^ #" harbor.yml.tmpl | tee harbor.yml hostname: harbor.weiyigeek.top db_password:用于db_auth的MySQL数据库的根密码。更改此密码进行任何生产用途 max_job_workers:对于每个映像复制作业, customize_crt:(on或off。默认为on)当此属性打开时,prepare脚本将为注册表的令牌的生成/验证创建私钥和根证书 ssl_cert:SSL证书的路径,仅当协议设置为https时才应用 ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用 secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径 http: port: 80 https: port: 443 certificate: /etc/harbor/pki/server.crt private_key: /etc/harbor/pki/server.key harbor_admin_password: Harbor12345 database: password: root123 max_idle_conns: 50 max_open_conns: 1000 data_volume: /data/harbor clair: updaters_interval: 12 trivy: ignore_unfixed: false skip_update: 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.0.0 proxy: http_proxy: https_proxy: no_proxy: components: - core - jobservice - clair - trivy sudo mkdir -pv /data/harbor /etc/harbor/pki/ openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org && openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt sudo cp server.key server.crt /etc/harbor/pki/ sudo chmod -R 644 /etc/harbor/pki/ $ sudo ./install.sh [Step 0]: checking if docker is installed ... Note: docker version: 19.03.13 [Step 1]: checking docker-compose is installed ... Note: docker-compose version: 1.25.0 [Step 2]: loading Harbor images ... Loaded image: goharbor/harbor-db:v2.4.1 Loaded image: goharbor/redis-photon:v2.4.1 Loaded image: goharbor/notary-signer-photon:v2.4.1 Loaded image: goharbor/clair-photon:v2.4.1 Loaded image: goharbor/clair-adapter-photon:v2.4.1 Loaded image: goharbor/harbor-core:v2.4.1 Loaded image: goharbor/harbor-portal:v2.4.1 Loaded image: goharbor/harbor-log:v2.4.1 Loaded image: goharbor/nginx-photon:v2.4.1 Loaded image: goharbor/prepare:v2.4.1 Loaded image: goharbor/harbor-registryctl:v2.4.1 Loaded image: goharbor/notary-server-photon:v2.4.1 Loaded image: goharbor/trivy-adapter-photon:v2.4.1 Loaded image: goharbor/harbor-jobservice:v2.4.1 Loaded image: goharbor/chartmuseum-photon:v2.4.1 Loaded image: goharbor/registry-photon:v2.4.1 [Step 3]: preparing environment ... [Step 4]: preparing harbor configs ... prepare base dir is set to /home/weiyigeek/harbor Generated configuration file: /config/portal/nginx.conf Generated configuration file: /config/log /logrotate.conf Generated configuration file: /config/log /rsyslog_docker.conf Generated configuration file: /config/nginx/nginx.conf Generated configuration file: /config/core/env Generated configuration file: /config/core/app.conf Generated configuration file: /config/registry/config.yml Generated configuration file: /config/registryctl/env Generated configuration file: /config/registryctl/config.yml Generated configuration file: /config/db/env Generated configuration file: /config/jobservice/env Generated configuration file: /config/jobservice/config.yml Generated and saved secret to file: /data/secret/keys/secretkey Successfully called func: create_root_cert Generated configuration file: /compose_location/docker-compose.yml Clean up the input dir [Step 5]: starting Harbor ... ✔ ----Harbor has been installed and started successfully.----
(2) 基础配置 1.利用内部 DNS 域名解析 harbor.weiyigeek.top
配置将k8s集群中的机器DNS设置为内部DNS地址
1 2 3 4 5 6 ~$ ansible k8s -m shell -a "sudo sed -i 's#127.0.0.53#192.168.12.253#g' /etc/resolv.conf" ~$ ansible k8s -m shell -a "ping harbor.weiyigeek.top -c 2"
0x02 基础使用 Harbor 访问测试 Step 1.访问 harbor.weiyigeek.top 使用Harbor的默认账号密码登陆
账号密码 : admin / Harbor12345
weiyigeek.top-harbor-login
Step 2.用户创建与项目创建: 系统管理 -> 用户管理
Step 3.普通用户项目创建:
项目 -> 新建项目 -> 项目名称与访问级别
weiyigeek.top-项目创建
PS: 项目如果设置为私有则必须采用所属用户进行验证登陆后才能进行拉取;
Step 4.管理员才能可以进行垃圾回收: 系统管理 -> 垃圾清理
Step 5.镜像构建与上传测试1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 sudo tee /etc/docker/daemon.json <<'EOF' { "registry-mirrors" : ["https://xlx9erfu.mirror.aliyuncs.com" ], "exec-opts" : ["native.cgroupdriver=systemd" ], "log-driver" : "json-file" , "log-opts" : { "max-size" : "100m" }, "insecure-registries" : ["harbor.weiyigeek.top" ] } EOF sudo systemctl daemon-reload && sudo systemctl restart docker docker login harbor.weiyigeek.top $ docker pull nginx $ docker tag nginx:latest harbor.weiyigeek.top/test /nginx:v1.1 $ docker images | grep "nginx" $ docker push harbor.weiyigeek.top/test /nginx:v1.1
Step 6.在Harbor上查看WeiyiGeek用户上传的镜像
weiyigeek.top-Harbor
Step 7.在其它节点拉取我们上传测试的镜像1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 "insecure-registries" : ["harbor.weiyigeek.top" ]$ docker pull harbor.weiyigeek.top/test /nginx:v1.1 $ docker images | grep "nginx"
0x03 扩展安装 添加支持Chart仓库扩展 描述: 安装chart图表仓库操作流程:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ~/harbor$ sudo docker-compose ps ~/harbor$ ls ~/harbor$ sudo ./install.sh --with-chartmuseum
weiyigeek.top-Helm Charts已安装完成
温馨提示: 如果想安装公正服务 notary 以及漏洞扫描器 trivy ,我们在执行./install.sh
后添加如下参数。1 $ sudo ./install.sh --with-notary --with-trivy --with-chartmuseum
0x04 补充说明 1.Harbor证书到期如何进行更新替换? 描述: 当 Harbor 证书到期后我们需要续签证书或者重新申请证书,并替换掉配置 harbor.yml 文件中的 certificate、private_key 配置项。
操作流程: 步骤 01.创建CA并签发harbor证书1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 cfssl print -defaults config > ca-config.json vim ca-config.json { "signing" : { "default" : { "expiry" : "8760h" }, "profiles" : { "harbor" : { "expiry" : "87600h" , "usages" : [ "signing" , "key encipherment" , "server auth" , "client auth" ] } } } } cfssl print -defaults csr > ca-csr.json vim ca-csr.json { "CN" : "weiyigeek.top" , "key" : { "algo" : "rsa" , "size" : 2048 }, "names" : [ { "C" : "CN" , "L" : "ChongQing" , "ST" : "ChongQing" , "O" : "weiyigeek" , "OU" : "weiyigeek.top" } ] } tee harbor-csr.json <<'EOF' { "CN" : "harbor.weiyigeek.top" , "hosts" : [ "127.0.0.1" , "192.168.12.108" , "harbor.weiyigeek.top" ], "key" : { "algo" : "rsa" , "size" : 2048 }, "names" : [ { "C" : "CN" , "L" : "ChongQing" , "ST" : "ChongQing" , "O" : "weiyigeek" , "OU" : "weiyigeek.top" } ] } EOF $ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=harbor harbor-csr.json | cfssljson -bare harbor $ ls harbor* harbor.csr harbor-csr.json harbor-key.pem harbor.pem cp harbor.pem /etc/harbor/pki/harbor.crt cp harbor-key.pem /etc/harbor/pki/harbor.key
步骤 02.修改替换对应的证书文件。1 2 3 4 5 6 7 8 9 10 $ im harbor.yml http: port: 80 https: port: 443 certificate: /etc/harbor/pki/harbor.crt private_key: /etc/harbor/pki/harbor.key
步骤 03.利用docker-compose停止harbor相关容器,更新预加载配置后再重启。1 2 3 4 5 6 7 8 9 10 11 12 13 cd /opt/harbor && docker-compose down/opt/harbor prepare base dir is set to /opt/harbor Clearing the configuration file: /config/portal/nginx.conf ........ Clearing the configuration file: /config/nginx/nginx.conf Generated configuration file: /config/portal/nginx.conf ........ Generated configuration file: /config/jobservice/config.yml loaded secret from file: /data/secret/keys/secretkey Generated configuration file: /compose_location/docker-compose.yml Clean up the input dir /opt/harbor
步骤 04.浏览器访问验证或者利用cfssl命令验证配置的证书, 注意如果没有配置公网和内部解析, 请在/etc/hosts指定对应的IP地址。1 $ cfssl certinfo -domain harbor.weiyigeek.top
2.如何更新旧版本的Harbor到指定的新版本? 描述: 如果您是从以前版本的 Harbor 升级,您可能需要更新配置文件并迁移您的数据以适应更高版本的数据库架构。
Harbor 更新参考地址: https://goharbor.io/docs/2.4.0/administration/upgrade/
温馨提示: 如果要升级使用 Helm 部署的 Harbor 实例,请参阅升级使用 Helm 部署的 Harbor 【https://goharbor.io/docs/2.4.0/administration/upgrade/helm-upgrade/ 】。
环境说明 当前Harbor版本(v2.1.3)及其旧的离线安装包 harbor-offline-installer-v2.1.3.tgz
更新Harbor版本(v2.4.1)及其当前时间最新的离线安装包 harbor-offline-installer-v2.4.1.tgz
温馨提示: 截至2022年2月10日,目前最新的Harbor版本为[v2.4.1], 我们可以访问harbor的releases获取最新的Harbor(https://github.com/goharbor/harbor/releases )
升级前重要提示
1.在任何数据迁移之前备份Harbor相关数据,例如1 2 3 4 5 cp /op/harbor{,.bak} cp -a /data/harbor{,.bak}
2.在v2.0中项目的元数据存储在数据库中,当升级后首次启动 Harbor 时,它将遍历注册表存储中的项目以将项目的元数据提取到数据库中, 如果注册表中存在大量项目,则此过程可能需要相对较长的时间
,尤其是在将注册表配置为使用外部存储(如 S3)时。 可以查看 harbor-core registry 日志验证是否在进行安装。
3.在 v2.2 之后Clair漏洞扫描仪将被移除, 建议在升级后使用 Trivy 作为默认扫描仪,或将 Clair 添加为外部扫描仪。
4.在 v2.3 使用 PostgreSQL v13.2 , 在升级过程中 Harbor 将删除旧的 PostgreSQL 数据,并将其迁移到兼容的新版本 PostgreSQL 的新目标位置, 所以在升级到v2.3.0 必须进行 PostgreSQL 数据备份。
快速升级Harbor或者迁移数据 步骤 01.停止 Harbor 所有组件运行实例。1 2 cd /opt/harbor && docker-compose down
步骤 02.备份 Harbor 相关数据(生产环境必须要、测试环境看你自己),以便在必要时可以回滚到当前版本。1 2 3 4 5 cp -a /opt/harbor{,.bak} cp -a /data/harbor{,.bak}
步骤 03.从Harbor官方的Github中获取最新的Harbor版本包并将其解压缩(https://github.com/goharbor/harbor/releases) , 国内环境推荐采用离线安装包的方式进行安装部署。1 2 wget -b -c https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
温馨提示:建议通过迅雷进行下载,国内在服务器上采用wget直接下载太慢了。
步骤 04.解压下载的脱机安装程序包到harbor目录之中,并导入harbor对应版本的相关组件镜像到docker本地注册表中。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 cd /opt/ && tar zxf harbor-offline-installer-v2.4.1.tgzls /opt/harbor certs common common.sh docker-compose.yml harbor.v2.4.1.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare docker load -i harbor/harbor.v2.4.1.tar.gz docker images --filter label=build-date=20211206
步骤 05.升级迁移(migrate - 英 [maɪˈɡreɪt] )harbor指定版本并生成最新harbor.yml 配置文件1 2 3 4 5 6 $ docker run -it --rm -v /:/hostfs goharbor/prepare:v2.4.1 migrate -i /opt/harbor/harbor.yml
步骤 06.最新执行安装更新Harbor操作,此处我安装 notary(公证服务)、Trivy 和 chart(图表存储库)等服务1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo ./install.sh --with-notary --with-trivy --with-chartmuseum ✔ ----Harbor has been installed and started successfully.----
weiyigeek.top-升级Harbor服务器到v2.4.1
至此,完成了harbor从v2.1.3版本更新迁移到v2.4.1版本。
3.Harbor仓库忘记管理员密码如何重置? 描述: 在 Harbor 初始化安装时我们会在harbor.yaml文件中设定admin用户密码,当我们登录更改其密码后忘记设定的密码,如何进行重置密码?
版本环境说明: v2.4.x
操作流程:
步骤01.通过docker exec -it harbor-db /bin/bash
命令进入harbor-db容器内部
步骤02.执行如下postgresql命令行1 2 psql -h postgresql -d postgres -U postgres psql -U postgres -d postgres -h 127.0.0.1 -p 5432
步骤03.然后切换到harbor所在的数据库,执行 \c registry
命令
步骤04.执行SQL语句select * from harbor_user;
查看harbor_user表
步骤05.例如修改admin的密码,修改为初始化密码 Harbor12345 修改好了之后再可以从web ui上再改一次。
1 2 3 4 5 update harbor_user set password='a71a7d0df981a61cbb53a97ed8d78f3e' ,salt='ah3fdh5b7yxepalg9z45bu8zb36sszmr' where username='admin' ; update harbor_user set salt='' , password='' where username='admin' ;
步骤06.执行 \q
退出postgresql,再执行 exit
退出容器。
步骤07.重启harbor服务,以配置中的默认密码进行登陆。
weiyigeek.top-重置Harbor仓库管理员密码
4.Harbor仓库迁移提示协议必须为https在安装组件时 错误信息:1 2 3 4 sudo ./install.sh --with-notary --with-trivy --with-chartmuseum prepare base dir is set to /opt/harbor Error happened in config validation... ERROR:root:Error: the protocol must be https when Harbor is deployed with Notary
错误原因: 错误root错误,当Harbor与公证人一起部署时,协议必须是https 解决办法: 启用443以及设置证书,或者取消公证人Notary安装即可解决。1 2 3 4 5 6 7 https: port: 443 certificate: /etc/harbor/pki/server.crt private_key: /etc/harbor/pki/server.key