映像檔管理最佳做法

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

瞭解映像檔

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

瞭解映像檔

映像檔是一堆原始位元組,用來建立預先填入內容的硬碟裝置。將分區表寫入任何格式化磁碟,指向一或多個包含資料的分區。要成為開機映像檔,映像檔必須包含主開機記錄和可開機的分區。如要將磁碟做為 Compute Engine 映像檔匯入,則必須將磁碟位元組寫入名為 disk.raw 的檔案。

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

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

選擇開機映像檔

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

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

開機映像檔

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

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

建立自訂映像檔

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

  • 手動
  • 自動
  • 匯入

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

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

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

手動製作

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

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

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

自動製作

手動製作對只有少量映像檔的使用者來說可能是很容易上手,但用在大量映像檔則會變得難以稽核和管理。Packer 是一項開放原始碼工具,能讓建立映像檔變得更好重現、更好稽核、更好設定且更可靠。如要進一步瞭解如何建立一個自動建構映像檔的管道,請參閱使用 Jenkins、Packer 和 Kubernetes 解決方案自動建構映像檔。您也可以使用 Packer 做為 Spinnaker 管道的一部分,以產生要部署至執行個體叢集的映像檔。

匯入現有映像檔

您可以遷移映像檔,方法是將映像檔從現有的基礎架構匯出至 Compute Engine。如果您使用 Linux 機器,請參閱深入瞭解如何遷移 RAW 磁碟映像檔、Amazon Machine Image (AMI) 和 VirtualBox 映像檔

另一個匯入現有映像檔的選項是使用 CloudEndure 等付費遷移服務。CloudEndure 是一個工具鏈和線上服務,可協助您在最短的停機時間內,透過區塊層級的持續複製,在不同平台間遷移機器。您可透過 CloudEndure 將機器遷移至 Compute Engine,然後使用手動製作來建立映像檔。

加密映像檔

根據預設,系統會使用 Google 的加密金鑰為 Compute Engine 中的所有磁碟加密,也會加密從這些磁碟建構的映像檔。或者,您也可以在建立磁碟時提供自己的加密金鑰。建立磁碟後,您就能向映像檔建立指令提供您的加密金鑰,以建立加密映像檔。如需進一步瞭解靜態資料加密和客戶提供的加密金鑰,請參閱 Cloud Platform 說明文件中的靜態資料加密

映像檔生命週期

設定映像檔建構管道後,您就能使用映像檔,可靠地啟動應用程式的執行個體。雖然管道會處理建立映像檔的事宜,您也必須確認您的部署機制採用最新版本的映像檔。最後,您還需要一個管理映像檔的程序,以防不小心使用到舊的和過時的映像檔。

使用映像檔系列

Compute Engine 提供映像檔系列,可協助您確認您的自動化系統和使用者執行的是最新的映像檔。做為管理員的身分,您可以將屬於相同應用程式或用途的一組映像檔集結成一個映像檔系列。如此一來,映像檔的使用者僅需追蹤映像檔系列名稱,而不用記住確切的映像檔名稱。因為映像檔名稱不能重複,映像檔建構管道通常會使用一些資訊來建立映像檔名稱,例如應用程式名稱、日期和版本等,譬如說 my-application-v3-20161011。與其變更自動化工具,將特定名稱傳播至其他系統以將消費者導向到最新的映像檔,您只需參照映像檔系列名稱,就能傳回系列中最新的映像檔,例如 my-application

映像檔系列

如要將映像檔加入映像檔系列,或是建立映像檔系列,您必須在映像檔建立步驟中新增額外的 --image-family 標記。例如:

gcloud compute images create my-application-v3-20161011 --source-disk my-application-disk-1 --source-disk-zone us-central1-f --family my-application

執行此指令後,任何呼叫若要執行以my-application 映像檔為基礎的執行個體,都會指向新建立的映像檔 my-application-v3-20161011

淘汰映像檔

做為管理員,您也可以使用下列指令,透過淘汰映像檔來復原映像檔系列指向的映像檔

 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 標記查看這些映像檔。您必須針對映像檔傳送明確的刪除指令{/0,才能完全刪除該映像檔及其資料。

在專案之間共用映像檔

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

共用映像檔

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

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

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

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

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案