此解決方案會深入說明如何管理 Compute Engine 映像檔。針對在 Compute Engine 中執行的應用程式,映像檔提供基本的作業環境,而且在確保快速及可靠地部署及調整應用程式上十分重要。您也可以使用映像檔來封存應用程式版本,以進行災難復原及還原。
瞭解映像檔
Compute Engine 中的映像檔是雲端資源,為不可變磁碟提供參照。該磁碟表示法之後會使用幾種資料格式封存。
映像檔是一堆原始位元組,用來建立預先填入內容的硬碟。將分區表寫入任何格式化磁碟,指向一或多個包含資料的分區。要成為開機映像檔,映像檔必須包含下列項目:
如要將磁碟做為 Compute Engine 映像檔匯入,則必須將磁碟位元組寫入名為 disk.raw
的檔案。
將磁碟的完整位元組序列寫入檔案後,檔案即會以 tar 格式進行封存,接著再使用 GZIP 格式壓縮。您隨後可將產生的 *.tar.gz
檔案上傳至 Cloud Storage,並在 Compute Engine 中將其註冊為映像檔,如上圖所示。註冊映像檔後,您就能使用該映像檔在 Google Cloud的任何區域建立原始磁碟的備用資源。新註冊的映像檔通常會用來做為 Compute Engine 執行個體的開機磁碟區。
如需這些 Compute Engine 詞彙的更基本的介紹,請參閱說明文件中的虛擬機器執行個體和映像檔。
選擇開機映像檔
使用 Compute Engine 的第一步是選擇要做為虛擬機器 (VM) 執行個體作業系統的映像檔。您可以使用 Google Cloud 提供的公開映像檔,這些映像檔會定期更新。 Google Cloud 提供多種作業系統,包括 Debian、Ubuntu 和 CentOS,您無需額外付費即可使用。某些作業系統,例如 Red Hat Enterprise Linux 和 Microsoft Windows,為付費映像檔,因此執行個體執行的每小時都必須支付額外費用。
如要進一步瞭解特定的映像檔,例如自動更新政策、安全性修補以及支援管道等,請參閱產品說明文件的「作業系統詳細資料」一節。
為進一步提升安全性,您也可以使用可信映像檔功能定義機構政策,限制特定公開映像專案中的映像檔,以免在建立啟動映像時使用。
您可以使用 Google Cloud 公開映像檔啟動 Compute Engine 執行個體,然後自訂執行個體以執行您的應用程式。
設定執行個體的其中一種方法是使用開機指令碼執行指令,在啟動執行個體時部署您的應用程式。請注意,每次執行個體啟動時都會執行此指令碼,因此您必須讓這個指令碼變成冪等,避免最後處於不一致或部分設定的狀態。如果您的執行個體是代管執行個體群組的一部分,則可使用 Instance Group Updater 重新啟動或重新建構執行個體,進而重新執行開機指令碼。常見做法是使用開機指令碼來執行設定管理工具,例如 Chef 或 Ansible。
建立自訂映像檔
雖然您可以透過設定執行個體的開機指令碼來佈建基礎架構,但更有效率的做法是建立新的自訂映像檔,並將您的設定納入公開映像檔。您可以透過下列幾種方式自訂圖片:
- 手動
- 自動
- 匯入
建立自訂映像檔的程序稱為「製作」。
製作自己的映像檔有下列優點:
- 縮短從開機到應用程式就緒的時間。
- 提供應用程式部署的可靠性。
- 更容易復原為先前版本。
- 在應用程式啟動程序期間,外部服務上需要的依附元件較少。
- 因為擴充而建立的執行個體也會包含相同的軟體版本。
手動製作
您可以建立簡易的自訂映像檔,方法是從公開映像檔建立新的 VM 執行個體,以您所需的應用程式和設定來設定執行個體,然後從該執行個體建立自訂映像檔。如果您可以從頭開始手動設定映像檔,而不使用自動製作或匯入現有的映像檔,請使用此方法。
您可以透過下列步驟建立簡易的自訂映像檔:
- 從公開映像檔建立執行個體。
- 連線至執行個體。
- 自訂符合需求的執行個體。
- 停止執行個體。
- 從該執行個體的開機磁碟建立自訂映像檔。此程序會要求您刪除執行個體,但是保留開機磁碟。
自動製作
手動製作對只有少量圖片的使用者來說可能是很容易上手,但用在大量圖片則會變得難以稽核和管理。Packer 是一項開放原始碼工具,能讓建立映像檔變得更好重現、更好稽核、更好設定且更可靠。您也可以使用 Packer 做為 Spinnaker 管道的一部分,以產生要部署至執行個體叢集的映像檔。
匯入現有映像檔
您可以使用虛擬磁碟匯入工具,從現有基礎架構將開機磁碟映像檔匯入至 Compute Engine,這項工具可自動執行映像檔匯入程序。如果您使用 Linux 機器,請參閱深入瞭解如何手動遷移 RAW 磁碟映像檔、Amazon Machine Image (AMI) 和 VirtualBox 映像檔。
另一個匯入現有映像檔的選項是使用 Migrate to Virtual Machines。
Migrate to Virtual Machines 是一個工具鍊和服務,可協助您在最短的停機時間內,透過區塊層級的持續複製,在不同平台間遷移機器。您可以將機器遷移至 Compute Engine,然後使用手動製作來建立映像檔。
加密映像檔
根據預設,系統會使用 Google 的加密金鑰為 Compute Engine 中的所有磁碟加密,也會加密從這些磁碟建構的映像檔。或者,您也可以在建立磁碟時提供自己的加密金鑰。建立磁碟後,您就能向映像檔建立指令提供您的加密金鑰,以建立加密映像檔。如要進一步瞭解靜態資料加密和客戶提供的加密金鑰,請參閱 Google Cloud 說明文件中的「靜態資料加密」。
映像檔生命週期
設定映像檔建構管道後,您就能使用映像檔,可靠地啟動應用程式的執行個體。雖然管道會處理建立映像檔的事宜,您也必須確認您的部署機制採用最新版本的映像檔。最後,您還需要一個管理圖片的程序,以防不小心使用到舊的和過時的圖片。
映像檔系列
映像檔系列可透過將相關映像檔分組到一起,來協助您管理專案中的映像檔,讓您能夠在特定映像檔版本之間向前輪動與復原。詳情請參閱「映像檔系列最佳做法」。
淘汰映像檔
做為管理員,您也可以使用下列指令,透過淘汰映像檔來復原映像檔系列指向的映像檔:
gcloud compute images deprecate my-application-v3-20161011 --state DEPRECATED
下方為您可選擇的各種淘汰狀態:
狀態 | 說明 |
---|---|
已淘汰 | 不再是最新,但仍可由使用者啟動的映像檔。使用者會在啟動時看到警告,表示他們使用的不是最新的映像檔。 |
過時 | 使用者或自動化工具不應啟動的映像檔。嘗試從這些映像檔建立執行個體將會失敗。您可以使用此映像檔狀態來封存映像檔,這樣當您將該映像檔掛接為非開機磁碟時仍可使用其資料。 |
已刪除 | 已遭刪除或標示為即將刪除的映像檔。您無法啟動這些映像檔,且應儘快刪除這些映像檔。 |
強制執行生命週期政策
您可以使用 gcloud compute images deprecate
指令,將映像檔標示為即將刪除或過時。您可以提供 --delete-in
或 --delete-on
標記,將中繼資料附加至圖片,以便標示為即將刪除。如要附加中繼資料,將圖片標示為即將過時,請提供 --obsolete-in
或 --obsolete-on
標記。您可以將此指令納入映像檔建構程序,以強制執行映像檔生命週期政策,防止他人使用專案中過時和過期的映像檔。舉例來說,您可以在映像檔建構管道的結尾納入額外的程序,對需要淘汰或刪除的映像檔進行檢查,然後明確地執行這些動作。
依預設您不會在 API 和 UI 看到顯示淘汰和已刪除的圖片,但您仍可透過 --show-deprecated
標記查看這些圖片。您必須針對圖片傳送明確的刪除指令,才能完全刪除該圖片及其資料。
在專案之間共用映像檔
機構通常會建立多個 Google Cloud 專案來分割其資源、環境和使用者存取權。將資源隔離到專案可讓您更精密地控制帳單、實施安全措施以及使用獨立網路。雖然大多數雲端資源都不需要橫跨多個專案,但映像檔很適合跨專案共用。若使用一組共用的映像檔,您就能使用一個共通的程序,針對安全性、授權、套件管理和為組織的其餘部門預先設定的操作,以最佳做法來交付映像檔。
您可以將身分與存取權管理角色指派給機構的專案,以共用映像檔。如果專案包含要與其他專案共用的圖片 (在上述圖表中稱為「圖片建立專案」),則必須套用下列身分與存取權管理角色和政策:
- 將
compute.imageUser
角色授予「映像檔使用者群組」的使用者,讓這些使用者從這些映像檔建立執行個體。 - 將
compute.instanceAdmin
角色授予「映像檔建立使用者」,讓這些使用者在此專案中建立執行個體。 - 將
compute.storageAdmin
角色授予「映像檔建立使用者」,讓這些使用者在此專案中建立映像檔和磁碟。
如果您要讓專案使用共用映像檔,則必須將 compute.instanceAdmin
角色指派給具有 compute.imageUser
角色的使用者,讓這些使用者建立執行個體。
如需在專案之間共用映像檔的詳細指示,請參閱 Compute Engine 說明文件中的跨專案共用映像檔。
後續步驟
- 查看圖片匯入選項
- 使用啟動映像檔
- 使用自訂圖片