基于helm的方式在k8s集群中部署gitlab - 备份恢复(二)
接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署(一),本篇重点介绍在k8s集群中备份gitlab的数据,并在虚拟机上部署相同版本的gitlab,然后将备份的数据进行还原恢复
文章目录
- 1. 备份
- 2. 恢复到虚拟机上的gitlab
- 2.1 将minio上的备份文件(gitlab-backups)下载下来
- 2.2 将文件放在相同版本gitlab实例的backup目录下,然后执行restore命令
- 2.3 配置gitlab实例的对象存储
- 2.4 gitlab 界面查看并测试
- 3. 最终形态的values文件
1. 备份
由于使用的是minio对象存储,然后gitlab的ingress 使用的是nodeport的方式,而默认的minio的配置是域名配置,由于gitlab在14.9以后使用的tootlbox来进行备份的,因此需要更改toolbox引入minio的configmap配置文件。
但是每次upgrade后会覆盖cm文件,因为后面依然需要修改cm,或者使用外置minio。
# 查看tootbox的cm
kubectl get cm -n jihulab
# 编辑tootbox的cm
kubectl edit cm -n jihulab gitlab-toolbox
......if [ ! -f "/${secret_dir}/objectstorage/.s3cfg" ]; thencat <<EOF > "/${secret_dir}/.s3cfg"[default]access_key = $(cat /init-secrets/minio/accesskey)secret_key = $(cat /init-secrets/minio/secretkey)bucket_location = us-east-1host_base = minio.bdeet.top:31501 #修改为nodeport的端口host_bucket = minio.bdeet.top:31501/%(bucket) #修改为nodeport的端口default_mime_type = binary/octet-streamenable_multipart = Truemultipart_max_chunks = 10000multipart_chunk_size_mb = 128recursive = Truerecv_chunk = 65536send_chunk = 65536server_side_encryption = Falsesignature_v2 = Truesocket_timeout = 300use_mime_magic = Falseverbosity = WARNINGwebsite_endpoint = https://minio.bdeet.top:31501 #修改为nodeport的端口EOF
...
...
然后delete掉toolbox的pod,执行备份
# 删除pod
kubectl delete pod -n jihulab gitlab-toolbox-7b796575d8-gplhc
# 备份
kubectl exec -it gitlab-toolbox-7b796575d8-7q8mh -n jihulab -- backup-utility

minio上备份的gitlab数据

2. 恢复到虚拟机上的gitlab
此处跳过安装gitlab到虚拟机上的操作,默认已经安装相同版本的gitlab服务
2.1 将minio上的备份文件(gitlab-backups)下载下来
2.2 将文件放在相同版本gitlab实例的backup目录下,然后执行restore命令
参考gitlab恢复
cd /var/opt/gitlab/backups
sudo gitlab-backup restore
2.3 配置gitlab实例的对象存储
编辑gitlab.rb文件
...
...
gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['proxy_download'] = true
gitlab_rails['object_store']['connection'] = {'provider' => 'AWS','region' => 'us-east-1','path_style' => 'true','host' => 'minio.bdeet.top:30476','endpoint' => 'https://minio.bdeet.top:30476','aws_access_key_id' => 'NHsiBL6v589G4h1JTn2Kj2sFAV5SxyVLslmoDSWdepqzRs6yYMic3QuKQvTPIXvW','aws_secret_access_key' => 'ye3ySpmaaxCVADAhGz1MbhyBwWnGXW8iJEelVidvq1PZS1fYv6SoQjuTIvZHgHIj'
}gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = 'gitlab-mr-diffs'
gitlab_rails['object_store']['objects']['lfs']['bucket'] = 'gitlab-lfs'
gitlab_rails['object_store']['objects']['uploads']['bucket'] = 'gitlab-uploads'
gitlab_rails['object_store']['objects']['packages']['bucket'] = 'gitlab-packages'
gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = 'gitlab-dependency-proxy'
gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = 'gitlab-terraform-state'
gitlab_rails['object_store']['objects']['ci_secure_files']['bucket'] = 'gitlab-ci-secure-files'
gitlab_rails['object_store']['objects']['pages']['bucket'] = 'gitlab-pages'
gitlab_rails['object_store']['objects']['backups']['bucket'] = 'gitlab-backups'
gitlab_rails['object_store']['objects']['backups']['tmpBucket'] = 'tmp'
gitlab-ctl reconfigure
2.4 gitlab 界面查看并测试
k8s上的项目

之前的文件可以看见,后面上传的文件也可以上传成功。

3. 最终形态的values文件
...
...
## 域名配置hosts: domain: bdeet.top hostSuffix: externalIP: ssh: gitlab: name: kube.bdeet.top https: true minio: name: minio.bdeet.top https: true registry: name: registry.bdeet.top https: true
...
...
## ldap集成ldap: preventSignin: false servers: main: label: 'LDAP' host: '129.226.208.223' port: 389 uid: 'uid' bind_dn: 'cn=ldap,dc=wkx,dc=cn' base: 'dc=wkx,dc=cn' password: secret: ldap-admin key: password encryption: 'plain'
...
...
## 配置邮箱 smtp: enabled: true address: smtp.gmail.com port: 587 user_name: "kxw12108@gmail.com" ## https://docs.gitlab.com/charts/installation/secrets#smtp-password password: secret: "smtp-gitlab" key: password # domain: authentication: "login" starttls_auto: true openssl_verify_mode: "peer" pool: false ## https://docs.gitlab.com/charts/charts/globals#outgoing-email ## Email persona used in email sent by GitLab email: from: "kxw12108@gmail.com" display_name: "GitLab Administrator" reply_to: "kxw12108@gmail.com" subject_suffix: "GitLab" smime: enabled: false secretName: "" keyName: "tls.key" certName: "tls.crt"
...
...
...
...
nginx-ingress:enabled: true......service:externalTrafficPolicy: "Local"type: "NodePort" #ingress的svc修改为nodeport......
...
...runner:registrationToken:secret: gitlab-gitlab-runner-secret # gitlab-runner的secret
...
...
gitlab-runner:install: truegitlabUrl: https://kube.bdeet.top #修改gitlab的域名rbac:create: truerunners:privileged: true #开启特权locked: falseconfig: |[[runners]][runners.kubernetes]image = "ubuntu:18.04"{{- if .Values.global.minio.enabled }}[runners.cache]Type = "s3"Path = "gitlab-runner"Shared = true[runners.cache.s3]#ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }}ServerAddress = "https://minio.bdeet.top:31501" #接入对象存储BucketName = "runner-cache"BucketLocation = "us-east-1"Insecure = false
...
...
相关文章:
基于helm的方式在k8s集群中部署gitlab - 备份恢复(二)
接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署(一),本篇重点介绍在k8s集群中备份gitlab的数据,并在虚拟机上部署相同版本的gitlab,然后将备份的数据进行还原恢复 文章目录 1. 备份2. 恢复到虚拟机上的gitlab2.…...
B树与B+树的对比
B树: m阶B树的核心特性: 树中每个节点至多有m棵子树,即至多含有m-1个关键字根节点的子树数属于[2, m],关键字数属于[1, m-1],其他节点的子树数属于 [ ⌈ m 2 ⌉ , m ] [\lceil \frac{m}{2}\rceil, m] [⌈2m⌉,m]&am…...
关键路径-STL版/拓扑排序 关键路径【数据结构】
关键路径-STL版 题目描述 给定有向图无环的边信息,求每个顶点的最早开始时间、最迟开始时间。 输入 第一行图的顶点总数 第二行边的总数 第三行开始,每条边的时间长度,格式为源结点 目的结点 长度 输出 第一行:第个顶点的最早…...
最新AI创作系统ChatGPT系统运营源码,支持GPT-4图片对话能力,上传图片并识图理解对话,支持DALL-E3文生图
一、AI创作系统 SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypescript框架技术,持续集成AI能力到本系统。支持OpenAI DALL-E3文生图,…...
小航助学题库蓝桥杯题库stem选拔赛(21年3月)(含题库教师学生账号)
需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…...
[python]离线加载fetch_20newsgroups数据集
首先手动下载这个数据包 http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz 下载这个文件后和脚本放一起就行,然后 打开twenty_newsgroups.py文件(在fetch_20newsgroups函数名上,右键转到定义即可找到) 之后运行代码即…...
Python与设计模式--代理模式
5-Python与设计模式–代理模式 一、网络服务器配置白名单 代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后 台程序中都有所应用。下面我们用一个抽象化的简单例子,来说明代理模式。首先,构造一个网…...
ubuntu挂载磁盘,以及开机自动挂载磁盘
1. 挂载临时磁盘(关机自动取消挂载) 在Ubuntu上挂载磁盘涉及到几个步骤,其中包括查看可用磁盘、创建挂载点、编辑 /etc/fstab 文件以确保在系统启动时自动挂载等。以下是一般的步骤: **查看可用磁盘和分区:**可以使用…...
Jetpack Compose中适应性布局的新API
Jetpack Compose中适应性布局的新API 针对大屏幕优化的新组合件。 使用新的Material适应性布局,为手机、可折叠设备和平板电脑构建应用程序变得更加简单!市场上各种不同尺寸的Android设备的存在挑战了构建应用程序时对屏幕尺寸的通常假设。开发者不应该…...
小航助学题库蓝桥杯题库stem选拔赛(22年1月)(含题库教师学生账号)
需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSD…...
蓝桥杯第100 题 九宫幻方 DFS 全排列 C++ 解题思维
题目 九宫幻方https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&name%E4%B9%9D 思路和解题方法 一 (DFS) 首先,定义了一些全局变量和数组。vis数组用于标记已经出现过的数字,a数组用于存储数独的初始状态…...
NOI / 1.10编程基础之简单排序 提问05:分数线划定 c语言 结构体
描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试…...
再探Docker:从Docker基础到跨服务器部署
摘要: 这篇文章将从介绍Docker基础开始,逐步讲解如何创建镜像、使用Docker Compose编排容器、在Docker中更新部署环境,将更新后的环境打包为镜像并导出为tar包,最后在其他服务器上应用这个镜像。 1. Docker是什么 Docker是一种容…...
C# 使用PanGu分词
写在前面 这是官方介绍:盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件,拥有大量用户。作者基于之前分词组件的开发经验,结合最新的开发技术重新编写了盘古分词组件。 盘古分词组件需要配合其字典文件使用&am…...
Termius 一款优秀的跨平台 SSH 客户端工具
🔥🔥🔥 作为程序员或者运维管理人员,我们经常需要使用终端工具来进行服务器管理及各种操作,比如部署项目、调试代码、查看/优化服务、管理服务器等。 而实现远程服务器连接需要借助 SSH 协议来进行,SSH&am…...
生命科学领域 - 新药从研发到上市全流程
新药是指新研制的、临床尚未应用的药物,其化学本质应为新的化合物或称新化学实体、 新 分子实体、新活性实体。新药研发的根本目的是治疗疑难危重疾病,研制出来的药物即使是全新的化学结构,但是疗效或安全性却不及现有的药物便失去新药价值&a…...
血的教训------入侵redis之利用python来破解redis密码
血的教训------入侵redis之利用python来破解redis密码 利用强大的python来进行redis的密码破解,过程不亦乐乎,当然也可以用shell脚本 本篇文章只供学习交流,请勿他用,谢谢。 其他相关联的文章 [1]VMware安装部署kail镜像服务器【…...
yolov8-pose 推理流程
目录 一、关键点预测 二、图像预处理 二、推理 三、后处理与可视化 3.1、后处理 3.2、特征点可视化 四、完整pytorch代码 yolov8-pose tensorrt 一、关键点预测 注:本篇只是阐述推理流程,tensorrt实现后续跟进。 yolov8-pose的tensorrt部署代码…...
笔记十七、认识React的路由插件react-router-dom和基本使用
react-router 分类 web使用 react-router-dom native使用 react-router-native anywhere(使用麻烦) react-router 安装 yarn add react-router-dom main.jsx import React from "react"; import ReactDOM from "react-dom/client"…...
CleanMyMac X4.14.5Crack最新Mac电脑清理优化最佳应用
CleanMyMac X 4.14.5是用于清理和优化Mac的最佳应用程序和强大工具。它看起来很棒而且很容易理解。该软件可以清理、保护、优化、稳定和维护您的 Mac 系统。您可以立即删除不必要的、不寻常的、无用的垃圾文件、损坏的文件垃圾,并释放大量内存空间。此外,…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
