基于helm的方式在k8s集群中部署gitlab - 升级(三)

news2024/11/28 22:44:26

接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署(一),本篇重点对gitlab在k8s集群中进行升级

文章目录

    • 1. gitlab 升级
      • 1.1 获取release
      • 1.2 下载目前版本的gitlab charts
      • 1.3 获取当前的values文件
      • 1.4 升级
    • 2. gitlab数据库升级
      • 2.1 备份数据库
      • 2.2 删除已有的 PostgreSQL 数据
      • 2.3 升级数据库
      • 2.4验证

1. gitlab 升级

本次升级从15.8.0升级到15.11.10

1.1 获取release

helm list -n jihulab

1.2 下载目前版本的gitlab charts

helm repo update #更新repo源
helm search repo  gitlab-jh -l #查看对应版本的charts
helm fetch gitlab/gitlab --version 6.11.10 #拉取目标版本的charts
tar -xf gitlab-6.11.10.tgz
mv gitlab gitlab-15.11.10

1.3 获取当前的values文件

cd gitlab-15.11.10
helm get values gitlab -n jihulab > 15.8.0

1.4 升级

cd gitlab-15.11.10 #切换目录

helm upgrade gitlab gitlab-jh/gitlab \
--version 6.11.10 \
--timeout 600s  \
--set certmanager.install=false \
--set global.ingress.configureCertmanager=false  \
--set global.ingress.tls.enabled=true \
--set gitlab.webservice.ingress.tls.secretName=gitlab-jihulab-cn-ssl \
--set registry.ingress.tls.secretName=registry-jihulab-cn-ssl \
--set minio.ingress.tls.secretName=minio-jihulab-cn-ssl \
--set nginx-ingress.service.type=NodePort \
--set global.shell.port=31475 \
--values values.yaml -n jihulab

2. gitlab数据库升级

gitlab15.11.10中数据库版本从12.7升级到14.7

参考链接 升级捆绑 PostgreSQL 的步骤

2.1 备份数据库

准备已有的数据库

pre 阶段将使用 Toolbox 中的备份实用程序脚本创建数据库备份,该脚本将保存到配置的 s3 存储桶(默认为 MinIO):

# GITLAB_RELEASE should be the version of the chart you are installing, starting with 'v': v6.0.0
curl -s "https://jihulab.com/gitlab-cn/charts/gitlab/-/raw/${GITLAB_RELEASE}/scripts/database-upgrade" | bash -s pre

这个脚本database-upgrade的中pre其实主要是备份数据库,但是由于toolbox容器中没有kubectl命令行工具,因为我这里还是使用的是原始的备份命令backup-utility来完成数据库的备份操作的。
在这里插入图片描述
备份

kubectl exec -it -n jihulab gitlab-toolbox-6dd5d8fc59-7nq52 -- backup-utility --skip registry,uploads,artifacts,lfs,packages,external_diffs,terraform_state,ci_secure_files,repositories

在这里插入图片描述
备份完后会自动上传到minio中
在这里插入图片描述

2.2 删除已有的 PostgreSQL 数据

由于 PostgreSQL 数据格式已更改,因此升级需要在升级版本之前删除现有的 PostgreSQL StatefulSet。 StatefulSet 将在下一步中重新创建。

删除已有的pg数据

kubectl delete statefulset gitlab-postgresql --namespace jihulab
kubectl delete pvc data-gitlab-postgresql-0 -n jihulab

在这里插入图片描述

2.3 升级数据库

恢复数据库

请注意以下事项:

  • 您需要使用 Bash 4.0 或更高版本才能成功运行脚本,因为它需要使用 bash 关联数组。
  1. 等待 Toolbox pod 的升级完成。 RELEASE_NAME 应该是 helm list 中 GitLab 版本的名称

    kubectl rollout status -w deployment/gitlab-toolbox -n jihulab
    
  2. Toolbox pod 部署成功后,运行 post 步骤:(这块和pre一样,可以通过原生自带命令处理)

    # GITLAB_RELEASE should be the version of the chart you are installing, starting with 'v': v6.0.0
    curl -s "https://jihulab.com/gitlab-cn/charts/gitlab/-/raw/${GITLAB_RELEASE}/scripts/database-upgrade" | bash -s post
    

此步骤将执行以下操作(强烈建议操作此步骤):

  1. webservicesidekiqgitlab-exporter deployment 的副本设置为 0。这将防止任何其它应用程序在恢复备份时更改数据库。

    kubectl scale deployment gitlab-sidekiq-all-in-1-v2 --replicas=0 -n jihulab
    kubectl scale deployment gitlab-webservice-default --replicas=0 -n jihulab
    kubectl scale deployment gitlab-gitlab-exporter --replicas=0 -n jihulab
    

    在这里插入图片描述

  2. 从前阶段创建的备份恢复数据库(将minio中的备份数据下载到本地,并拷贝到toolbox容器中,备份文件要在容器中的**/srv/gitlab/tmp/backups**目录下)。
    在这里插入图片描述
    在这里插入图片描述

  3. 修改values文件
    vim gitlab-15.8.yaml

     ...
     ...
    postgresql:
      existingSecret: bogus
      image:
        tag: 14.8.0
      initdbScriptsConfigMap: bogus
      install: true
    ...
    ...
    

    在这里插入图片描述

  4. 升级数据库

    按照我们的标准程序 升级极狐GitLab,并添加以下内容:

    在升级命令中使用以下标志禁用迁移:--set gitlab.migrations.enabled=false

    helm upgrade gitlab gitlab-jh/gitlab \
      --version 6.11.10 \
      --timeout 600s  \
      --set certmanager.install=false \
      --set global.ingress.configureCertmanager=false  \
      --set global.ingress.tls.enabled=true \
      --set gitlab.webservice.ingress.tls.secretName=gitlab-jihulab-cn-ssl \
      --set registry.ingress.tls.secretName=registry-jihulab-cn-ssl \
      --set minio.ingress.tls.secretName=minio-jihulab-cn-ssl \
      --set global.shell.port=31475 \
      --set nginx-ingress.service.type=NodePort \
      --set gitlab.migrations.enabled=false  \ #gitlab.migrations.enabled=false必须要加上
      --values gitlab-15.8.yaml -n jihulab
    

    在这里插入图片描述

  5. 为新版本运行数据库恢复数据

    进入到toolbox容器中,执行恢复命令

    kubectl exec -it  gitlab-toolbox-6dd5d8fc59-7nq52 -n jihulab /bin/bash
    cd /srv/gitlab/tmp/backups
    backup-utility --restore -t 1688440164_2023_07_04_15.11.10-jh
    

    1688440164_2023_07_04_15.11.10-jh 是一种格式要求

    最下面的蓝框中的报错可以忽略 在这里插入图片描述
    在这里插入图片描述

  6. 恢复第一步中的所有 deployment

    kubectl scale deployment gitlab-gitlab-exporter --replicas=1 -n jihulab
    kubectl scale deployment gitlab-webservice-default --replicas=2 -n jihulab
    kubectl scale deployment gitlab-sidekiq-all-in-1-v2 --replicas=1 -n jihulab
    

2.4验证

在这里插入图片描述
可以创建issue
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1256565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现(log.hpp)二、目录的具体使用1.comm.hpp(管道初始化)2.sever.cpp(为读端且令其创建命名管道)3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向,可…

echart一键生成迁徙图

echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…

windows本地dockr的clickhouse链接本地mysql服务,连接不上

不想看过成的,解决办法在最后面 报错信息: SQL 错误 [1000] [08000]: Poco::Exception. Code: 1000, e.code() 0, Exception: Connections to all replicas failed: test1localhost:3306 as user root (version 21.12.3.32 (official build)) , serve…

使用Selenium、Python和图鉴打码平台实现B站登录

selenium实战之模拟登录b站 基础知识铺垫: 利用selenium进行截图: driver.save_screenshot() 注意图片文件名要用png结尾. 关于移动: ActionChains(bro).move_to_element_with_offset()# 对于某个图像ActionChains(bro).move_by_offset(…

敢做敢当——歌手荆涛与歌曲《敢做敢当》的精神内核

在人生的道路上,多少次我们渴望前方,梦想在远方熠熠生辉,然而等待我们的,却往往是昨日的辉煌。面对这样的境遇,我们应该如何选择?荆涛的歌曲《敢做敢当》给出了我们一个明确的答案。 一、风中伫立&#xff…

LeetCode198.打家劫舍

打家劫舍和背包问题一样是一道非常经典的动态规划问题,只要做过几道动态规划的题,这道题简直就非常容易做出来。我应该花了10来分钟左右就写出来了,动态规划问题最重要的就是建立状态转移方程,就是说如何从上一个状态转移到下一个…

Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

Python 进阶(十一):高精度计算(decimal 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入decimal模块2. 设置精度3. 创建Decimal对象4. 基本运算5. 比较运算6. 其他常用函数7. 注意事项8. 总结 大家好,我是水滴~~ 在进行数值计算时,浮点数的精度问题可能会导致结果的不准确性。为了…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21:30 负责人:jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

【多线程】-- 03 龟兔赛跑案例线程创建方法之三:Callable接口

多线程 2 线程创建 【续】2.2 龟兔赛跑案例 首先需要一个赛道距离,然后会距离终点越来越近判断比赛是否结束打印出胜利者龟兔赛跑开始故事中是乌龟获胜,兔子需要睡觉,所以要模拟兔子睡觉最终,乌龟赢得比赛 package com.duo.de…

【Spring MVC】Filter 过滤器异常处理 HandlerExceptionResolver 分析

文章目录 前言版本说明测试 Demo1、自定义过滤器 DemoFilter2、自定义业务异常 ServiceException3、自定义异常处理类 DemoExceptionHandler4、DemoController5、请求测试 问题分析1、日志打印记录2、Debug 方法 解决方案1、修改自定义过滤器2、请求测试 解决方案分析1、日志打…

Linux uname命令教程:如何打印linux操作系统名称和硬件的基本信息(附实例教程和注意事项)

Linux uname命令介绍 uname命令是一个在Linux中常用的命令行工具,用于打印有关操作系统名称和系统硬件的基本信息。uname这个名字来源于"UNIX name"。它最常用于确定处理器架构,系统主机名和系统上运行的内核版本。 Linux uname命令适用的Li…

Ceph的监控工具Dashboard安装部署,详细实战过程

Ceph的监控工具Dashboard安装部署 还是用之前的集群,老规矩,没有主机名的是所有节点都执行 安装mgr-dashboard,每个节点都要安装 yum install -y ceph-mgr-dashboard开启MGR的功能 ceph mgr module enable dashboard查看开启的模块 [root…

《一个人的朝圣》读后感

最近一周看了一本《一个人的朝圣》,读后汇总些文字,便于后续查阅! 65岁的哈罗德,始终过着轨迹类似的人生。在某一天,由于一封信,却使他的内心深处产生了某种信念。他迈开艰难的脚步,强忍住关节的…

U-boot(五):启动内核

本文主要探讨210的uboot启动内核过程。 嵌入式系统状态启动 未上电时bootloader、kernel、rootfs以镜像形式存储在启动介质中(X210为iNand/SD卡),运行时搬运到DDR中 未上电时u-boot.bin,zImage,rootfs在SD卡中各自对应的分区中,启动时去对应分区寻找(分区表一…

PWM(PulseWidthModulation)控制

PWM(Pulse Width Modulation)控制就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值);面积等效原理是PWM技术的重要基础理论&#xff1…

HTTP协议发展

HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC) 每一代HTTP解决了什么问题? 下图说明了主要功能。 HTTP 1.0 于 1996 年最终确定并完整记录。对同一服务器的每个请求都需要单独的 TCP 连接。 HTTP 1.1 于 1997 年发布。TCP 连接可以保持打开状态…

漏电流直流互感器正负1-50ua

1/ 互感线圈 01 双绕组800t / 200t 互感线圈 02 单绕组 1120t

PTA-7-53 身份证排序

题目: 输入n,然后连续输入n个身份证号。 将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。 根据题目要求,代码实现如下: import java.util.Scanner; import java.uti…

【源码解析】聊聊SpringBoot自动装配如何实现的

Springboot的习惯优于配置&#xff0c;其实就是默认装配一些配置&#xff0c;。对于整体的开发、部署提升了效率。我们直接写一个main类就可以快速开发了。 比如我们引入web的starter-web&#xff0c;那么就引入了web的框架。 <dependency><groupId>org.springfra…