升级使用 Helm 部署的 Harbor

本指南用于升级 0.3.0 版本之后通过 Chart 部署的 Harbor。

注意

  • 由于 Harbor 不同版本之间的数据库 Schema 可能会发生变化,因此在升级过程中会进行 Schema 迁移,停机时间不可避免
  • 数据库 Schema 无法自动降级,因此不支持 helm rollback 命令

升级

1. 备份数据库

备份 Harbor 使用的数据库,以防止升级过程失败。

2. 下载新 Chart

下载最新版本的 Harbor Chart。

3. 配置新 Chart

配置新的 Chart,确保配置项与旧 Chart 具有相同的值。

注意:如果启用了 TLS 并且证书是由 Chart 自动生成的,则升级期间将生成新证书并覆盖旧证书,如果您已分发该证书,这可能会导致一些问题。您可以按照以下步骤配置新 Chart 以使用旧证书

  1. 获取存储证书的 Secret 名称

    kubectl get secret
    

    查找名称以 -harbor-ingress (通过 Ingress 暴露服务) 或 -harbor-nginx (通过 ClusterIPNodePort 暴露服务) 结尾的 Secret

  2. 将 Secret 导出为 yaml 文件

    kubectl get secret <secret-name-from-step-1> -o yaml > secret.yaml
    
  3. 通过在 secret.yaml 中设置 metadata.name 来重命名 Secret

  4. 创建新的 Secret

    kubectl create -f secret.yaml
    
  5. 配置 Chart 以使用新的 Secret,通过将 expose.tls.secretName 设置为您在步骤 3 中设置的值

4. 升级

运行升级命令

helm upgrade release-name --force .
如果从 0.3.0 版本升级,则 --force 是必要的,原因是问题 #30

已知问题

  • 如果您从 0.3.0 版本升级,Job 日志将会丢失,因为日志存储在 0.3.0 版本的 emptyDir 中。