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

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

Nov 02, 2024 pm 08:44 PM

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1674
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

Golang和C:並發與原始速度 Golang和C:並發與原始速度 Apr 21, 2025 am 12:16 AM

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

開始GO:初學者指南 開始GO:初學者指南 Apr 26, 2025 am 12:21 AM

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang vs.C:性能和速度比較 Golang vs.C:性能和速度比較 Apr 21, 2025 am 12:13 AM

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

Golang vs. Python:主要差異和相似之處 Golang vs. Python:主要差異和相似之處 Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang和C:性能的權衡 Golang和C:性能的權衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

表演競賽:Golang vs.C 表演競賽:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能競賽中的表現各有優勢:1)Golang適合高並發和快速開發,2)C 提供更高性能和細粒度控制。選擇應基於項目需求和團隊技術棧。

Golang vs. Python:利弊 Golang vs. Python:利弊 Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

See all articles