本頁面說明使用 Google Cloud Deployment Manager 建立部署的最佳做法。本頁面適用於熟悉 Deployment Manager 的使用者,但本頁面的內容並不會指引您如何操作 Deployment Manager。
如果您是第一次使用 Deployment Manager,建議您參閱快速入門導覽課程。
管理資源
❑
在做為部署的一部分建立資源之後,如果您需要修改資源,請使用 Deployment Manager。
如果您在修改資源時不使用 Deployment Manager,而是使用 Google Cloud 主控台或
gcloud 等方式,嘗試修改原始部署中的資源時,可能會看到錯誤。如果您想移除部署中的資源,但不刪除資源,請按照下列步驟操作:
|
❑
如果您的部署作業中包含 Compute Engine 執行個體,並想將永久磁碟附加到執行個體,請將磁碟與執行個體分開定義,以便輕鬆管理。例如,在下列的部署作業中,磁碟
example-disk 是與執行個體 example-instance 分開定義。如要附加磁碟,設定內容必須參照磁碟:resources: # instance - name: example-instance type: compute.v1.instance properties: disks: - type: PERSISTENT source:$(ref.example-disk.selfLink) # disk - name: example-disk type: compute.v1.disk properties: zone: us-central1-a sizeGb: 10 type: ... |
❑
如想使用 Deployment Manager 建立及管理私人 Google Kubernetes Engine (GKE) 叢集,請在部署作業中設定以下 privateClusterConfig: enablePrivateNodes: true enablePrivateEndpoint: true # Configure the IP range for the hosted master network masterIpv4CidrBlock: IP_RANGE ipAllocationPolicy: useIpAliases: true createSubnetwork: true 有關使用 GKE 建立私人叢集的要求和其他注意事項,請參閱設定私人叢集。 |
在部署作業中加入憑證
❑
Deployment Manager 會從 YAML 設定的屬性中,遮蓋與憑證相關的部分欄位。系統會根據資源的鍵進行遮蓋。以下範例說明其中一種遮蓋方式:
# Config provided to Deployment Manager resources: - name: example-resource type: gcp-types/service-v1:sample-type-with-password properties: zone: us-central1-a username: test-user password: hunter2 # Config as surfaced by Deployment Manager resources: - name: example-resource type: gcp-types/service-v1:sample-type-with-password properties: zone: us-central1-a username: test-user password: (redacted) |
❑
如果您在部署的 Jinja 或 Python 範本中加入憑證,系統會從產生的展開設定和版面配置檔案中刪除憑證,但原始匯入檔案中仍會顯示憑證。因此,我們強烈建議您將所有要保密的憑證放在頂層 YAML 設定中。您可以使用範本屬性,從該處參照這些屬性。
|
❑
YAML 檔案或項目清單中鍵/值組合內的任何憑證都不會經過修訂,如下例所示。因此,我們強烈建議您不要在 YAML 檔案或項目清單中,以鍵/值組合的形式向 Deployment Manager 提供憑證。
# Not a valid instance configuration, used solely for demonstration resources: - name: example-resource type: gcp-types/compute-v1:instances properties: zone: us-central1-a disks: - autoDelete: true boot: true # Will not be redacted password: hunter2 |
建構範本
❑
如要加快定義範本的速度,建議您先從 Cloud Foundation Toolkit 專案中提供能用於實際工作環境的範本開始。
|
❑
如果您有複雜的基礎架構需求 (例如需要建立多個環境),請參閱教學課程和範例,瞭解如何大規模使用 Deployment Manager。
|
❑
使用 Python 建立範本。
您可以使用 Python 或 Jinja2 建立範本。Jinja 較容易上手,但是 Python 對於複雜的部署作業來說更具彈性,因為您可能需要將多個資源分散在多個環境中。
|
❑
|
❑
使用結構定義檔案。
結構定義可用於定義設定檔使用特定範本時必須符合的規則組合。透過結構定義,以及鼓勵使用者查看結構定義中定義的要求,使用者就能更便捷地瞭解各個範本可設定或要求的屬性。這樣有助於使用者套用設定,而不需要研究範本的詳細資料。就最低要求而言,您必須至少定義頂層範本的結構定義檔案。
|
❑
|
❑
使用您匯入主要設定檔的個別範本檔案,可為您提供更易於管理的設定方式。
|
❑
將設定拆分為邏輯單元。例如,為有狀態服務 (例如資料庫和值區) 建立個別的設定,並且為暫時性服務 (例如前端執行個體) 建立設定。
|
❑
使用參照。
參照應該用於在建立資源之前尚未定義的值,像是資源的
selfLink 、IP 位址或系統產生的 ID。如果沒有參照,Deployment Manager 就會以平行方式建立所有資源,因此無法保證相依資源是以正確順序建立。使用參照可強制排定建立資源的順序。
|
❑
預覽部署以評估更新會如何影響部署作業。
預覽設定時,Deployment Manager 不會將任何實際的資源實例化,而是展開完整的設定並建立「殼層」資源。這樣一來,您就能先查看部署作業的情形再發布。
|
❑
您應該先查看特定資源的 API 方法,瞭解執行更新可能帶來的影響。設定更新部署作業的更新政策,可協助您控制 Deployment Manager 套用每項更新的方式。
|
❑
為您的資源使用標籤。如果您定義的資源支援使用標籤,請使用這些標籤來標記您的資源。標籤可以將屬於不同部署作業的資源進行分類,也可以區分資源可能處於哪個階段,例如資源是否支援實際工作或測試環境。
|
管理部署作業的大小
Deployment Manager 可以處理大量資源,但須遵守配額限制。如要縮短建立、更新或刪除部署作業所需的時間,可以減少每個部署作業中的資源數量。
❑
如果一組資源不依附於該群組外的任何資源,您可以將該組資源移至個別部署作業。舉例來說,如果部署作業包含多個範本,您可能會將每個範本封裝為個別部署作業。
|
❑
從設定中移除不必要的資源。如果日後需要更多資源,可以隨時為部署作業新增資源。
|
❑
(選用) 將部署作業限制為最多 1, 000 個資源。
|
權限
根據預設,Deployment Manager 會使用 Google API 服務帳戶的憑證向其他 API 進行驗證。Google API 服務帳戶專門用於代表您執行內部 Google 處理程序。
如要向其他使用者授予 Deployment Manager 專案的存取權,則需要向使用者授予具有使用 Deployment Manager 的適當權限的 IAM 角色。系統提供了一些預先定義 IAM 角色,供您用來決定使用者呼叫 Deployment Manager 的權限程度。
❑
使用 IAM 角色來限制使用者獲派的 Deployment Manager 使用權限。
|
❑
如果您希望使用者可以存取 Deployment Manager 建立的資源,請授予使用者運用資源所需的角色,但不授予他們直接部署資源的權限。
|
❑
將擁有者角色授予主體,即允許他們修改 IAM 政策。因此,只有當主體具備管理 IAM 政策的正當目的時,才授予擁有者角色。這是因為您的政策包含了機密存取權控管資料,而且由最精簡的使用者團隊進行管理,能夠簡化您可能必須執行的任何稽核工作。
|
❑
Deployment Manager 會使用 Google API 服務帳戶來建立及管理資源。如果您使用 Deployment Manager 管理重要資源,例如 IAM 自訂角色,您必須指派其他 IAM 角色到 Google API 預設服務帳戶。舉例來說,如要使用 Deployment Manager 建立及管理自訂 IAM 角色,您必須將「角色管理員」角色新增至 Google API 服務帳戶。
如需 Google API 服務帳戶的總覽,請參閱 Google 代管的服務帳戶一文。 如需將角色指派到服務帳戶的操作步驟,則請參閱為服務帳戶授予角色一文。 |
自動化
請考慮以自動化方式建立專案及專案內資源。這可讓您以基礎架構即程式碼的方式佈建專案。這項做法具有許多優點,例如能夠:
- 在向需要 Google Cloud 資源存取權的團隊提供專案時,允許強制執行公司要求。
- 提供一系列的預先定義專案環境,可以快速輕鬆地完成佈建。
- 使用版本控制來管理基本專案設定。
- 安心部署一致並可重現的專案設定。
- 將專案建立整合納入自動化佈建程序。
❑
以 GitHub 提供的範本做為起點,自動建立專案。
|
持續整合 (CI) 和持續部署 (CD)
請將 Deployment Manager 做為 CI/CD 管道的一部分。
❑
請勿使用 CI/CD 管道來建立及刪除整個測試和 QA 專案。
|
❑
使用 Deployment Manager 建立專案中的有狀態部分和網路設定,並將其部署至 CI/CD 程序外部,做為初始設定的一部分。測試完成後,您可以刪除只包含做為管道一部分部署的無狀態資源的部署作業。
|
❑
做為持續整合/持續推送軟體更新程序的一部分,使用單獨的設定將資源部署到測試和品質確保專案。測試完成後,您可以使用 Deployment Manager 刪除測試和 QA 專案中的資源。
|
測試部署作業。Deployment Manager 可將資源佈建作業納入 CI/CD 管道,讓您將專案設定視為程式碼,輕鬆測試並複製出與目前實際工作環境或其他環境一致的副本,有把握地測試變更。 |
❑
使用版本控制。您可以在部署作業的開發過程中,使用版本控制系統完成下列工作:
|