雲端與容器基礎

以宣告式的 IaC(基礎設施即程式碼)工具,套用定義了網路與2台虛擬機器組成的檔案,建立了環境。緊接著在不做任何變更的情況下再次套用同一個檔案,此時發生的事,下列何者適當?

  1. A定義與實際狀態沒有差異,因此不做任何變更
  2. B再建立一組相同的組成,虛擬機器變成4台
  3. C因為環境已經存在,第2次套用會發生錯誤而中斷
查看答案與解析

正確答案:A. 定義與實際狀態沒有差異,因此不做任何變更

在宣告式 IaC 中,程式碼寫的不是步驟而是「應有的組成」,工具與實際狀態比較後,只建立、變更、刪除有差異的部分。因此同一個定義不論套用幾次,結果都相同(冪等性),第2次不會發生變更。若有人手動變更設定,使實際狀態偏離定義(組態漂移),下次套用時會回到定義的狀態。把定義以 Git 管理,也能像程式一樣確認變更歷程並進行審查。

  • A. 正確。只變更有差異的部分,因此同一個定義套用幾次都會是相同的狀態。
  • B. 這是執行2次寫有建立步驟的腳本時可能發生的情況。宣告式工具不會重新建立已存在的部分。
  • C. 宣告式工具會把已存在的資源與定義比較,沒有差異就什麼都不做。
練習這個領域 前往領域頁面

雲端與容器基礎的其他題目

  1. 依不可變基礎設施的想法,更新正式環境伺服器軟體的方法,下列何者適當?
  2. 準備2套與正式環境組成相同的環境,一套維持執行目前的版本,另一套放入新版本並確認後,一次切換負載平衡器的導向目標。若有問題,就把導向目標切回,立即回到原本的版本。這種發布方法是下列何者?
  3. 在每小時接收12,000件要求的服務中,以金絲雀部署發布新版本,只把5%的要求送到新版本。新版本有使所收要求的3%失敗的缺陷,1小時後發現並把所有要求切回原本的版本。這1小時內因缺陷而失敗的要求件數為下列何者?
  4. 以 CI/CD 管線建置的容器映像檔,在預備(staging)環境中測試並合格了。把這個映像檔發布到正式環境的方法,下列何者最適當?
  5. 如上所示,不把資料庫的連線目標寫進映像檔,而是在啟動容器時以環境變數傳入。這個設計的主要優點,下列何者最適當?