【4】k8s集群管理系列--harbor镜像仓库本地化搭建

一、harbor基本概念

‌Harbor是一个由VMware开源的企业级Docker镜像仓库解决方案‌,旨在解决企业在容器化应用部署中的痛点,提供镜像存储、管理、安全和分发的全生命周期管理‌。Harbor扩展了Docker Registry,增加了企业级功能,如用户管理、权限控制、镜像扫描和镜像复制等,支持多种认证机制,帮助企业在大规模的容器环境中实现安全、高效的镜像管理‌。

二、环境配置要求

CentOS 7/8(本教程以 CentOS 7.9 为例)

最低配置:2核CPU、4GB内存、40GB磁盘

开放端口:80(HTTP)、443(HTTPS)、4443(Harbor数据同步端口)

注意:操作系统需要安装docker、docker-compose,如何安装,见专栏另外一篇文章:
搭建k8s集群系列(二进制部署)之安装docker和k8s自签证书

三、下载安装包

3.1 下载离线安装包

bash 复制代码
wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
tar -xzvf harbor-offline-installer-v2.7.0.tgz
cd harbor

3.2 修改配置文件

bash 复制代码
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

修改以下关键配置:

bash 复制代码
hostname: 192.168.1.23  # 改为服务器IP或域名
http:
  port: 80
https:
  port: 443
  certificate: /opt/harbor/ssl/harbor-server.pem  # 若需HTTPS,配置证书路径
  private_key: /opt/harbor/ssl/harbor-server-key.pem  # 若无需HTTPS,注释整个https块
harbor_admin_password: Harbor12345     # 管理员默认密码(需修改!)
data_volume: /data/harbor # 数据存储路径(确保目录存在)

如果启用https,则需要生成证书,这里采用自签证书:

自签证书工具安装:

cfssl 是一个开源的证书管理工具,使用 json 文件生成证书,相比 openssl 更方便使用。

bash 复制代码
# 下载cfssl工具(二进制可执行文件)
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
# 授可执行权限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
# 移动到bin目录,方便直接在命令行使用该工具命令
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

生成CA根证书-写如CA配置文件:

bash 复制代码
# 写入ca配置文件
cat > ca-config.json << EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"harbor": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF

CA根证书申请文件:

bash 复制代码
# 写入ca-csr文件
cat > ca-csr.json << EOF
{
"CN": "harbor",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing",
"O": "harbor",
"OU": "System"
}
]
}
EOF

生成根证书:

cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

申请域名证书请求文件:

bash 复制代码
cat > harbor-server-csr.json << EOF
{
"CN": "harbor",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "harbor",
"OU": "System"
}
]
}
EOF

执行生成域名证书:

bash 复制代码
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=harbor harbor-server-csr.json | cfssljson -bare harbor-server

3.3 执行安装

bash 复制代码
# 切换到harbor解压目录
sh ./prepare #执行安装前准备的脚本,然后会生成docker-compose配置文件和common/config配置文件目录及配置文件
sh ./install.sh #执行安装
# 等待安装完成

#验证安装状态
docker-compose ps

输出 ✔ ----Harbor has been installed and started successfully.---- 表示成功。

相关推荐
JAVA学习通1 小时前
Docker 安装 Harbor 教程
运维·docker·容器
小北爱编程ma2 小时前
【云原生】 Prometheus-Operator
云原生
温柔一只鬼.2 小时前
Docker快速入门——第二章Docker基本概念
java·docker·容器
是店小二呀2 小时前
【技术文档:Dify 本地 Docker 环境邮件服务排错指南】
运维·docker·容器
xiaodaidai丶5 小时前
Eureka的自我保护机制
云原生·eureka·springcloud
华仔啊5 小时前
Docker入门全攻略:轻松上手,提升你的项目效率
后端·docker·容器
兮动人6 小时前
Eureka注册中心通用写法和配置
java·云原生·eureka
Y-Loong12 小时前
Kubernetes Pod 网络与 Service 网络全解析
网络·kubernetes
稚辉君.MCA_P8_Java13 小时前
JVM第二课:一文讲透运行时数据区
jvm·数据库·后端·容器
Yeats_Liao15 小时前
遗留系统微服务改造(一):遗留系统改造策略与实战场景分析
微服务·云原生·架构