基礎架構即程式碼 (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。