近期公司的底層機器掛了
連帶虛擬機異常
gitlab和存放docker image的Harbor都一起帶走了
好消息是k8s還存活著
但node大概也死了一半

由於Harbor無法訪問
所以當k8s的在做node之前移轉時
新的node無法抓取image
導致服務斷線

好在公司在泰國
有架設一個備用的Harbor站台
緊急幫我們開了權限
開始準備拯救系統

首先將程式碼放到VM
因為gitlab掛掉
本機電腦不能安裝Docker
所以第一步就是把程式碼
放到有裝docker的VM
重新build成image然後推上泰國的Harbor

把本地的程式碼壓成zip後
用FTP傳到VM
沒想到linux上面不能解壓縮.7z
只好再壓縮成.tar

但是解壓縮一直失敗
看了一下錯誤訊息
原來還是下Binary才能正常傳輸壓縮檔

再來就是建立image
好在Docker build的指令順利
沒有發生一些奇怪的問題
推送到泰國Harbor後
就回到k8s
增加拉取image 的secret
然後直接改deployment的image
但是看了一下k8s的狀態
還是停留在crash狀態

這時候才想到環境變數沒有變
因為原本都是透過gitlab去替代

把.env的變數替換掉
再重新推送一次
發現還是不行

再仔細看了一下錯誤

1
/usr/local/bin/docker-entrypoint.sh: /docker-entrypoint.d/env.sh: /bin/sh^M: bad interpreter: No such file or directory

貼到gpt問一下
才知道是編碼的問題
因為檔案是直接從windows拉過去linux
才會有^M這種亂碼

再次開啟vim把語法貼過去
重build一次推上harbor
看到container亮綠燈
顯示running的那一刻
好像又找回對程式的熱愛了

結論
gitlab真的太重要了