首頁  >  文章  >  後端開發  >  使用 Terraform 輕鬆部署您的 GCP Cloud Run 應用

使用 Terraform 輕鬆部署您的 GCP Cloud Run 應用

Patricia Arquette
Patricia Arquette原創
2024-11-02 20:44:03899瀏覽

Effortlessly Deploy Your GCP Cloud Run App Using Terraform

Terraform 越來越受歡迎是有原因的,因為它提供了高水準的控制靈活性,如 IaC(基礎設施即程式碼)

支援模組,追蹤基礎架構的狀態,如果您的專案是複雜的、多雲或混合環境,那麼它會很有幫助。

先決條件

首先,如果您尚未安裝 Terraform,請務必遵循本指南進行操作,並確保已設定 GCP 帳戶。

您應該已經透過其他方式(例如 CLI)預先部署了應用程序,以了解部署過程、基線配置、增量過渡等。

我在下面新增了手動部署的相關部落格??

https://blog.stackademic.com/how-to-deploy-a-go-service-to-gcp-cloud-run-694d01cab5b5

專案結構

對於我的專案結構,我有這些文件和目錄結構。

  • main.tf:包含所需的提供者和 Google 提供者配置。
  • Variables.tf:描述如何為您的專案定義變數。
  • terraform.tfvars:解釋如何設定特定於您的環境的變數值。
  • set-prod.env.sh:使用 TF_VAR 前綴標誌設定 terraform 的環境變數。
  • 模組:詳細介紹 docker 和 cloud-run 模組,解釋它們的角色以及它們如何互動。

IaC 腳本

我將展示從父模組到子模組的腳本,以獲得更多更高階的指南。
最有可能你會有環境變量,對我來說最方便的方法是創建帶有 TF_VAR_ 前綴的 shell 腳本,Terraform 將識別並使用初始化的變量(但稍後會提到)。

我也在模組層級設定的變量,但父級通常包含所有這些變量,但在模組層級我只是傳遞了正確的變數。

我建立的其他腳本檔案不包含可以輕鬆修改的私鑰或秘密金鑰值,並且對於您的 terraform.tfvars 的預設值很方便

我們來談談?在房間裡我們的 main.tf 腳本。

一開始,我定義了 PaaS 供應商,因為我使用 GCP 谷歌,您可以新增 AWS、Azure 或其他供應商。信用對於批准您向任何雲端提供者的請求至關重要,您將 gcp_account_key 作為我在父親 terraform 目錄中的 json 檔案傳遞。

Effortlessly Deploy Your GCP Cloud Run App Using Terraform

在上面的螢幕截圖中,您可以看到我已在 GCP 中建立了一個服務帳戶金鑰並傳遞了正確的 IAM 存取權。

為 account_key.json 指派正確的 IAM(身分和存取管理)存取權限至關重要,否則在嘗試執行 Terraform 時將會遇到不同的權限問題。角色檢視器、編輯器、storage.admin、cloudrun.admin、Docker 工件。

還有一個選擇,可以透過 IaC 分配角色和權限,但對我來說,至少在我更熟悉它之前,這比較麻煩。

上面說明如何做到這一點。

接下來的步驟是執行您的模組,我從 docker 開始,因為需要在 GCP 中建立 Docker Artifact,完成後我使用 Cloud Run 執行相同的操作。請記住,我使用“./modules/docker”存取目錄,並將所需的變數從父模組傳遞到子模組/docker/variables.tf。

docker-artifact.tf 非常短,因為我們只需要定義從container_registry_api 開始使用的資源,然後docker_build_push 加入本地設定入var.project_id 建置和部署grc docker 映像來結束它,並添加它依賴於container_registry_api 作為其需要。

最後在我們的 IaC 中,我們使用「./modules/gcp」部署它來運行最後一個模組

與 docker 模組相同,我們定義「google_cloud_run_service」所需的資源,我們選擇名稱、區域、project_id,然後選擇從 main 傳遞的映像。
如果您需要環境變量,也可以傳遞它們。 
新增 IAM 成員資源以授予部署到 Cloud Run 的權限。

部署您的應用程式

現在,當架構設定並完成後,我們將執行以下步驟。

1.初始化Terraform

  1. 執行 Shell 腳本或手動設定環境變量

讓 terraform 存取 .env 變數。

  1. 預覽 terraform 中的變更或直接部署它。

如果一切順利,你最終會得到這樣的結果。

Effortlessly Deploy Your GCP Cloud Run App Using Terraform

如果提交到 GitHub,請注意在 .gitignore 中添加一些文件,因為 terraform 會產生工件和備份等。

結論

雖然與手動設定相比,IaC 增加了一些複雜性,但它也增加了前面提到的更多可維護性和自動化程度,特別是多個雲端提供者之間的互動等。對我個人來說,它為我作為開發人員提供了更多權力! 
您可以在這裡找到回購協議。

以上是使用 Terraform 輕鬆部署您的 GCP Cloud Run 應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn