logo

基于K8s的Harbor镜像仓库在线部署指南

作者:谁偷走了我的奶酪2025.10.10 18:46浏览量:6

简介:本文详细介绍了如何在Kubernetes集群中在线安装Harbor镜像仓库,涵盖环境准备、Helm部署、配置优化及运维管理,帮助开发者快速构建企业级私有镜像仓库。

基于K8s的Harbor镜像仓库在线部署指南

一、环境准备与前置条件

1.1 Kubernetes集群基础要求

部署Harbor前需确保K8s集群满足以下条件:

  • 版本兼容性:K8s 1.16+版本(推荐1.20+),支持CRD(Custom Resource Definitions)
  • 存储配置:需提前准备持久化存储(如NFS、Ceph、AWS EBS等),建议分配至少100GB存储空间
  • 网络要求:集群内NodePort/LoadBalancer服务可用,域名解析需配置正确
  • 资源配额:建议分配4核CPU、8GB内存作为基础资源

验证命令示例

  1. kubectl version --short
  2. kubectl get storageclass
  3. kubectl top nodes

1.2 依赖组件安装

  1. Helm 3.x:作为包管理工具
    1. curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. chmod 700 get_helm.sh
    3. ./get_helm.sh
  2. Ingress Controller:推荐Nginx或Traefik
    1. helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    2. helm install ingress-nginx ingress-nginx/ingress-nginx

二、Harbor核心组件部署

2.1 使用Helm Chart部署

  1. 添加Bitnami仓库

    1. helm repo add bitnami https://charts.bitnami.com/bitnami
    2. helm repo update
  2. 创建命名空间

    1. kubectl create namespace harbor
  3. 自定义Values文件harbor-values.yaml):

    1. expose:
    2. type: ingress
    3. tls:
    4. enabled: true
    5. certSource: secret
    6. secret:
    7. secretName: "harbor-tls"
    8. ingress:
    9. hosts:
    10. - core: harbor.example.com
    11. notary: notary.example.com
    12. persistence:
    13. persistentVolumeClaim:
    14. registry:
    15. storageClass: "managed-nfs-storage"
    16. size: 100Gi
    17. harborAdminPassword: "Admin@123"
    18. database:
    19. internal:
    20. password: "DbPass@123"
    21. core:
    22. replicas: 2
  4. 执行部署命令

    1. helm install harbor bitnami/harbor -n harbor -f harbor-values.yaml

2.2 关键参数说明

参数 说明 推荐值
expose.type 暴露方式 ingress
persistence.enabled 持久化存储 true
core.replicas 核心服务副本数 2-3
database.internal.password 数据库密码 复杂度≥12位

三、安装后配置优化

3.1 证书与域名配置

  1. 生成自签名证书(生产环境建议使用CA证书):

    1. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    2. -keyout tls.key -out tls.crt \
    3. -subj "/CN=harbor.example.com/O=Harbor"
  2. 创建K8s Secret

    1. kubectl create secret tls harbor-tls -n harbor \
    2. --key=tls.key --cert=tls.crt

3.2 存储性能调优

  • NFS存储优化

    1. # 在values.yaml中添加
    2. persistence:
    3. imageChartStorage:
    4. disableredirect: true
    5. type: nfs
    6. nfs:
    7. server: "192.168.1.100"
    8. path: "/data/harbor"
    9. mountOptions:
    10. - nolock
    11. - soft
    12. - timeo=500
  • SSD存储建议:若使用云盘,建议选择gp3类型(AWS)或gp2类型(AWS旧版)

四、运维管理最佳实践

4.1 监控告警配置

  1. Prometheus Operator集成

    1. # 在values.yaml中启用
    2. metrics:
    3. enabled: true
    4. serviceMonitor:
    5. enabled: true
    6. labels:
    7. release: prometheus
  2. 关键监控指标

    • harbor_project_count:项目数量
    • harbor_artifact_count:镜像数量
    • harbor_jobservice_queue_length:任务队列积压量

4.2 备份恢复策略

  1. 数据库备份

    1. kubectl exec -n harbor harbor-database-0 -- \
    2. bash -c "pg_dump -U postgres -h 127.0.0.1 registry > /backup/registry.sql"
  2. 存储卷快照(以AWS EBS为例):

    1. aws ec2 create-snapshot \
    2. --volume-id $(kubectl get pv -n harbor | grep harbor-registry | awk '{print $1}' | xargs kubectl get pv -o jsonpath='{.spec.awsElasticBlockStore.volumeID}' | cut -d'/' -f2) \
    3. --description "Harbor Registry Snapshot"

五、常见问题解决方案

5.1 部署失败排查

  1. Pod处于Pending状态

    • 检查PVC绑定情况:kubectl get pvc -n harbor
    • 验证StorageClass是否存在:kubectl get sc
  2. Ingress 502错误

    • 检查Core服务日志kubectl logs -n harbor harbor-harbor-core-0
    • 验证Ingress路由配置:kubectl get ingress -n harbor

5.2 性能瓶颈优化

  • 高并发场景建议
    • 启用Redis缓存:redis:enabled: true
    • 增加JobService副本数:jobservice:replicas: 3
    • 配置水平自动扩缩:
      1. autoscaling:
      2. enabled: true
      3. minReplicas: 2
      4. maxReplicas: 5
      5. metrics:
      6. - type: Resource
      7. resource:
      8. name: cpu
      9. target:
      10. type: Utilization
      11. averageUtilization: 70

六、升级与维护流程

6.1 版本升级步骤

  1. 备份当前配置

    1. helm get values harbor -n harbor > current-values.yaml
  2. 执行升级命令

    1. helm upgrade harbor bitnami/harbor -n harbor -f current-values.yaml
  3. 验证升级结果

    1. kubectl rollout status deployment/harbor-harbor-core -n harbor
    2. kubectl get pods -n harbor | grep -v Running | grep -v Completed

6.2 安全加固建议

  • 定期轮换密码
    1. kubectl patch secret harbor-core-envvars -n harbor \
    2. --type='json' -p='[{"op": "replace", "path": "/data/HARBOR_ADMIN_PASSWORD", "value":"'$(openssl rand -base64 16)'"}]'
  • 启用CVE扫描:集成Clair或Trivy
    1. clair:
    2. enabled: true
    3. image:
    4. repository: bitnami/clair
    5. tag: 4.3.0-debian-11-r0

通过以上完整部署方案,开发者可在K8s环境中快速构建高可用的Harbor镜像仓库。实际部署时建议先在测试环境验证配置,生产环境需结合企业安全策略进行定制化调整。

相关文章推荐

发表评论

活动