
DEV
AWS EKS에서 호스팅되는 Kubernetes의 환경을 파괴하고 싶었습니다 . 리소스에는 두 부분이 있습니다. 인프라 부분과 애플리케이션 부분. Terraform
/를 사용하여 Terragrunt
인프라를 배포/파괴하고 helm
애플리케이션을 배포/파괴합니다. 여러 개의 포드가 실행 중이고 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
내부 리소스를 생성/삭제하기 위해 루트 사용자가 내 액세스 권한을 변경했다고 가정하면 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
원격 백엔드가 아닌 로컬 상태 파일을 사용하도록 하세요.YMMV- Terraform 기술을 갖춘 동료를 찾아서 살펴보게 하고 싶을 수도 있습니다!
TL;DR - 제 생각엔 래퍼에 있는 버그처럼 들리거나 뭔가가 순서 없이 삭제된 것 같습니다.