记一次极狐gitlab本地部署的迁移过程 #JIHULAB101

背景

公司最近有服务器的变更,准备把服务搬到新的服务器上,包括了gitlab,这里记录下过程,旧极狐gitlab为docker部署,新极狐gitlab为k8s部署

1、在新的服务器上部署同版本的极狐gitlab

一定要同版本,不然备份文件无法恢复,k8s的yaml如下

apiVersion: v1
kind: Namespace
metadata:
  name: common-service
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: gitlab
  namespace: common-service
spec:
  selector:
    matchLabels:
      app: gitlab
  serviceName: gitlab
  replicas: 1
  template:
    metadata:
      labels:
        app: gitlab
    spec:
      containers:
      - name: gitlab
        image: gitlab-jh.tencentcloudcr.com/omnibus/gitlab-jh:14.5.0
        resources:
          requests: 
            memory: "4Gi"
            cpu: "2000m"
          limits:
            memory: "8Gi"
            cpu: "4000m"
        ports:
        - containerPort: 80
          name: http
        - containerPort: 443
          name: https
        - containerPort: 22
          name: ssh
        volumeMounts:
        - name: gitlab-data
          mountPath: /var/opt/gitlab
        - name: gitlab-logs
          mountPath: /var/log/gitlab
        - name: gitlab-conf
          mountPath: /etc/gitlab
  volumeClaimTemplates:
  - metadata:
      name: gitlab-data
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: "repo-storage-class"
      resources:
        requests:
          storage: 40Gi
  - metadata:
      name: gitlab-conf
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: "repo-storage-class"
      resources:
        requests:
          storage: 2Gi
  - metadata:
      name: gitlab-logs
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: "repo-storage-class"
      resources:
        requests:
          storage: 8Gi
---
apiVersion: v1
kind: Service
metadata:
  name: gitlab
  namespace: common-service
spec:
  selector:
    app: gitlab
  type: NodePort
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 31080
  - name: https
    protocol: TCP
    port: 443
    targetPort: 443
    nodePort: 31081
  - name: ssh
    protocol: TCP
    port: 22
    targetPort: 22
    nodePort: 31082

2、备份旧的数据

进入容器内执行备份指令

docker exec -it gitlab /bin/bash
gitlab-rake gitlab:backup:create

备份文件路径为/var/opt/gitlab/backups,把它拷贝出来

docker cp gitlab:/var/opt/gitlab/backups/备份文件名  备份文件名
docker cp gitlab:/etc/gitlab/gitlab.rb gitlab.rb
docker cp gitlab:/etc/gitlab/gitlab-secret.json

3、新服务器导入数据

把备份文件拷贝到容器内

kubectl cp 备份文件名 -n common-service gitlab-0:/var/opt/gitlab/backups/
kubectl cp gitlab.rb -n common-service gitlab-0:/etc/gitlab/
kubectl cp gitlab-secret.json -n common-service gitlab-0:/etc/gitlab

4、数据恢复,修改配置

进入容器,用文件编号恢复。比如备份的文件名叫1623831881_2021_06_16_13.12.1_gitlab_backup.tar,他的文件编号就是1623831881_2021_06_16_13.12.1

kubectl exec -it -n common-service gitlab-0 -- /bin/bash
vim /etc/gitlab/gitlab.rb		#external_url改为新服务器的地址
gitlab-rake gitlab:backup:restore BACKUP=文件编号

中途需要输入两次yes,即可完成恢复

5、异常情况

开始迁移的时候没有拷贝gitlab-secret.json文件,导致webhook、runner等页面点进去就报500,如果出现同样的情况,检查gitlab-secret.json是否一致
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值