1 回答

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