IaC

所属分类:Git
开发工具:HCL
文件大小:0KB
下载次数:0
上传日期:2023-12-26 04:21:57
上 传 者sh-1993
说明:  此專案是用 IaC (Terraform + Terragrunt) 來管理 GCP 相關資源以及服務,並透過 Gitlab CI CD 來進行自動化部署
(This project uses IaC (Terraform+Terragrunt) to manage GCP related resources and services, and uses Gitlab CI CD for automated deployment)

文件列表:
docs/
images/
modules/
projects/
scripts/
template/
generate_job.sh

# IaC 此專案是用 IaC (Terraform + Terragrunt) 來管理 GCP 相關資源以及服務,並透過 Gitlab CI/CD 來進行自動化部署。 ## 前情提要 1. 此專案的 IaC Module 有參考官方的 Module 改寫,有將一些自己不常用到的設定給拔掉,所以不是所有設定都在上面,如果有需要的話,可以自行參考官方的 Module 來改寫。 2. 要使用此專案,請先確定版本是否符合 Module 所規定的版本,如果版本不符合,請自行升級。 3. 如果需要使用轉換腳本,請先調整 scripts/common.sh,調整 `[專案名稱]`、`[專案ID]`、`[專案地區]`,才能正常使用。 4. 其餘沒有調整或寫出的內容,歡迎開 PR 來補充,謝謝。
# 使用版本 - Terraform : v1.5.7 - Terragrunt : 0.53.4 - Gitlab : 16.3
## 文件目錄 - [IaC 介紹](https://github.com/880831ian/IaC/blob/master/docs/iac-introduce.md) - [IaC 架構](https://github.com/880831ian/IaC/blob/master/docs/iac-introduce.md) - [IaC CICD 架構](https://github.com/880831ian/IaC/blob/master/docs/iac-cicd-framework.md) - [IaC 匯入、轉換腳本介紹](https://github.com/880831ian/IaC/blob/master/docs/iac-import-conversion-scripts.md) - [IaC 備注](https://github.com/880831ian/IaC/blob/master/docs/iac-remark.md)
為了方便閱讀,README 只會放 IaC 的使用教學,其餘的會收錄在 docs 資料夾中,請直接點上方目錄對應的連結。
## IaC 使用教學 從 [IaC CICD 架構](https://github.com/880831ian/IaC/blob/master/docs/iac-cicd-framework.md) 了解 IaC 的 CICD 架構後,接下來就可以開始使用 IaC 。
(以下都會用 `[專案名稱]`、`[資源]` 來代替實際的專案名稱、資源,請大家自行替換) 首先,假設我們要調整 `[專案名稱]` 專案的 gke 資源,那你需要完成以下的幾個步驟: 1. 先進入 projects 資料夾,再進到 `[專案名稱]` 專案資料夾,如下: ``` . ├── gke-XXX │ ├── import.sh (這個只有 GKE 才有,詳細可以參考 IaC 匯入、轉換腳本介紹) │ └── terragrunt.hcl └── terragrunt.hcl ``` (此範例是 GKE 資源,其他資源也是類似,只要進到對應資源的資料夾即可,例如:gke-XXX、gce-XXX、filestore-XXX)
2. 在 `[專案名稱]` 專案底下會先看到一個 terragrunt.hcl 檔案,該檔案會將 iac 管理的 tfstate.tf backend 的設定寫在這,詳細可以參考 [Terraform 如何多人共同開發 (將 tfstate 存在後端)](https://blog.pin-yi.me/terraform-tfstate/),以及一些共用變數,`project_id`、`network_project_id`,這種整個專案都可以使用的變數就可以放在這邊。
3. 接著我們打開要調整的 gke 資源,例如:gke-XXX,裡面會有一個 import.sh 的腳本,該腳本使用說明,請參考 [IaC 匯入、轉換腳本介紹](https://github.com/880831ian/IaC/blob/master/docs/iac-import-conversion-scripts.md),以及 terragrunt.hcl 的設定檔案: ``` .... (省略) .... inputs = { name = "platform-dev" zones = ["asia-east1-b"] release_channel = "REGULAR" master_ipv4_cidr_block = "172.16.0.48/28" .... (省略) .... node_pools = [ { name = "platform-pool" machine_type = "e2-standard-4" disk_type = "pd-standard" total_min_count = 2 total_max_count = 8 }, { name = "default-api-pool" machine_type = "e2-highmem-2" disk_type = "pd-standard" total_min_count = 0 total_max_count = 8 } ] .... (省略) .... } ``` (terragrunt.hcl 的設定檔案詳細說明,可以參考 template 資料夾中不同資源的範例來填寫)
4. 接著,假設我們現在想調整 platform-pool 的 autoscaling total_min_count,將 2 調整成 3,將 MR merge 到 main 分支,並觸發 CICD 流程 (只有異動 [資源類型]-[資源名稱] 資料夾底下的 terragrunt.hcl 會才觸發 ),詳細請參考 [IaC CICD 架構](https://github.com/880831ian/IaC/blob/master/docs/iac-cicd-framework.md)。 ![img](images/mWR6BZV.png)
5. 跑完後的 pipeline 會長得像以下,我們主要查看 plan 以及 apply job 即可,其餘詳細請參考 [IaC CICD 架構](https://github.com/880831ian/IaC/blob/master/docs/iac-cicd-framework.md) ![img](images/8xvktJM.png)
6. 我們先點擊 plan 的 job 按鈕,裡面會顯示這次異動的內容: ![img](images/63o90fB.png)
7. 請檢查一下,是否與你想要調整的設定相同,如果沒問題,就可以點 apply 的按鈕,進行異動,但如果有出現任何的紅字、或是 destroy,請雙手舉高,呼叫支援,千萬別執行 apply: ![img](images/qQ8AN1y.png) (感謝提供照片 @BingweiLai )
8. 當 apply 的 job 有順利完成後,可以到 GCP 頁面上查看是否有異動成功,就完成 IaC 的調整囉 。 ![img](images/M8RoqmH.png)
9. 最後,如果 plan 完成後,發現有錯誤,請重新推新的 commit,從跑第四點的流程。另外,如果已經 apply 後,再重新點舊的 apply job 按鈕會出現錯誤,意思是狀態已經改變,所以不用擔心不小心點到 apply。 ![img](images/TcyixSg.png)
10. 上版控跑 CICD 前,可以先把專案 Clone 到本地跑,由於在執行 plan 以及 apply 時,會鎖檔,如果出現以下圖片錯誤,就代表正在有人測試相同資源,可以稍等一下再試試看: ![img](images/yZXCPoY.png)

近期下载者

相关文件


收藏者