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

接上一篇 基于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: bogusimage:tag: 14.8.0initdbScriptsConfigMap: bogusinstall: 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.rhkb.cn/news/208866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:541. 反转字符串 II 解题思想:进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…

简单搭建Python开发环境

Python环境安装 Python官网: Welcome to Python.org 1. 选择Python3.x版本下载,建议使用稳定版3.9.13(Stable Releases),绝大数库对3.9版本Python已良好支持,但对3.10及以上支持不完全: https://www.…

SSM框架(六):SpringBoot技术及整合SSM

文章目录 一、概述1.1 简介1.2 起步依赖1.3 入门案例1.4 快速启动 二、基础配置2.1 三种配置文件方式2.2 yaml文件格式2.3 yaml读取数据方式(3种) 三、多环境开发3.1 yml文件-多环境开发3.2 properties文件-多环境开发3.3 多环境命令行启动参数设置3.4 多…

2023年腾讯云双12优惠活动整理汇总

2023年双12腾讯云推出了年末感恩回馈活动,年度爆款2核2G4M云服务器118元/年,新老用户同享,还可领取总面值2000元代金券,老用户服务器续费4折起。本文为大家整理汇总腾讯云双12优惠活动。 活动地址: 点此直达腾讯云双1…

JOSEF 快速中间继电器 KZJ-4H-L DC220V 导轨安装

快速中间继电器KZJ-4H-LDC220V导轨安装导轨安装是广泛用于电力系统,能够断货开或开通大负载,并且具有较强的断弧能力,适用于交流50/60Hz。电压24380V,直流电压24280V自动控制电路中以增加保护和控制回路的触点数量与触点容量。 KZJ系列快速中…

“B2B+OMS方案”,赋能家电巨头构建BC订单一体化能力,促进业务增长|徐礼昭

某国际知名家电电器品牌,年营收超过5000亿元。该电器企业其整体业务分三大类:线上线下B2B2C业务、线下B2B业务以及DTC零售业务。 随着业务的发展,该电器品牌对2B业务及DTC业务的数字化系统能力支撑需要更加全面和立体,以适应业务…

【Matlab】如何快速入门一项新技能-以Matlab/Simulink入门为例

目录 1. 引言 2. 背景 3. 快速学习并完成开发 3.1 了解需求,知道要干什么 3.2 了解Matlab/Simulink基本功能 第一步,查看Matlab的中文网站中文网站https://www.ilovematlab.cn/resources/对Matlab/Simulink有了一个初步认识。 3.3 实现一个最简单…

技术阅读周刊第第8️⃣期

技术阅读周刊,每周更新。 历史更新 20231103:第四期20231107:第五期20231117:第六期20231124:第七期 Prometheus vs. VictoriaMetrics (VM) | Last9 URL: https://last9.io/blog/prometheus-vs-victoriametrics/?refd…

msyql迁移到mongodb

关系型数据库迁移到mongodb的理由 高并发需求,关系型数据库不容易扩展 快速迭代 灵活的json模式 大数据量需求 应用迁移难度: 关系型到关系 oracle-》mysql oracle -》 postgresql 关系到文档- oracle -》 mongodb 需要考虑: 总体架构&#…

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷14

单选题 1、下列现象中有化学变化发生的是 A、蜡烛融化 B、冰块融化 C、电磁炉烧开水 D、铁生锈 答案:D 2、把左边的图形用剪刀剪开,拼成右边的正方形,至少剪几刀 A、1 B、2 C、3 D、4 答案:B 3、能够检验土壤中有沙和粘…

Vue---Echarts

项目需要用echarts来做数据展示,现记录vue3引入并使用echarts的过程。 1. 使用步骤 安装 ECharts:使用 npm 或 yarn 等包管理工具安装 ECharts。 npm install echarts 在 Vue 组件中引入 ECharts:在需要使用图表的 Vue 组件中,引入…

【Vulnhub 靶场】【HackathonCTF: 2】【简单】【20210620】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/hackathonctf-2,714/ 靶场下载:https://download.vulnhub.com/hackathonctf/Hackathon2.zip 靶场难度:简单 发布日期:2021年06月20日 文件大小:2.6 GB 靶场作者&…

VS安装QT VS Tools编译无法通过

场景: 项目拷贝到虚拟机内部后,配置好相关环境后无法编译,安装QT VS Tools后依旧无法编译,查找资料网上说的是QT工具版本不一致导致的,但反复试了几个版本后依旧无法编译通过。错误信息如下: C:\Users\Ad…

奇葩问题:arp缓存、ip地址冲突(实际是ip地址被占用导致arp缓存出现问题)

文章目录 今天遇到个奇葩的问题 今天遇到个奇葩的问题 今天遇到个奇葩的问题,我把我们192.168.1.116的盒子ip改成192.168.2.116后,再改回来,发现我们盒子的http服务始终无法访问,用Advanced IP Scanner扫描一下,发现就…

【Qt开发流程】之自定义语法高亮和使用HTML语法

描述 语法高亮(Syntax Highlighting)是一种在编辑器中突出显示代码语法元素的技术,使其更易于阅读和理解。 Qt提供了一个功能齐全的语法高亮框架,支持多种语言和格式,可以自定义颜色和样式。 对于使用Qt的开发人员来说…

【论文 | 联邦学习】 | Towards Personalized Federated Learning 走向个性化的联邦学习

Towards Personalized Federated Learning 标题:Towards Personalized Federated Learning 收录于:IEEE Transactions on Neural Networks and Learning Systems (Mar 28, 2022) 作者单位:NTU,Alibaba Group,SDU&…

RPC和REST对比

RPC和REST对比 参考学习 RPC 和 REST 之间有什么区别? 当我们对比RPC和REST时,其实是在对比RPC风格的API和REST风格的API,后者通常成为RESTful API。 远程过程调用(RPC)和 REST 是 API 设计中的两种架构风格。API …

【Linux】第二十五站:深入理解文件系统

文章目录 一、前言二、认识硬件----磁盘1.基本介绍2.磁盘的存储构成3.磁盘的逻辑结构4.回归到硬件 三、文件系统1.划分2.Block group(1)Data blocks(2)inode Table(3)Block Bitmap(4)inode Bitmap(5)Group Descriptor Table(GDT)(6)Super Block 3.总结4.一些其他问题5.如何理解…

Linux 命令stat

命令作用 stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。 查看的信息内容: File 显示文件名 Size 显示文件大小 Blocks 文件使用的数据块总数 IO Block IO块大小 regular file 文件类型(常规文件) Device …

解决:IDEA的debug模式只有第一次能拦截请求进行debug,后续所有请求全部失效

解决:IDEA的debug模式只有第一次能拦截请求进行debug,后续所有请求全部失效 一问题描述:IDEA的debug模式只有第一次能拦截请求进行debug,后续所有请求全部失效二问题原因:对IDEA的debug功能不熟悉或者理解有偏差三解决…