基礎架構即程式碼 (IaC) 是指使用程式碼,而非圖形使用者介面或指令列指令碼,佈建及管理軟體應用程式基礎架構的程序。
佈建應用程式基礎架構通常需要設定及管理虛擬機器、資料庫連線、儲存空間和其他基礎架構元素。手動管理這項基礎架構既耗時又容易出錯,大規模管理應用程式時更是如此。
您可以使用設定檔定義基礎架構,以安全且可重複的方式建構、變更及管理基礎架構。您可以定義資源設定,並進行版本控管、重複使用及共用。您可以使用 IaC 指定基礎架構的所需狀態。接著,您可以多次部署相同設定,建立可重現的開發、測試和實際工作環境。
透過 IaC,您可以像處理應用程式程式碼一樣,處理基礎架構佈建和設定。您可以將佈建設定邏輯儲存在來源控管中,並充分運用持續整合和持續部署 (CI/CD) 管道。
IaC 的優點
使用 IaC 設定及管理應用程式基礎架構,是許多常見用途的最佳做法。Google 採用 IaC 管理系統,並將其設為內部標準做法。
IaC 具有下列優點:
- 您可以根據需求定義基礎架構,並重複使用相同設定,持續建立多個環境。
- 您可以自動建立及管理雲端資源,包括部署和測試環境。
- 您可以像處理應用程式變更一樣處理基礎架構變更。舉例來說,您可以確保系統會審查設定變更,並自動驗證。透過使用 IaC 的變更控制程序管理實際工作環境,是最佳做法。
- 您可以保留所有設定變更的記錄。變更內容可以稽核及還原。
- 您可以為雲端基礎架構設定單一真值來源。
適用於 Google Cloud的 IaC 工具
Google Cloud 與許多 IaC 工具緊密整合。視用途而定,選擇下列其中一項工具:
- Terraform - 一般來說,如要使用程式碼設定及管理基礎架構,請使用 Terraform 供應商。 Google Cloud Google Cloud - HashiCorp Terraform 是一種 IaC 工具,可讓您在人類可讀的設定檔中定義雲端和地端資源,並管理這些設定檔的版本、重複使用及共用。然後,您可以使用一致的工作流程,在基礎架構的整個生命週期中佈建及管理所有基礎架構。詳情請參閱「 Google Cloud上的 Terraform 總覽」。 
- Infrastructure Manager - 如要自動部署 Terraform 設定,請使用 Infrastructure Manager (Infra Manager)。 - Infra Manager 會使用 Terraform,自動部署及管理基礎架構資源。Google Cloud Infra Manager 可讓您以程式輔助方式部署至Google Cloud,因此您可以使用這項服務,不必維護其他工具鍊,即可在 Google Cloud上使用 Terraform。詳情請參閱 Infra Manager 總覽。 
- Terraform Cloud 和 Terraform Enterprise - 如果您需要在整個機構中,使用 Terraform 進行完整的變更管理,請使用 Terraform Cloud 或 Terraform Enterprise。 - Terraform Cloud 是一種軟體即服務 (SaaS) 應用程式,可在穩定的遠端環境中執行 Terraform,並安全地儲存狀態和密鑰。Terraform Cloud 也與 Terraform CLI 整合,並連結至常見的版本管控系統 (VCS),例如 GitHub、GitLab 和 Bitbucket。將 Terraform Cloud 工作區連結至 VCS 存放區後,新的提交和變更就會自動觸發 Terraform 方案。Terraform Cloud 也提供 API,方便您整合至現有工作流程。 - Terraform Enterprise 可讓您設定 Terraform Cloud 的自代管發布版本。這項服務提供可自訂的資源限制,非常適合有嚴格安全和法規遵循要求的機構。 - 詳情請參閱 Hashicorp 說明文件中的 Terraform 版本頁面。 
- Terraform 適用的 Cloud Development Kit - 如要使用通用程式設計語言產生基礎架構,而非使用 Hashicorp 設定語言 (HCL),請使用適用於 Terraform 的 Cloud Development Kit (CDKTF)。 - CDKTF 可讓您使用程式設計語言設定 Terraform,以定義及佈建 Google Cloud 基礎架構,並使用現有的工具鍊進行測試和依附元件管理等程序。 
- Pulumi - Pulumi 是另一項工具,可用於透過程式設計語言佈建基礎架構。您可以使用 Pulumi 的 Google Cloud 供應商,透過 TypeScript、Python、Go、C#、Java 或 YAML 等程式設計語言撰寫基礎架構程式碼。 
- Config Controller 和 Config Connector - 如要透過 Kubernetes 管理 Google Cloud 資源,請使用 Config Controller 和 Config Connector。 - 您可以使用 Config Controller 和 Config Connector,透過 Kubernetes 工具設定Google Cloud 服務和資源。您可以使用 Config Sync 等 GitOps 工具和 Kubernetes API,並設定及使用平台工程基本項目,例如准入 Webhook 和運算子。 
- Crossplane - 您也可以使用 Crossplane,透過 Kubernetes 管理 Google Cloud 資源。 - Crossplane 可將 Kubernetes 叢集連線至外部非 Kubernetes 資源,並讓平台團隊建構自訂 Kubernetes API,以使用這些資源。Crossplane 會做為 Kubernetes 控制器,監控外部資源的狀態並強制執行狀態。在 Kubernetes 叢集中安裝 Crossplane 後,使用者只會與 Kubernetes 通訊。Crossplane 會管理與外部資源 (例如 Google Cloud) 的通訊。如果 Kubernetes 外部的項目修改或刪除資源,Crossplane 會還原變更或重新建立已刪除的資源。 - 詳情請參閱 Crossplane 說明文件。 
- Ansible - 如要自動執行佈建、設定管理、應用程式部署、協調流程和其他 IT 程序,請使用 Ansible。詳情請參閱 Ansible forGoogle Cloud。