我想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
块,以便它使用本地状态文件而不是远程后端。年龄变化率- 您可能想要找一位具有 Terraform 技能的同事并让他们看看!
TL;DR - 对我来说这听起来有点像包装器中的错误,或者某些东西被无序删除了。