반응형
helm provider를 eks와 동시에 배포하니
EntityAlreadyExists: Provider with url https://oidc.eks.ap-northeast-2.amazonaws.com/id/... already exists.
라는 문제 발생
발생원인
- enable_irsa = true → module.eks는 OIDC 리소스를 생성하게 됨
- 동시에 Helm 리소스는 다음과 같이 module.eks의 출력을 참조함:
provider "helm" { kubernetes { host = module.eks.cluster_endpoint cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) token = data.aws_eks_cluster_auth.main.token } } - 이로 인해 Terraform은 helm_release 리소스도 module.eks에 의존한다고 판단
- 하지만 helm_release는 provider 초기화 단계에서 클러스터 정보를 먼저 요구함
- 그 결과, helm_release 실행이 EKS 클러스터 생성 중에 병렬로 실행되면서
- module.eks 내부에서 OIDC를 만들기도 전에 AWS가 자동으로 OIDC를 생성해버릴 수 있음
- 이후 Terraform이 다시 OIDC를 만들려고 하면 → EntityAlreadyExists
oidc를 수동으로 설정하는것보다 State를 분리해주는게 가장 좋아보여서 그렇게 하기로 결정
반응형
'DevOps > Terraform' 카테고리의 다른 글
| AWS 콘솔에서 만든 CloudFront 배포를 Terraform으로 가져와 관리하는 방법 (terraform import) (0) | 2025.08.07 |
|---|---|
| Terraform에서 Kubernetes Provider 사용법 완벽 정리 (0) | 2025.07.30 |
| AWS EKS terraform 구성시 Launch Template을 구성해야할까 말아야할까? (0) | 2025.07.26 |
| [aws eks terraform] Blocks of type "elastic_gpu_specifications" are not expected here. 에러 (0) | 2025.07.24 |
| local에서 terraform lock 걸기 (0) | 2025.06.15 |
댓글