IaC Part 3— 雲端基礎設施平台
市面上有一大堆與現代雲端基礎設施相關的工具與解決方案。 選擇哪些技術以及如何將它們組合在一起的問題可能會讓我們很頭大。 本文提供了一種模型,用於思考平台的更high-level的問題、平台提供的功能以及為提供這些功能而可能組合的基礎設施資源。
這不是一個公版的模型或架構。 我們將找到自己的方式來描述系統的各個部分。 就我們使用的每種工具或技術在圖表中的正確位置達成一致並沒有比進行對話更重要。
該模型的目的是為討論本系列文章中的概念、實踐和方法建立一個背景脈絡。 特別值得關注的是,無論我們使用哪種技術堆棧、工具或平台,都要確保這些討論與我們相關。 因此,該模型定義了分組和術語,後面的文章將使用這些分組和術語來描述如何在 VMware 等虛擬化平台或 AWS 等 IaaS 上配置Server等。
基礎設施系統的組成部分
現代雲端基礎設施中有許多不同的部分和類型。 本文將這些類型分為三種層次:
Applications:
應用程式和服務為企業及其使用者提供功能。 該模型中的其他所有層次都是為了讓Application運作而存在的。
Application runtimes:
Application Runtimes為Application提供服務和功能。application runtime platform中的服務和構造的範例可能是OS、DB、application servers、container cluster、serverless。這一層可以稱為PaaS。
Infrastructure platform:
Infrastructure platform是其資源以及管理它們的工具和服務的集合。 雲端和虛擬化平台提供基礎設施資源,包括運算、存儲和網路。 這也IaaS。
Infrastructure platform
IaC需要一個動態基礎設施平台,這是用API的方式使用該平台On-dmand的配置和更改資源。這是雲端的基本定義。當在本系列文章中講道“infrastructure platform”時,我們講的就是動態的 IaaS 平台。
雲端基礎設施平台有不同類型,從成熟的公有雲到私有雲; 從要錢的到不要錢的。 在本文中,我們概述了這些差異,然後描述了它們提供的不同類型的基礎設施資源。 下表面列出了每種類型的雲基礎設施平台的供應商、產品和工具的範例。
- Public IaaS Cloud services — 相關的廠商或產品有:
AWS/Azure/GCP/OCI/OVH等 - Private IaaS cloud products — 相關的廠商或產品有:
Vmware vCloud/Openstack/Cloudstack - Bare-metal cloud tools — 相關的廠商或產品有:
Cobbler/FAI/Foreman
在基本層面,Infra platform提供運算、存儲和網路資源。 平台以各種方式提供這些資源。 例如,可以將運算資源可以是作為VM、container runtimes和serverless code execution。
基礎設施平台提供三種基本資源:運算、存儲和網路。 不同的雲端平台以不同的方式組合和打包這些資源。 本系列文章不會用及任何雲端平台的產品名稱來描述,而是用最基本的詞彙來描述雲端內各個組件。 雲端平台將基礎設施原始此會組合成複合資源,例如:
- DB as a Service
- Load balancing
- DNS
- IAM
- Secret Management
原始詞彙和組合資源之間的界線是任意的,正如組合基礎設施資源和application runtime之間的界線一樣。 即使像object storage(例如 AWS S3 bucket)這樣的基本存儲服務也涉及用於讀取和寫入資料的運算和網路資源。
運算資源
運算資源執行代碼。 從本質上來說,運算是實體伺福器 CPU 核心上的執行時間。 但平台以更有用的方式提供運算。 常見的運算資源資源包括:
- VM
- 實體機
- Server Clusters — 如AWS ASG或GCP MIGs
- Containers — 很多平台都提供Containers as a Service
- Application hosting clusters — 如GCP GKE/AWS EKS/ Azure AKS
- FaaS serverless code runtimes — 適合event base or scedule資料運作方式。如AWS Lambda/ Azure Function/ GCP cloud function。
儲存資源
系統一定會用到存儲,例如disk volumes、DB或文件的中央存儲庫。 即使應用程式沒有直接使用存儲資源,它使用的許多服務也將需要它,像是VM snapshot和container images。
真正的動態平台提供應用程式對儲存的啟用與管理。 此功能與典型的虛擬化系統不同,在典型虛擬化系統中,我們需要特別指定要分配並附加到每個compute insatnce的實體存儲。
典型的儲存資源範例有:
- Block storage(disk volumes)
- Object storage
- Networked filesystem
- Structured data storage — DataBase as a Service
- Secret management
網路資源
與其他類型的基礎設施資源一樣,動態平台根據代碼on-demand的配置和更改網路的能力創造了巨大的機會。 這些機會不僅僅是更快地改變網路;還包括更安全地使用網路。
部分安全性來自於在將網路配置更改應用於關鍵環境之前快速準確地測試網路更改的能力。 除此之外,SDN 還可以建立比手動更多細緻度的網路安全結構(如Zero Trust)。 對於能動態建立和刪除系統中其中一部分尤其如此。
基礎設施平台提供的典型網路構造和服務包括:
- Network address blocks — 如AWS與GCP 的VPC,Azure的virtual network
- Names — DSN服務
- Routes
- Gateways
- Laod balancing rules
- Proxies
- API gateway
- VPN(但,現在逐漸開始被SASE取代)
- Direct connection
- Network access rule(防火牆)
- Asynchronous messaging
- cache(CDN)
- Server Mesh