建立高安全性的 Google Kubernetes Engine (GKE) 叢集和工作負載,並針對正式環境進行最佳化。本指南說明下列範本,可用於部署正式環境網頁應用程式:
企業級正式版 GKE 叢集範本:建立正式版應用程式所需的基本基礎架構。這個範本會設定安全且私人的 GKE 叢集,並針對完整性、進階網路和災難復原進行最佳化。
企業級正式版 GKE 工作負載 (搶先版):部署 Helm 圖表,其中包含高可用性無狀態網頁應用程式的設定。工作負載的設定可提升安全性、可靠性和服務連續性。
舉例來說,您可以部署叢集和工作負載範本,滿足下列業務需求:
| 範例 | 業務需求 | 實作 |
|---|---|---|
| 全球交易平台 | 金融機構需要低延遲、全球分散式交易平台,且必須具備最高運作時間、嚴格的安全措施和可稽核的法規遵循能力,才能處理高頻交易。 | 使用具備進階網路的全球分散式多區域叢集,確保超低延遲和彈性。實施嚴格的網路政策、私有叢集設定和進階安全防護功能,確保資料受到保護並符合法規要求。 |
| 多租戶軟體即服務平台 | 軟體即服務 (SaaS) 供應商需要為數千名企業客戶代管高度可擴充、安全且成本最佳化的平台,因此必須嚴格隔離租戶、動態分配資源,並持續推送軟體更新,且不得中斷服務。 | 使用多租戶叢集,搭配強大的命名空間隔離、網路區隔和配額管理功能,確保租戶之間公平共享資源和安全。 |
| 為重要作業提供即時推論 | 某個機構需要在任務關鍵的詐欺偵測應用程式中,部署 AI/ML 模型以進行即時推論,因此需要極短的延遲時間、高處理量,以及快速適應新模型版本的能力,並提供完整的稽核功能。 | 設定叢集,並為 AI 推論作業建立專用節點集區。確保網路連線的延遲時間較短,並啟用推論端點的有效流量路徑。 |
架構
下圖顯示範本中的元件和連線:
以下說明這個範本中的元件設定:
GKE Standard 叢集: 工作負載執行的叢集。
下表說明這個範本中的叢集設定:
設定 目的 location: us-central1確保資料位於地理界線內,並符合相關規定。區域內的多可用區設定可提供高可用性。 network: projects/PROJECT_ID/global/networks/enterprise-vpc指定預先存在的虛擬私有雲,通常用於網路區隔和連線。 subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnet指定虛擬私有雲中叢集的子網路,通常會設計適當的 IP 位址分配和網路隔離。 master_authorized_networks_config: [{"cidr_block": "10.0.0.0/8", "display_name": "Internal Network"}]限制只有特定受信任的 IP CIDR 區塊,才能存取控制層端點。這可防止未經授權的人員存取叢集管理 API。 private_cluster_config.enable_private_endpoint: true確保只能透過虛擬私有雲或授權網路中的內部 IP 位址存取控制層。這樣可避免公開曝光,進而提升安全性。 private_cluster_config.enable_private_nodes: true確保所有工作站節點都只有私人 IP 位址,將節點與公開網際網路隔離,並縮小受攻擊面。 release_channel: STABLE經過充分測試的更新可預測,有助於維持正式環境的穩定性。 network_policy.enabled: true啟用 Kubernetes 網路政策,控管 Pod 對 Pod 的通訊,提升安全性並進行微區隔。 binary_authorization: true強制執行部署政策,確保只有受信任且已簽署的容器映像檔能在叢集上執行。 database_encryption: {"state": "ENCRYPTED_WITH_CMEK", "key_name": "projects/PROJECT_ID/locations/us-central1/keyRings/gke-keyring/cryptoKeys/gke-etcd-key"}客戶自行管理的加密金鑰 (CMEK) 會加密資料庫,確保資料安全無虞並符合法規遵循規定。 workload_identity_config: {"enabled": true}允許 Kubernetes 服務帳戶做為 Google Cloud 服務帳戶,透過 IAM 精細安全地存取資源。 logging_config和monitoring_config設為{"component_config": {"enable_components": ["SYSTEM_COMPONENTS", "WORKLOADS"]}}與 Cloud Logging 和 Cloud Monitoring 整合,確保實際工作環境工作負載的全面觀測、稽核和快訊功能。 maintenance_policy: {"daily_maintenance_window": {"start_time": "03:00"}, "recurring_window": {"start_time": "00:00", "end_time": "04:00", "recurrence": "FREQ=WEEKLY;BYDAY=SAT,SUN"}}維護期間可控管 GKE 執行自動升級的時間,盡量減少重要應用程式的中斷情形。 enable_shielded_nodes: trueShielded GKE 節點提供安全啟動和完整性監控等安全功能,可防範 Rootkit 和啟動層級的惡意軟體。 gateway_api_config: {"channel": "CHANNEL_STANDARD"}適用於企業應用程式的進階流量管理,可進行複雜的路由、負載平衡和 API 管理。 security_posture_config: {"mode": "ENTERPRISE", "vulnerability_mode": "VULNERABILITY_ENTERPRISE"}進階安全狀態管理,包括安全漏洞掃描和政策強制執行。 GKE 節點集區: 執行應用程式容器的工作站節點群組。
下表說明這個範本中的節點集區設定:
設定 目的 location: us-central1。指定要建立這個節點集區的地區。與叢集位置類似,這可確保節點集區資源位於單一地理區域。 autoscaling: {"max_node_count":3, "min_node_count":1}。為這個節點集區設定叢集自動調度器。確保節點集區一律維持至少一個節點,並將上限設為三個節點,以控管成本和資源耗用量。 node_config: {"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}}。這個集區中節點的群組設定。機器類型是 CPU 和記憶體的平衡,適合一般用途的工作負載。定義授予服務帳戶的存取權。為受防護的 VM 執行個體啟用安全啟動功能,協助防範啟動層級的惡意軟體。
Helm 資訊套件設定
下表列出 Helm 資訊圖表設定,這些設定已自訂完成,可用於在 GKE 上部署及擴充基本網頁應用程式。
| 設定 | 目的 |
|---|---|
replicaCount: 3 |
建立三個初始副本,為應用程式建立初始備援層級和基本高可用性。 |
image.repository: gcr.io/google-samples/hello-app |
使用基本網路伺服器 Docker 映像檔做為預留位置。 |
resources.requests: {"cpu": "100m", "memory": "128Mi"} |
指定每個 Pod 保留的 CPU 和記憶體下限,確保資源可用並有效率地排程。 |
resources.limits: {"cpu": "250m", "memory": "256Mi"} |
指定每個 Pod 保留的 CPU 和記憶體上限,避免單一 Pod 壟斷資源。 |
networkPolicy.enabled: true |
為應用程式啟用 Kubernetes 網路政策,讓您定義 Pod 彼此之間及與其他網路端點的通訊規則,強制執行網路區隔和隔離。 |
service: {"type": "ClusterIP", "port": 80} |
在標準 HTTP 連接埠上,設定服務以供叢集內部存取。 |
pdb: {"enabled": true, "minAvailable": 1} |
啟用 Pod 中斷預算,確保自願中斷期間至少有一個副本可用,維持高可用性。 |
建立網頁應用程式
使用企業級的正式版 GKE 叢集和工作負載範本,部署您的網頁應用程式。
部署網路基礎架構
設定並部署企業級正式版 GKE 叢集範本,建立網頁工作負載執行的基礎架構。
複製並部署企業級實際工作環境 GKE 叢集範本做為應用程式。
系統會在您選擇的部署專案中建立 GKE 叢集。
設定元件。如要瞭解詳情,請參考下列資源:
按一下「Deploy」(部署)。應用程式會在幾分鐘後部署完成。
在「應用程式詳細資料」面板中,按一下「輸出」分頁標籤。
找出應用程式的 cluster_id。部署 Helm 圖表時,您會使用這項資訊。
部署網頁工作負載
使用「企業級實際工作環境 GKE 工作負載」範本,將網頁工作負載部署至您建立的叢集。您將部署包含網頁工作負載設定的 Helm 圖表。
在「Google catalog」頁面中,按一下「Enterprise-grade production GKE workload」範本上的「Create new application」。
在「Name」(名稱) 欄位中,輸入應用程式的專屬名稱。
在「GKE Deployment Target」(GKE 部署目標) 區域中,執行下列操作:
從「專案清單」中,選取您從「企業級正式版 GKE 叢集」應用程式部署 GKE 叢集的專案。
從「Region」(區域) 清單中,選取部署 GKE 叢集的區域。
從「Clusters」(叢集) 清單中,選取已部署的 GKE 叢集。
在「命名空間」清單中,輸入工作負載的命名空間。如果沒有變更名稱,請輸入
default。按一下「建立應用程式」。
應用程式建立完成後,畫面會顯示設定檔。
在「Helm chart」(Helm 資訊套件) 面板中,執行下列操作:
幾分鐘後,系統會將 Helm 資訊圖表設定部署至 GKE 叢集。
後續步驟
- 依據 Google 範本建構內容,複製及自訂這個範本。
- 您可以設計應用程式範本,自行定義設定。
- 透過 Google Cloud Architecture Framework 找出一般架構最佳做法。