LTS 版本打 Patch 标准流程

  其他常见问题
内容纲要

概要描述

TDH 产品中发布了 LTS 版本,针对这些版本,可以通过打 Patch 的方式解决一些已知问题,本文介绍一下 LTS 版本应该如何打 Patch。

详细说明

TDH 中 Patch 的实现是借助镜像的更新,主要包括以下几步:

  1. 通过查看 Patch 列表确认当前版本是否符合 Patch 条件。
  2. 联系我们 确认当前产品是否满足 Patch 条件
  3. 执行更新脚本

1.确定产品版本可以执行 Patch

  1. 可以通过查看 patch 列表,确认自己的产品版本支持打 Patch。
  2. 也可以 联系我们 确认当前产品是否满足 Patch 条件。

修改 image.conf

解压Patch 后,得到这样一个目录。

file

然后,进入到 image/服务名 目录下。
修改 image.conf

将后面的版本号,修改为对应的版本号,只需要修改版本号即可,比如这个是给 quark-8.37.1000-final 打 patch ,则修改为 quark-8.37.1000-final 即可,像这样:

file

file

3.执行更新脚本

执行 buildImage.sh 脚本,脚本执行完成后将完成 image 的更新并 push 仓库,重启服务后即可应用更新后的image
参考命令:

./buildImage.sh

file

如果更新完 Patch 之后使用有问题,可以按照回滚方式回滚

4.常见异常情况处理

  1. 应用补丁遇到Final镜像校验报错:
ERROR  Baseimage layers check failed, baseimage is not expected release final version!!!
...
WARNING  Image with imageID: ca3bd4c80def maybe the expected baseimage!!!

新的补丁机制要求基于final版本构建补丁镜像,该报错意味着当前image.conf里配置的baseimage不是原始的final镜像,因此导致应用失败。

如果有 类似 imageID: ca3bd4c80def 的输出,则修改image.conf 中的 base_image 为这个imageID: ca3bd4c80def 的tag 即可。

如果没有WARNING imageID: ca3bd4c80def的输出,则请 联系我们 处理。

  1. 执行Patch 脚本需要 root 权限,如果遇到权限相关的报错,使用 sudo 即可,参考命令为:
sudo /bin/bash ./buildImage.sh

5.回滚

Patch 操作会备份之前的镜像,如果需要回滚,可以参考以下步骤:

  1. 找到最新的 backup 的镜像,如下图:
[root@argodb-30~]# docker images |grep inceptor |grep backup
argodb-30:5000/transwarp/inceptor                    transwarp-6.2.2-final-backup-202304170120                                              b312515cf548        2 weeks ago         4.21GB
argodb-30:5000/transwarp/argodb-inceptor             argodb-3.2.2-final-backup-202304200125                                                 2b4d69ad1fa1        2 months ago        1.82GB
argodb-30:5000/transwarp/argodb-inceptor             argodb-3.2.2-final-backup-202210251826                                                 685d7643871c        12 months ago       1.82GB
  1. 可以通过查看 image.conf 文件,找到最初的 base 镜像的 tag,如下图:
[root@argodb-30~]# cat image.conf                                                         #config base image of Dockerfile,such as xxx_image=:5000/transwarp/argodb-inceptor:argodb-1.1.0-final
base_image=argodb-30:5000/transwarp/inceptor:transwarp-6.2.2-final
#config new name:tag of Dockerfile
new_image=argodb-30:5000/transwarp/inceptor:transwarp-6.2.2-final
[root@argodb-30~/patch/Patch-inceptor-transwarp622-x86_arm64-20230511-16]#
  1. 恢复为base_image,只需要讲 backup 的镜像 tag 为 base_image,然后 push 到镜像仓库即可;
[root@argodb-30~]# docker tag argodb-30:5000/transwarp/inceptor:transwarp-6.2.2-final-backup-202304170120 argodb-30:5000/transwarp/inceptor:transwarp-6.2.2-final
[root@argodb-30~]# docker push argodb-30:5000/transwarp/inceptor:transwarp-6.2.2-final
The push refers to repository [argodb-30:5000/transwarp/inceptor]
e46b117d82d1: Preparing
77d5c130a2d7: Waiting
0cd0f9c5c17b: Preparing
...
a7873230c9b8: Layer already exists
5f70bf18a086: Layer already exists
f64116beaa4b: Layer already exists
transwarp-6.2.2-final: digest: sha256:3f77c96e48c6b4c00c33932ca3b6ab996a5d80c0cf843bba6ffac712c45d89f5 size: 19139
  1. 相关服务需要重启才会使用最新的镜像。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。