【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.---- 表示成功。

相关推荐
lwx91485210 小时前
Docker-安装SSH服务
docker·容器·ssh
艾伦_耶格宇14 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
时间售卖铺14 小时前
Docker实战:一键部署轻量级容器
运维·docker·云原生
月落汀兰15 小时前
拒绝配置写死镜像!K8s 存储卷与配置管理,PV/PVC、ConfigMap、Secret 实战避坑指南
运维·kubernetes
艾伦_耶格宇16 小时前
【kubernetes - 1.28版本】-10 K8S命名空间
云原生·容器·kubernetes
tedcloud12318 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
syntaxsage19 小时前
Dive:Docker 镜像层可视化分析工具
运维·其他·docker·容器
java_logo19 小时前
Docker 部署 Samba:轻松搭建局域网文件共享
运维·docker·容器·文件共享·samba·smb·轩辕镜像
草莓熊Lotso19 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
todoitbo1 天前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器