本頁面將協助您為產品建構能在 Compute Engine 上執行的公開機器映像檔。
映像檔包含啟動載入程序、作業系統,以及啟動執行個體時需要的根檔案系統。您可以為產品設定一組應用程式和服務。客戶可利用該映像檔,在雲端中啟動虛擬機器 (VM) 執行個體。
建議您先在開發專案中建立映像檔,等 Google 合作夥伴工程師驗證該映像檔之後,再將其移到公開專案。
事前準備
- 下載 Google Cloud SDK。
建立基礎產品 VM
如要為 Cloud Marketplace 建立自訂機器映像檔,您必須完成以下步驟 (後續章節會提供說明):
使用 Google 支援的基本公開映像檔建立 VM,並安裝應用程式專用的套件和設定。
您可以選擇使用 Arm 處理器或 x86 處理器的映像檔。您也可以在單一 VM 產品中加入多個映像檔,指定不同的機器類型。如要進一步瞭解 CPU 平台和支援這些平台的機器類型,請參閱「CPU 平台」。
如果您打算為客戶提供支援,請安裝指令碼來擷取應用程式使用者憑證。
建立授權的 VM 映像檔
使用 gcloud 為 Google Cloud CLI 設定預設值:
gcloud config set project <project_id> gcloud config set compute/zone <zone>
建立用於安裝軟體的主要執行個體,之後再轉換成在 Cloud Marketplace 上使用的映像檔。如要進一步瞭解如何建立執行個體,請參閱「建立和啟動執行個體」一文。
gcloud compute instances create ${INSTANCE} --scopes https://www.googleapis.com/auth/cloud-platform
安裝及自訂軟體。請納入任何必要的開機指令碼,例如用於建立授權憑證的指令碼。
如要使用安全的隨機密碼建立授權憑證,請按照下一個章節的「建立授權憑證」一節所述步驟操作。
建立及自訂主要執行個體後,請準備建立 VM 映像檔時需要用到的磁碟。
清除磁碟。如果直接從您的 VM 建立 VM 映像檔,系統也會將您的使用者目錄和 SSH 金鑰轉移到客戶的 VM,因此您必須在建立 VM 映像檔時清除輸入磁碟。
清除磁碟的方式如下:
在 Compute Engine 的「VM Instances」選單中,按一下要清除的執行個體名稱,然後按一下「Edit」。
向下捲動並取消勾選「Delete boot disk when instance is deleted」(刪除執行個體時一併刪除開機磁碟) 核取方塊,然後按一下「Save」(儲存)。您會使用磁碟建立映像檔。
刪除 VM 但保留磁碟。系統會提示您確認刪除動作。請勿選取「一併刪除開機磁碟」。
接下來,您必須建立新的 VM 執行個體。展開「Management」(管理)、「disk」(磁碟)、「networking」(網路) 和「SSH keys」(安全殼層金鑰組) 選項。
在「disk」(磁碟) 底下,連結先前執行個體的磁碟做為額外的資料磁碟使用。確認「刪除執行個體時」的選項是指定為「保留磁碟」。
您現在可透過安全殼層進入執行個體,並移除在軟體安裝過程中建立的任何主目錄或其他暫存檔案。您必須先掛接資料磁碟才能存取。如需有關掛接磁碟的詳細資訊,請參閱「新增永久磁碟或調整其大小」一文。
完成後,請關閉並刪除執行個體,並且保留更新後的資料磁碟。接下來您只要完成以下步驟,即可建立 VM 映像檔。
請按照下列步驟,在 Producer Portal 中取得 VM 產品的授權名稱:
在 Google Cloud 控制台中開啟 Producer Portal:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
將 YOUR_PROJECT_ID 替換為開發或公開專案的 ID。建議您先在開發專案中建立映像檔,等 Google 合作夥伴工程師驗證該映像檔之後,再將其移到公開專案。
按一下產品名稱。
前往「部署套件」部分。在「VM license」下方,記下名稱。您會在下一個步驟建立映像檔時使用這個授權名稱。
執行下列
gcloud
指令,建立授權的映像檔:gcloud compute images create CREATE_IMAGE_NAME \ --project PUBLIC_PROJECT_NAME \ --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \ --licenses LICENSE_NAME \ --description ADD_DESCRIPTION
更改下列內容:
CREATE_IMAGE_NAME:映像檔名稱和支援的 CPU 架構,格式為
who-vmOS-image-architecture-date
,將architecture
替換為Arm
或x86_64
,取決於映像檔支援的 CPU 架構。每次更新產品圖片時,都必須使用新的不重複名稱。PUBLIC_PROJECT_NAME:Cloud Marketplace 公開專案的專案 ID。您必須具備此專案的 Compute Storage Admin 角色 (
roles/compute.storageAdmin
)。LICENSE_NAME:您在上一個步驟中記下的 VM 產品授權名稱。
DEV_PROJECT_NAME:您為 Cloud Marketplace 開發及測試而建立的專案 ID。您必須具備此專案的 Compute 映像檔使用者角色 (
roles/compute.imageUser
)。SOURCE_DISK_ZONE:來源磁碟的可用區。
SOURCE_DISK_NAME:來源磁碟的名稱。
ADD_DESCRIPTION:針對要建立的圖片提供文字說明 (選用)。
將映像檔設為公開
如果是未使用市集擁有的映像檔的非 Terraform 產品,您必須將映像檔設為可供公開使用,這樣客戶才能將映像檔部署到各自的 Compute Engine 執行個體。如要將映像檔設為公開,請使用Google Cloud 控制台或 Google Cloud CLI:
控制台
在公開專案中的 Compute Engine 底下,前往「Images」(映像檔) 頁面。
選取您的映像檔,如下所示:
如果右上角未顯示資訊面板,請按一下「Show Info Panel」。
在資訊面板的「Add Members」(新增成員) 欄位中輸入
allAuthenticatedUsers
,然後從「Select a role」(選取角色) 選單中選取「Compute Image User」(Compute 映像檔使用者)。按一下 [Add] (新增),將映像檔設為公開。
指令列
在 Cloud Shell 或本機電腦上使用下列 gcloud
指令:
gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser
建立授權憑證
如果您的產品是單一 VM 執行個體的簡單部署作業,且具備基本防火牆規則,您可以在直接設定部署套件時,自動加入安全的隨機密碼。
如果您打算使用開放原始碼 mpdev
工具建立部署套件 (我們建議在大多數情況下使用這項工具),則可以使用 mpdev
自動加入多個安全的隨機密碼。
如要瞭解如何建立授權憑證,請參閱「建立部署套件」一文。
產品部署完成後,如要取得您建立的所有密碼值,請在 VM 執行個體中使用下列指令:
curl -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME
測試 VM 映像檔
以新建的映像檔建立 VM 執行個體,並驗證功能。
此外,如要驗證授權 ID,請透過 SSH 進入執行個體並確認已連結有效授權。
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true
確認是否已安裝 Python 2.6 以上版本:
python -V
確認已安裝下列套件:
gcloud --version ssh -V ps aux | grep sshd curl -V ps aux | grep dhcp
請進行檢查,確認執行個體上只有您的使用者目錄,而沒有安裝其他使用者目錄;且除了您的使用者目錄和憑證外,不存在其餘任何使用者的目錄和憑證。