LTS 版本打 Patch 标准流程

  其他常见问题
内容纲要

概要描述

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

详细说明

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

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

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

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

修改 image.conf

2.1 获取镜像仓库

# 执行命令:
docker info |grep 'Registry Mirrors' -A 1
# 命令输出
Registry Mirrors:
 https://gts-argo322-031:5000/

可以看到镜像仓库是 gts-argo322-031:5000

2.2 修改 image.conf 中 image 信息

file

file

将base_image 和 new_image 中的 172.16.1.99 修改为 gts-argo322-031:5000,比如这样:

file
file

将后面的版本号,修改为对应的版本号,只需要修改版本号即可,比如这个是给 argodb-3.2.2-final 打 patch ,则修改为 argodb-3.2.2-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

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

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

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