執行時配置
執行中的應用從哪裡來、它使用哪個資料庫,以及部署必須宣告的啟動決策。
執行時配置回答三個問題:
- 執行中的應用從哪裡來?
- 它使用哪個資料庫?
- 這個部署有權成為什麼 —— 聯網還是斷網,單組織還是多組織?
本頁講的是這些決策的形態。變數名稱及其確切契約見 環境變數;你要複製的值在隨版本釋出 的部署包中。
應用從哪裡來
恰好只有一個來源生效,由部署宣告是哪一個。
| 模式 | 何時使用 | 應用如何到達 |
|---|---|---|
| 配置編寫 | 出廠形態:一個應用、評估、物理隔離,以及大多數生產部署 | 執行時提供映象中編寫的後設資料,加上安裝進它的任何內容 |
| 產物固定 | 應用按自己的節奏釋出,獨立於執行時映象 | 一個變數按 URL 指定一個已釋出的產物。在這條路徑上不會載入映象自身的配置 |
| 組合 | 隔離牆後的多個組織,共享一個數據庫,執行一個已釋出的應用 | 同樣的產物引用,從部署自身的配置中讀取,以便企業外掛隨之載入。僅限物理隔離許可證,否則會在啟動時被拒絕 |
升級一個已釋出的應用,就是修改產物引用再重啟 —— 不需要重建映象。回滾是同樣 的操作,換成之前的 URL,而這隻有在之前的物件仍以相同位元組存在時才行得通。這 是你釋出方式的屬性,而不是執行時的屬性,所以這種模式附帶三條規則:
- 釋出不可變的、以版本命名的物件。 絕不覆蓋已釋出的產物,也絕不釋出到 一個會移動的名稱。可變的名稱意味著執行中的應用可以在沒有任何部署事件的 情況下改變,使回滾成為不可能,也毀掉了"14:05 時執行的是什麼"這個審計問題 的答案。
- 只給釋出流水線寫入許可權。 人可以寫入的產物儲存,就是一條沒有任何審查的 生產部署路徑。
- 在生產環境中固定摘要。 引用帶有一個可選的完整性固定值;有了它,不匹配 時會拒絕啟動,並點名期望的摘要和實際的摘要。沒有它,執行時會啟動主機 返回的任何東西,無法區分一個被重新發布的產物和一個被替換的產物。
file:// 引用在沒有產物主機的情況下走同一條路徑,這使它成為演練部署的正確
方式 —— 這樣生產命令與演練過的命令恰好只有一處不同。
產物路徑上的遷移
在這條路徑上"升級應用"是一次環境變更加一次重啟,在模式和後設資料第一次可能 不一致的那一刻,沒有人守在終端前。所以這條路徑 —— 也只有這一條 —— 會自動 應用安全的模式變更,並在遇到破壞性變更時拒絕啟動,點名每一項變更以及 解決它的命令。其他每次啟動都保持既有的生產策略,在該策略下模式永遠不會被 自動修改。
執行時不會去猜的啟動決策
有些配置會在載入配置時檢查,並被拒絕,而不是降級執行。拒絕時會列印一條 致命錯誤,點名相互矛盾的設定,然後退出。
- 許可證模式與雲端姿態是耦合的。 普通許可證會針對控制平面線上校驗; 物理隔離許可證在本地校驗,沒有任何網路流量。把普通許可證與"沒有控制平面" 搭配是不可能的,而不是降級,會在嘗試任何校驗之前就被拒絕。 物理隔離給出了完整的矩陣。
- 不設定雲端姿態並不等於"不連雲"。 不設定會解析為公共控制平面。一個 打算不與任何人通訊的部署必須顯式地說明這一點。
- 多組織姿態需要許可證,並且讓另外兩個決策成為必需:新註冊的使用者加入 什麼,以及掛載哪些 AI Agent。宣告任何一個可用的值都會被接受;不做決定則 不行。單組織部署不會看到這兩項檢查。
- 叢集驅動要求每個副本上都有同一個共享金鑰。 沒有叢集驅動時,每個副本會 自己生成一個;跨副本時這些金鑰會悄悄地互不相同,所以執行時會拒絕啟動。
連線到控制平面
控制平面負責提供市場目錄並校驗普通許可證。連線是一次繫結,而不是貼上 一個憑據:部署與控制平面繫結一次,執行時會持久儲存它被簽發的令牌,並在之後 的每次呼叫中出示它。沒有需要手工分發或輪換的部署 API 金鑰。
一個已繫結、連線雲端的部署仍然是單環境部署。連線到控制平面並不會把一個部署 變成多個。
資料庫
在生產環境中,把部署指向一個託管的資料庫,並從技術棧中移除捆綁的資料庫 服務。捆綁的資料庫是為了讓首次執行能夠工作;它不是生產姿態,容器本地儲存也 不是業務資料該待的地方。
驅動從連線 URL 的 scheme 推斷。只有當 scheme 無法攜帶這一資訊時才顯式覆蓋 它 —— 不支援的值會直接失敗,而不是回落到一個猜測。
出廠的技術棧把模式遷移作為一個一次性步驟執行,它會在任何應用副本啟動之前 完成,所以併發的副本永遠不會相互對抗地執行模式變更。任何其他編排器都必須 重現這個順序。宣告其他資料來源參見資料來源, 恢復一側參見備份。
認證金鑰
會話由一個基礎金鑰簽名,它在每個副本上都必須完全相同。輪換它會使所有現有 會話失效,還會讓已儲存的簽名金鑰成為孤兒 —— 所以輪換是一項需要計劃的操作, 而不是一次配置微調 —— 部署包的模板說明了輪換需要的那一個額外步驟。把金鑰放 在金鑰管理器中,絕不放進映象。