GitLab的無損升級
自從用Docker來部署GitLab應用之後,除了17年春節前那一次操作不當,差點刪庫走路,平時使用起來倒也十分穩定。記得那次操作不當,源自於想給GitLab備份及升級,由於當時剛接觸Docker不久,也不知誰給的勇氣,經過一系列簡單的Google後,我在做了一系列自以為是的備份後,就開始動手進行GitLab的系統升級,只記得當時花了5個小時才從刪庫走路的邊緣才救了回來,吃了對Docker不熟悉的虧。
經過了上面的事件後,後面一直沒有投入時間來解決這個問題。最近由於看到10版本增加的Auto DevOps、新版的UI以及一堆的提升,心痒痒的。紙上得來終覺淺,絕知此事要躬行,於是乎在一個風和日麗的中午,動手開始了進行GitLab的無損升級,本次升級,從原版本8.14.3升級到10.6.3。
先上舊版成新版的對比成果照。
舊版
新版
基於Docker部署的GitLab無損升級,目前我想到的應該有兩種方案,一就是升級Docker鏡像,復用舊鏡像的掛載文件,還有另外一種方式就是進入Docker容器去直接升級GitLab,本著先簡單後複雜的原則,我先嘗試基於Docker鏡像升級,再嘗試進入Docker容器去直接升級GitLab。
動手之前,請先做好備份工作,切記!!!最好是克隆一個新的環境來操作。為了避免影響到大家使用,我先克隆了一台新的虛擬機,所有的改動都是基於這個新的虛機上進行操作。
1.基於Docker鏡像升級
網上的很多教程都說用Docker鏡像升級很簡單,只要基於下面幾條命令就可以。
(1) 執行命令拉取最新的鏡像。
docker pull gitlab/gitlab-ce
(2) 停止當前運行的GitLab容器。
docker stop 容器標識 (docker ps可以查看容器標識)
(3) 刪除該容器。
docker rm 窗口標識
(4) 創新GitLab新版本的容器。
docker run --publish 443:443 --publish 10080:80 --publish 10022:22 --name gitlab --volume /u1/gitlab/config:/etc/gitlab --volume /u1/gitlab/logs:/var/log/gitlab --volume /u1/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
實際上經過我的實操,發現實際的情況無法無損升級。新的版本正常安裝後,啟動時會報資料庫版本不一致,不允許啟動的情況。(當時沒有去執行,gitlab-rake db:migrate這個升級資料庫關係的命令,也許執行這個後可以正常啟動,這個等找機會再驗證一下。)這也可能是我操作不當導致這個方法不成功,希望有成功的同學可以指教一下。
2.進入Docker容器直接升級GitLab
關於這一個操作,網上基本沒有什麼可參考的經驗,只好憑經驗自己摸索。
(1)去官網下載最新版的GitLab
這裡官網由於GW的關係打開會很慢,推薦去清華的安裝源進行下載。
例如:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/
由於我的操作系統是ubuntu的,所以下載基於ubuntu的deb安裝文件,其他系統請根據實際情況選擇下載對應的deb安裝文件。
(2)上傳deb文件並且移動到docker容器映射出來的掛載地址
我將deb文件上傳到映射出來的GitLab的默認備份文件夾,在容器中的路徑為/var/opt/gitlab/backups。
(3)進入容器
docker exec -it 容器標識 /bin/bash (docker ps可以查看容器標識)
(4) 停止服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx
(5)執行安裝新版的GitLab
dpkg -i gitlab-ce_10.6.3-ce.0_amd64.deb
(安裝一般都不會出現異常,如果安裝失敗,在最後會有相關的錯誤提示,請根據錯誤進行處理,再嘗試重新執行一次安裝)
(6)更新資料庫關聯信息
gitlab-rake db:migrate
(此處執行時間較久,請耐心等待)
(7)重啟服務
gitlab-ctl restart
在安裝及服務啟動的過程中,可以方便通過Docker的logs命令來觀察GitLab的啟動及運行狀態,只需執行"docker logs 容器標識 -f"即可。經過上述的7步操作後,無損升級基本完成,等待服務正常重啟後即可正常對外提供服務。接下來可以找時間好好研究一下新版的特性及Auto DevOps了。
TAG:飆豬狂 |