
我想銷毀DEV
AWS EKS 上託管的 Kubernetes 環境。資源有兩個部分;基礎設施部分和應用程式部分。我使用Terraform
/Terragrunt
來部署/銷毀基礎設施並helm
部署/銷毀應用程式。有多個 Pod 正在運行,我可以透過運行來銷毀版本helm uninstall <release-name>
。然而,當談到破壞基礎設施時,我遇到了錯誤。這是我所做的:
為了破壞基礎設施,我跑了:ENV=DEV make destroy
。對於此命令,它會傳回以下內容:
cd infra/DEV && terragrunt destroy
Remote state S3 bucket aib-iac-tf-state does not exist or you don't have permissions to access it. Would you like Terragrunt to create it? (y/n)
對此,我嘗試了兩者y
,n
但它返回此錯誤:
make: *** [Makefile:30: destroy] Error 1
假設我的存取權限被 root 使用者更改以在內部建立/刪除資源S3 Bucket
,我發現事實並非如此。該文件S3 Bucket
aib-iac-tf-state
確實存在於儲存中。
*Makefile*
然後我根據錯誤去檢查內部,第 30 行。這是第 29 行和第 30 行的內容:
destroy:
cd ${INFRA_DIR}/${ENV} && terragrunt destroy ${TF_VARS}
我仍然無法破壞資源。任何幫助,將不勝感激。
答案1
Terraform 的錯誤告訴您它的遠端狀態儲存桶不存在,因此它無法讀取遠端狀態以了解要銷毀的內容。這聽起來像是您透過 Make 使用的包裝器中的錯誤配置。
如果可以的話,檢查.tf
文件中是否存在如下所示的區塊:
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
並確保存儲桶具有正確的名稱。您可能需要與您的 AWS 帳戶進行比較,以找到儲存正確資料的儲存桶。
如果您找不到類似的內容 - 在本機工作區中檢查文件.tfstate
,然後刪除該backend
區塊,以便它使用本機狀態文件而不是遠端後端。青年MMV- 您可能想找一位具有 Terraform 技能的同事並讓他們來看看!
TL;DR - 對我來說聽起來有點像包裝器中的錯誤,或者某些內容被亂序刪除。