跳转至

离线升级镜像仓库模块

本页说明下载镜像仓库模块后,应该如何安装或升级。

Info

下述命令或脚本内出现的 kangaroo 字样是镜像仓库模块的内部开发代号。

从安装包中加载镜像

您可以根据下面两种方式之一加载镜像,当环境中存在镜像仓库时,建议选择 chart-syncer 同步镜像到镜像仓库,该方法更加高效便捷。

chart-syncer 同步镜像到镜像仓库

  1. 创建 load-image.yaml

    Note

    该 YAML 文件中的各项参数均为必填项。您需要一个私有的镜像仓库,并修改相关配置。

    若当前环境已安装 chart repo,且 chart-syncer 也支持将 chart 导出为 tgz 文件。

    load-image.yaml
    source:
      intermediateBundlesPath: kangaroo-offline # (1)
    target:
      containerRegistry: 10.16.10.111 # (2)
      containerRepository: release.daocloud.io/kangaroo # (3)
      repo:
        kind: HARBOR # (4)
        url: http://10.16.10.111/chartrepo/release.daocloud.io # (5)
        auth:
          username: "admin" # (6)
          password: "Harbor12345" # (7)
      containers:
        auth:
          username: "admin" # (8)
          password: "Harbor12345" # (9)
    
    1. 到执行 charts-syncer 命令的相对路径,而不是此 YAML 文件和离线包之间的相对路径
    2. 需更改为你的镜像仓库 url
    3. 需更改为你的镜像仓库
    4. 也可以是任何其他支持的 Helm Chart 仓库类别
    5. 需更改为 chart repo url
    6. 你的镜像仓库用户名
    7. 你的镜像仓库密码
    8. 你的镜像仓库用户名
    9. 你的镜像仓库密码

    若当前环境未安装 chart repo,且 chart-syncer 也支持将 chart 导出为 tgz 文件,并存放在指定路径。

    load-image.yaml
    source:
      intermediateBundlesPath: kangaroo-offline # (1)
    target:
      containerRegistry: 10.16.10.111 # (2)
      containerRepository: release.daocloud.io/kangaroo # (3)
      repo:
        kind: LOCAL
        path: ./local-repo # (4)
      containers:
        auth:
          username: "admin" # (5)
          password: "Harbor12345" # (6)
    
    1. 到执行 charts-syncer 命令的相对路径,而不是此 YAML 文件和离线包之间的相对路径
    2. 需更改为你的镜像仓库 url
    3. 需更改为你的镜像仓库
    4. chart 本地路径
    5. 你的镜像仓库用户名
    6. 你的镜像仓库密码
  2. 执行同步镜像命令。

    charts-syncer sync --config load-image.yaml
    

Docker 或 containerd 直接加载

解压并加载镜像文件。

  1. 解压 tar 压缩包。

    tar xvf kangaroo.bundle.tar
    

    解压成功后会得到 3 个文件:

    • hints.yaml
    • images.tar
    • original-chart
  2. 从本地加载镜像到 Docker 或 containerd。

    docker load -i images.tar
    
    ctr -n k8s.io image import images.tar
    

Note

每个 node 都需要做 Docker 或 containerd 加载镜像操作, 加载完成后需要 tag 镜像,保持 Registry、Repository 与安装时一致。

升级

有两种升级方式。您可以根据前置操作,选择对应的升级方案:

  1. 检查镜像仓库 helm 仓库是否存在。

    helm repo list | grep kangaroo
    

    若返回结果为空或如下提示,则进行下一步;反之则跳过下一步。

    Error: no repositories to show
    
  2. 添加镜像仓库的 helm 仓库。

    helm repo add kangaroo http://{harbor url}/chartrepo/{project}
    
  3. 更新镜像仓库的 helm 仓库。

    helm repo update kangaroo # (1)
    
    1. helm 版本过低会导致失败,若失败,请尝试执行 helm update repo
  4. 选择您想安装的镜像仓库版本(建议安装最新版本)。

    helm search repo kangaroo/kangaroo --versions
    
    [root@master ~]# helm search repo kangaroo/kangaroo --versions
    NAME                   CHART VERSION  APP VERSION  DESCRIPTION
    kangaroo/kangaroo  0.9.0          v0.9.0       A Helm chart for Kangaroo
    ...
    
  5. 备份 --set 参数。

    在升级镜像仓库版本之前,建议您执行如下命令,备份老版本的 --set 参数。

    helm get values kangaroo -n kangaroo-system -o yaml > bak.yaml
    
  6. 查看版本更新记录,如果CRD有更新,更新 kangaroo crds

    helm pull kangaroo/kangaroo --version 0.9.0 && tar -zxf kangaroo-0.9.0.tgz
    kubectl apply -f kangaroo/crds
    
  7. 执行 helm upgrade

    升级前建议您覆盖 bak.yaml 中的 global.imageRegistry 字段为当前使用的镜像仓库地址。

    export imageRegistry={你的镜像仓库}
    
    helm upgrade kangaroo kangaroo/kangaroo \
      -n kangaroo-system \
      -f ./bak.yaml \
      --set global.imageRegistry=$imageRegistry
      --version 0.9.0
    
  1. 备份 --set 参数。

    在升级镜像仓库版本之前,建议您执行如下命令,备份老版本的 --set 参数。

    helm get values kangaroo -n kangaroo-system -o yaml > bak.yaml
    
  2. 查看版本更新记录,如果 CRD 有更新,更新 kangaroo crds。

    kubectl apply -f ./crds
    
  3. 执行 helm upgrade

    升级前建议您覆盖 bak.yaml 中的 global.imageRegistry 为当前使用的镜像仓库地址。

    export imageRegistry={你的镜像仓库}
    
    helm upgrade kangaroo . \
      -n kangaroo-system \
      -f ./bak.yaml \
      --set global.imageRegistry=$imageRegistry
    

评论