logo

Harbor 2.9.0 ARM64架构离线安装与升级部署全攻略

作者:热心市民鹿先生2025.09.18 11:48浏览量:0

简介:本文详细介绍Harbor 2.9.0在ARM64架构下的离线安装包制作、安装部署及版本升级全流程,包含环境准备、制作离线包、安装配置、升级策略及常见问题解决方案,助力企业实现私有镜像仓库的自主可控部署。

一、背景与需求分析

随着国产芯片的普及,越来越多的企业选择基于ARM架构的服务器部署容器化应用。Harbor作为开源的企业级私有镜像仓库,其2.9.0版本对ARM64架构提供了原生支持。然而,在离线环境下完成Harbor的安装与升级存在诸多挑战:官方未提供ARM64离线包、依赖管理复杂、版本升级风险高等。本文将系统性解决这些问题,提供可复用的操作方案。

1.1 离线安装的核心价值

离线部署Harbor的核心优势体现在三个方面:

  • 安全可控:避免互联网暴露风险,符合等保2.0要求
  • 环境一致性:通过定制化离线包确保部署环境标准化
  • 效率提升:减少重复下载依赖的时间消耗

1.2 ARM64架构适配要点

与x86架构相比,ARM64环境需要特别注意:

  • 基础镜像选择:必须使用arm64v8标签的基础镜像
  • 二进制文件兼容性:确保Harbor及其组件(如Clair、Notary)编译为ARM64架构
  • 依赖库版本:部分C库(如openssl)需要特定版本支持

二、离线安装包制作流程

2.1 环境准备

2.1.1 基础环境要求

项目 要求说明
操作系统 CentOS 7.9/Ubuntu 20.04(ARM64版)
Docker版本 ≥19.03(支持Buildx多架构构建)
磁盘空间 ≥50GB(含依赖缓存)
网络要求 可访问Docker Hub等源(制作阶段)

2.1.2 工具链安装

  1. # 安装Docker Buildx(多架构构建支持)
  2. mkdir -p ~/.docker/cli-plugins
  3. curl -L https://github.com/docker/buildx/releases/download/v0.9.0/buildx-v0.9.0.linux-arm64 -o ~/.docker/cli-plugins/docker-buildx
  4. chmod +x ~/.docker/cli-plugins/docker-buildx
  5. # 配置Buildx多平台构建
  6. docker buildx create --name multiarch --use
  7. docker buildx inspect --bootstrap

2.2 依赖收集与打包

2.2.1 基础依赖清单

Harbor 2.9.0的核心依赖包括:

  • 数据库PostgreSQL 12+(ARM64版)
  • 存储后端:Redis 6+(ARM64版)
  • 证书工具:cfssl 1.4.1+
  • 核心组件:Harbor二进制、Clair扫描器、Notary签名服务

2.2.2 自动化收集脚本

  1. #!/bin/bash
  2. # 创建依赖目录结构
  3. mkdir -p harbor-offline/{binaries,images,configs}
  4. # 收集ARM64基础镜像
  5. IMAGES=(
  6. "postgres:12-alpine"
  7. "redis:6-alpine"
  8. "goharbor/harbor-core:v2.9.0"
  9. "goharbor/harbor-jobservice:v2.9.0"
  10. "goharbor/harbor-registryctl:v2.9.0"
  11. "goharbor/clair-adapter:v2.9.0"
  12. "goharbor/notary-server:v2.9.0"
  13. "goharbor/notary-signer:v2.9.0"
  14. )
  15. for img in "${IMAGES[@]}"; do
  16. docker pull $img
  17. docker save -o harbor-offline/images/$(basename $img).tar $img
  18. done
  19. # 收集二进制文件
  20. wget https://github.com/cloudflare/cfssl/releases/download/v1.4.1/cfssl_1.4.1_linux_arm64 -O harbor-offline/binaries/cfssl
  21. chmod +x harbor-offline/binaries/cfssl

2.3 安装包验证

验证离线包完整性的关键步骤:

  1. 镜像校验:使用docker load -i逐个验证镜像
  2. 哈希比对:对二进制文件生成SHA256校验和
  3. 依赖树检查:通过ldd确认无缺失动态库
  1. # 示例:验证cfssl二进制
  2. file harbor-offline/binaries/cfssl
  3. # 应输出:ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV)...
  4. ldd harbor-offline/binaries/cfssl
  5. # 应无"not found"项

三、离线环境部署实施

3.1 基础服务部署

3.1.1 数据库初始化

  1. -- PostgreSQL初始化脚本(harbor_db
  2. CREATE DATABASE registry;
  3. CREATE DATABASE clair;
  4. CREATE DATABASE notaryserver;
  5. CREATE DATABASE notarysigner;
  6. CREATE USER harbor WITH PASSWORD 'Harbor12345';
  7. GRANT ALL PRIVILEGES ON DATABASE registry TO harbor;
  8. GRANT ALL PRIVILEGES ON DATABASE clair TO harbor;

3.1.2 Redis配置优化

修改redis.conf关键参数:

  1. maxmemory 4gb
  2. maxmemory-policy allkeys-lru
  3. timeout 300

3.2 Harbor核心组件安装

3.2.1 配置文件定制

编辑harbor.yml重点配置项:

  1. hostname: registry.example.com
  2. http:
  3. port: 80
  4. https:
  5. certificate: /data/cert/server.crt
  6. private_key: /data/cert/server.key
  7. storage_driver:
  8. name: filesystem
  9. settings:
  10. rootdirectory: /var/data/registry
  11. database:
  12. password: Harbor12345
  13. clair:
  14. updaters_interval: 12

3.2.2 离线安装命令

  1. # 解压离线包
  2. tar -xzf harbor-offline-installer-v2.9.0.tgz
  3. cd harbor
  4. # 加载所有镜像
  5. for img in ../harbor-offline/images/*.tar; do
  6. docker load -i $img
  7. done
  8. # 安装Harbor
  9. ./install.sh --offline --with-clair --with-notary

3.3 部署后验证

关键验证点:

  1. 服务状态检查docker-compose ps应显示所有容器为”Up”
  2. API连通性测试
    1. curl -k https://registry.example.com/api/v2.0/health
    2. # 应返回:{"status":"healthy"}
  3. 镜像推送测试
    1. docker push registry.example.com/library/nginx:latest
    2. # 应成功返回Digest值

四、版本升级策略

4.1 升级前准备

4.1.1 数据备份方案

  1. # 数据库备份
  2. pg_dump -U harbor -h localhost registry > registry_backup.sql
  3. pg_dump -U harbor -h localhost clair > clair_backup.sql
  4. # 存储目录备份
  5. tar -czf registry_data.tar.gz /var/data/registry

4.1.2 兼容性检查

升级前必须验证:

  • 存储驱动兼容性(filesystem/s3等)
  • 数据库schema变更
  • 配置文件参数变化

4.2 升级实施步骤

4.2.1 增量升级包制作

  1. # 对比新旧版本差异
  2. DIFF_IMAGES=(
  3. "goharbor/harbor-core:v2.9.0"
  4. "goharbor/harbor-jobservice:v2.9.0"
  5. )
  6. # 制作增量包
  7. mkdir -p upgrade-package/images
  8. for img in "${DIFF_IMAGES[@]}"; do
  9. docker pull $img
  10. docker save -o upgrade-package/images/$(basename $img).tar $img
  11. done

4.2.2 升级执行流程

  1. # 1. 停止服务
  2. cd harbor
  3. docker-compose down
  4. # 2. 加载新镜像
  5. for img in ../upgrade-package/images/*.tar; do
  6. docker load -i $img
  7. done
  8. # 3. 执行数据库迁移(如有)
  9. # 通常Harbor自带迁移脚本,需检查release notes
  10. # 4. 重启服务
  11. docker-compose up -d

4.3 升级后验证

关键验证项:

  1. 版本号确认
    1. docker exec harbor-core cat /harbor/VERSION
    2. # 应输出:2.9.0
  2. 功能测试
    • 镜像推送/拉取
    • 漏洞扫描(Clair)
    • 镜像签名(Notary)
  3. 性能监控
    1. docker stats --no-stream
    2. # 观察CPU/内存使用率是否在合理范围

五、常见问题解决方案

5.1 镜像架构不匹配错误

现象standard_init_linux.go:219: exec user process caused: exec format error

解决方案

  1. 确认所有容器镜像均为arm64v8标签
  2. 使用docker inspect <镜像ID> | grep Architecture验证
  3. 重新构建错误镜像:
    1. docker buildx build --platform linux/arm64 -t goharbor/harbor-core:v2.9.0 .

5.2 数据库连接失败

现象pq: password authentication failed for user "harbor"

排查步骤

  1. 检查pg_hba.conf配置:
    1. host all harbor 127.0.0.1/32 md5
    2. host all harbor ::1/128 md5
  2. 验证密码是否包含特殊字符(建议使用简单密码测试)
  3. 检查PostgreSQL日志
    1. journalctl -u postgresql -f

5.3 存储权限问题

现象permission denied while creating volume directory

解决方案

  1. 检查存储目录权限:
    1. chown -R 10000:10000 /var/data/registry
  2. 确认SELinux状态:
    1. getenforce
    2. # 如为Enforcing,临时设置为Permissive:
    3. setenforce 0

六、最佳实践建议

  1. 版本管理

    • 建立版本基线,记录所有组件版本号
    • 使用标签管理离线包(如harbor-offline-v2.9.0-arm64-20230801
  2. 自动化部署

    • 使用Ansible/Terraform实现部署自动化
    • 示例Ansible任务片段:
      1. - name: Load Harbor images
      2. command: "docker load -i {{ item }}"
      3. with_fileglob: "/offline/images/*.tar"
  3. 监控告警

    • 配置Prometheus监控Harbor指标
    • 关键告警规则:
      • 存储空间使用率>85%
      • 镜像扫描任务积压>10
      • API响应时间>500ms

通过本文提供的系统化方案,企业可以在ARM64架构下高效完成Harbor 2.9.0的离线部署与升级,实现私有镜像仓库的安全可控运行。实际实施时,建议先在测试环境验证全部流程,再推广到生产环境。

相关文章推荐

发表评论