映像檔管理最佳做法

此解決方案會深入說明如何管理 Compute Engine 映像檔。針對在 Compute Engine 中執行的應用程式,映像檔提供基本的作業環境,而且在確保快速及可靠地部署及調整應用程式上十分重要。您也可以使用映像檔來封存應用程式版本,以進行災難復原及還原。

瞭解映像檔

Compute Engine 中的映像檔是雲端資源,為不可變磁碟提供參照。該磁碟表示法之後會使用幾種資料格式封存。

瞭解圖片。

映像檔是一堆原始位元組,用來建立預先填入內容的硬碟。將分區表寫入任何格式化磁碟,指向一或多個包含資料的分區。要成為開機映像檔,映像檔必須包含下列項目:

如要將磁碟做為 Compute Engine 映像檔匯入,則必須將磁碟位元組寫入名為 disk.raw 的檔案。

將磁碟的完整位元組序列寫入檔案後,檔案即會以 tar 格式進行封存,接著再使用 GZIP 格式壓縮。您隨後可將產生的 *.tar.gz 檔案上傳至 Cloud Storage,並在 Compute Engine 中將其註冊為映像檔,如上圖所示。註冊映像檔後,您就能使用該映像檔在 Trusted Cloud by S3NS的任何區域建立原始磁碟的備用資源。新註冊的映像檔通常會用來做為 Compute Engine 執行個體的開機磁碟區。

如需這些 Compute Engine 詞彙的更基本的介紹,請參閱說明文件中的虛擬機器執行個體映像檔

選擇開機映像檔

使用 Compute Engine 的第一步是選擇要做為虛擬機器 (VM) 執行個體作業系統的映像檔。您可以使用 Trusted Cloud 提供的公開映像檔,這些映像檔會定期更新。 Trusted Cloud 提供多種作業系統,包括 Debian、Ubuntu 和 CentOS,您無需額外付費即可使用。某些作業系統,例如 Red Hat Enterprise Linux 和 Microsoft Windows,為付費映像檔,因此執行個體執行的每小時都必須支付額外費用。

如要進一步瞭解特定的映像檔,例如自動更新政策、安全性修補以及支援管道等,請參閱產品說明文件的「作業系統詳細資料」一節。

為進一步提升安全性,您也可以使用可信映像檔功能定義機構政策,限制特定公開映像專案中的映像檔,以免在建立啟動映像時使用。

開機映像檔。

您可以使用 Trusted Cloud 公開映像檔啟動 Compute Engine 執行個體,然後自訂執行個體以執行您的應用程式。

設定執行個體的其中一種方法是使用開機指令碼執行指令,在啟動執行個體時部署您的應用程式。請注意,每次執行個體啟動時都會執行此指令碼,因此您必須讓這個指令碼變成冪等,避免最後處於不一致或部分設定的狀態。如果您的執行個體是代管執行個體群組的一部分,則可使用 Instance Group Updater 重新啟動或重新建構執行個體,進而重新執行開機指令碼。常見做法是使用開機指令碼來執行設定管理工具,例如 Chef 或 Ansible。

建立自訂映像檔

雖然您可以透過設定執行個體的開機指令碼來佈建基礎架構,但更有效率的做法是建立新的自訂映像檔,並將您的設定納入公開映像檔。您可以透過下列幾種方式自訂圖片:

  • 手動
  • 自動
  • 匯入

建立自訂映像檔的程序稱為「製作」

製作自己的映像檔有下列優點:

  • 縮短從開機到應用程式就緒的時間。
  • 提供應用程式部署的可靠性。
  • 更容易復原為先前版本。
  • 在應用程式啟動程序期間,外部服務上需要的依附元件較少。
  • 因為擴充而建立的執行個體也會包含相同的軟體版本。

手動製作

您可以建立簡易的自訂映像檔,方法是從公開映像檔建立新的 VM 執行個體,以您所需的應用程式和設定來設定執行個體,然後從該執行個體建立自訂映像檔。如果您可以從頭開始手動設定映像檔,而不使用自動製作匯入現有的映像檔,請使用此方法。

您可以透過下列步驟建立簡易的自訂映像檔:

  1. 從公開映像檔建立執行個體
  2. 連線至執行個體
  3. 自訂符合需求的執行個體。
  4. 停止執行個體
  5. 從該執行個體的開機磁碟建立自訂映像檔。此程序會要求您刪除執行個體,但是保留開機磁碟。

自動製作

手動製作對只有少量圖片的使用者來說可能是很容易上手,但用在大量圖片則會變得難以稽核和管理。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 中的所有磁碟加密,也會加密從這些磁碟建構的映像檔。或者,您也可以在建立磁碟時提供自己的加密金鑰。建立磁碟後,您就能向映像檔建立指令提供您的加密金鑰,以建立加密映像檔。如要進一步瞭解靜態資料加密和客戶提供的加密金鑰,請參閱 Trusted 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 標記查看這些圖片。您必須針對圖片傳送明確的刪除指令,才能完全刪除該圖片及其資料。

在專案之間共用映像檔

機構通常會建立多個 Trusted Cloud 專案來分割其資源、環境和使用者存取權。將資源隔離到專案可讓您更精密地控制帳單、實施安全措施以及使用獨立網路。雖然大多數雲端資源都不需要橫跨多個專案,但映像檔很適合跨專案共用。若使用一組共用的映像檔,您就能使用一個共通的程序,針對安全性、授權、套件管理和為組織的其餘部門預先設定的操作,以最佳做法來交付映像檔。

共用圖片。

您可以將身分與存取權管理角色指派給機構的專案,以共用映像檔。如果專案包含要與其他專案共用的圖片 (在上述圖表中稱為「圖片建立專案」),則必須套用下列身分與存取權管理角色和政策:

  1. compute.imageUser 角色授予「映像檔使用者群組」的使用者,讓這些使用者從這些映像檔建立執行個體。
  2. compute.instanceAdmin 角色授予「映像檔建立使用者」,讓這些使用者在此專案中建立執行個體。
  3. compute.storageAdmin 角色授予「映像檔建立使用者」,讓這些使用者在此專案中建立映像檔和磁碟。

如果您要讓專案使用共用映像檔,則必須將 compute.instanceAdmin 角色指派給具有 compute.imageUser 角色的使用者,讓這些使用者建立執行個體。

如需在專案之間共用映像檔的詳細指示,請參閱 Compute Engine 說明文件中的跨專案共用映像檔

後續步驟