kubeasz与Harbor集成:私有镜像仓库部署与应用发布流程
在Kubernetes集群管理中,私有镜像仓库是保障容器镜像安全分发的核心组件。本文将详细介绍如何通过kubeasz工具链快速部署Harbor私有镜像仓库,并构建完整的应用发布流程,帮助运维人员解决镜像管理痛点。
Harbor私有仓库部署准备
Harbor作为企业级容器镜像仓库,提供了角色访问控制、镜像同步和安全扫描等关键功能。在kubeasz环境中部署Harbor前需完成两项核心准备工作:
环境配置要求
- 硬件:至少2核4G内存的独立节点(推荐4核8G)
- 存储:/var/data目录预留至少50GB空间(harbor数据目录)
- 网络:确保节点开放80/443端口,且与Kubernetes集群网络互通
离线资源准备
使用kubeasz提供的ezdown工具下载Harbor离线安装包:
ezdown -D # 下载基础组件
ezdown -R # 下载Harbor相关资源
成功后离线包将保存在/etc/kubeasz/down/目录,文件名为harbor-offline-installer-*.tgz
使用kubeasz自动化部署Harbor
kubeasz通过Ansible Playbook实现Harbor的全自动化部署,整个过程仅需三步配置:
1. 集群配置文件修改
创建或修改集群配置(以集群名为"mycluster"为例):
# 编辑主机清单文件
vi clusters/mycluster/hosts
在文件中添加Harbor节点配置:
[harbor]
192.168.1.8 NEW_INSTALL=true # 设置为true表示新安装Harbor
修改Harbor专项配置:
vi clusters/mycluster/config.yml
关键配置项说明:
############################
# role:harbor
############################
HARBOR_VER: "v2.10.2" # Harbor版本号
HARBOR_DOMAIN: "harbor.yourdomain.com" # 访问域名
HARBOR_PATH: /var/data # 数据存储路径
HARBOR_TLS_PORT: 8443 # HTTPS端口
HARBOR_SELF_SIGNED_CERT: true # 自动生成证书
HARBOR_WITH_TRIVY: false # 禁用漏洞扫描(可选)
2. 执行部署命令
通过ezctl工具一键部署Harbor:
./ezctl setup mycluster harbor
部署流程将自动完成以下操作(对应playbooks/11.harbor.yml):
- 系统环境准备(role
prepare) - Docker引擎安装(role
docker) - Harbor组件部署(role
harbor) - 节点证书配置
3. 部署验证
检查Harbor容器状态:
docker ps -a | grep harbor-
预期输出应包含harbor-core、harbor-db等6-8个容器实例。
访问Web管理界面:
https://harbor.yourdomain.com:8443
首次登录使用admin账号,密码可在/var/data/harbor/harbor.yml中查看(默认随机生成16位密码)。
容器运行时证书配置
Kubernetes节点需要信任Harbor的TLS证书才能正常拉取私有镜像,配置方法因容器运行时而异:
Docker环境配置
- 复制证书到Docker信任目录:
mkdir -p /etc/docker/certs.d/harbor.yourdomain.com:8443
cp /etc/kubeasz/down/harbor.pem /etc/docker/certs.d/harbor.yourdomain.com:8443/ca.crt
- 重启Docker服务:
systemctl restart docker
Containerd环境配置
编辑Containerd配置文件:
vi /etc/containerd/config.toml
添加以下配置段(参考containerd模板):
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.yourdomain.com:8443".tls]
ca_file = "/etc/containerd/certs.d/harbor.yourdomain.com:8443/ca.crt"
应用发布流程实战
完成Harbor部署后,可构建从镜像推送、权限配置到Kubernetes应用发布的完整流程:
镜像上传流程
- 登录Harbor仓库:
docker login harbor.yourdomain.com:8443
- 标记本地镜像:
docker tag nginx:alpine harbor.yourdomain.com:8443/prod/nginx:v1.21
- 推送镜像到仓库:
docker push harbor.yourdomain.com:8443/prod/nginx:v1.21
私有镜像拉取配置
对于私有项目中的镜像,需创建imagePullSecret:
kubectl create secret docker-registry harbor-secret \
--docker-server=harbor.yourdomain.com:8443 \
--docker-username=appuser \
--docker-password=YourP@ssw0rd \
--namespace=prod
在Deployment中引用密钥:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
namespace: prod
spec:
replicas: 3
template:
spec:
containers:
- name: nginx
image: harbor.yourdomain.com:8443/prod/nginx:v1.21
imagePullSecrets:
- name: harbor-secret
多环境镜像同步策略
通过Harbor的复制功能实现多集群镜像同步:
- 在Web界面创建目标端点(例如生产环境Harbor)
- 创建复制规则,设置触发方式(手动/定时/事件驱动)
- 验证同步状态:
docker-compose logs -f harbor-jobservice
日常维护与故障处理
常规运维操作
Harbor容器化部署使其维护极为便捷,常用操作如下:
cd /var/data/harbor # 进入Harbor安装目录
docker-compose stop # 暂停服务
docker-compose start # 恢复服务
docker-compose down -v # 完全停止并清理容器
docker-compose up -d # 启动服务
数据备份策略
重要数据目录定期备份:
# 数据库备份
tar -czf harbor_db_$(date +%F).tar.gz /var/data/database
# 镜像数据备份
tar -czf harbor_registry_$(date +%F).tar.gz /var/data/registry
常见问题排查
- 证书错误:检查节点
/etc/hosts是否配置域名解析 - 推送失败:确认
docker login时使用的端口与配置一致 - 空间不足:清理无用镜像或扩容
/var/data分区
集成架构与扩展建议
部署架构图
生产环境优化建议
- 高可用部署:使用NFS共享存储+多节点部署(参考kubeasz高可用方案)
- 安全加固:启用Trivy漏洞扫描(设置
HARBOR_WITH_TRIVY: true) - 性能优化:修改
harbor.yml调整registry存储驱动为filesystem
通过kubeasz与Harbor的深度集成,企业可快速构建安全可控的容器镜像供应链。从自动化部署到应用发布的全流程管理,不仅提升了运维效率,更为Kubernetes集群的稳定运行提供了可靠保障。后续可进一步探索Harbor与CI/CD工具的集成,实现镜像构建、测试、发布的全自动化流水线。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



