【发布时间】:2021-10-01 13:41:01
【问题描述】:
所以我使用
Cloudposse eks terraform module中给出的示例创建了 EKS 集群
在此之上,我分别创建了 AWS S3 和 Dynamodb 用于存储状态文件和锁定文件,并在 terraform backend config 中添加了相同的内容。
这就是它的样子:
resource "aws_s3_bucket" "terraform_state" {
bucket = "${var.namespace}-${var.name}-terraform-state"
# Enable versioning so we can see the full revision history of our
# state files
versioning {
enabled = true
}
# Enable server-side encryption by default
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "aws:kms"
}
}
}
}
resource "aws_dynamodb_table" "terraform_locks" {
name = "${var.namespace}-${var.name}-running-locks"
billing_mode = "PAY_PER_REQUEST"
hash_key = "LockID"
attribute {
name = "LockID"
type = "S"
}
}
terraform {
backend "s3" {
bucket = "${var.namespace}-${var.name}-terraform-state"
key = "${var.stage}/terraform.tfstate"
region = var.region
# Replace this with your DynamoDB table name!
dynamodb_table = "${var.namespace}-${var.name}-running-locks"
encrypt = true
}
}
现在,当我尝试使用 terraform destroy 删除 EKS 集群时,出现此错误:
Error: error deleting S3 Bucket (abc-eks-terraform-state): BucketNotEmpty: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
这是由于 s3 错误导致集群部分销毁后terraform plan -destroy 的输出
Changes to Outputs:
- dynamodb_table_name = "abc-eks-running-locks" -> null
- eks_cluster_security_group_name = "abc-staging-eks-cluster" -> null
- eks_cluster_version = "1.19" -> null
- eks_node_group_role_name = "abc-staging-eks-workers" -> null
- private_subnet_cidrs = [
- "172.16.0.0/19",
- "172.16.32.0/19",
] -> null
- public_subnet_cidrs = [
- "172.16.96.0/19",
- "172.16.128.0/19",
] -> null
- s3_bucket_arn = "arn:aws:s3:::abc-eks-terraform-state" -> null
- vpc_cidr = "172.16.0.0/16" -> null
我无法手动删除 s3 中的 tfstate,因为这会使 terraform 重新创建所有内容,我还尝试从 tfstate 中删除 s3 资源,但它给了我锁定错误(还尝试强制删除锁定并使用 -lock=false)
所以我想知道有没有办法告诉 terraform 在删除所有内容后在最后删除 s3。或者有没有办法在本地使用 s3 中的 terraform?
当您的 TF 状态位于 s3 后端并且您使用相同的 terraform 创建了 s3 和 dynamodb 时,删除 EKS 集群的正确方法是什么。
【问题讨论】:
-
错误是关于 S3,而不是 EKS。所以 EKS 已经被销毁了?
-
错误是在销毁 EKS 集群时,集群没有完全销毁,它在 AWS S3 删除时停止。
-
@Marcin 我已经添加了销毁计划输出一些东西被删除了一些东西正在等待处理。
标签: kubernetes terraform terraform-provider-aws amazon-eks