1 回答

TA貢獻1818條經(jīng)驗 獲得超11個贊
好壞?主觀的-因此對SO來說是題外話。假設(shè)問題是如何使連續(xù)部署可靠:)
好吧,問題在于您正在使用應(yīng)用程序版本作為CI環(huán)境,這意味著您無法避免由于特定版本不良而造成的損壞。您只能希望通過重新部署版本(中斷結(jié)束時)來盡快恢復(fù)-這可以自動進行。
您不應(yīng)讓生產(chǎn)站點直接在CI production管道覆蓋的版本上運行,否則會因部署不當而冒著站點中斷的風(fēng)險。相反,你可以使用一個新的/唯一版本的CI的每個執(zhí)行production管線并且只有完成之后成功你最終使用流量如下所述切換網(wǎng)站流量到它的版本(也可以在CI管線內(nèi)使用,如果使用不同的應(yīng)用程序,而不是CI 版本的應(yīng)用程序版本)
從部署程序開始:
默認情況下,deploy命令每次使用時都會自動生成一個新的版本ID,并將所有流量路由到該新版本。
要覆蓋此行為,可以使用version標志指定版本ID:
gcloud app deploy --version myID
您也可以使用--no-promote標志指定不立即將所有流量發(fā)送到新版本:
gcloud app deploy --no-promote
因此,請確保不要部署一個版本,并且不要在同一步驟中將該版本設(shè)置為默認的流量目標(如果從客戶端驅(qū)動,則可能不是原子的)。特別是對于生產(chǎn)應(yīng)用程序。代替:
部署新版本(gcloud app deploy --no-promote --version ...)
啟動新版本(gcloud app versions ...)并檢查其是否有效
如果工作正常,則將實際流量切換到(gcloud app services set-traffic ...)
這樣,唯一關(guān)鍵的操作是流量切換,(有希望)這是成功的原子操作,或者它已完全退回到GAE端(如果不是,則是GAE錯誤)。如果此步驟失敗,則該應(yīng)用仍應(yīng)繼續(xù)使用舊版本。
當然,這假設(shè)網(wǎng)絡(luò)問題僅在您和GAE之間,如果它們也影響GAE的內(nèi)部運營,那么所有的賭注都沒有了(但是我相信應(yīng)該及時解決)。
添加回答
舉報