root layout

패스트캠퍼스

  1. 강의 질문
  2. 개발/데이터

[3-3-2] IRSA trust policy namespace와 Helm 설치 namespace 불일치 문의

2026.06.28 04:54 작성

안녕하세요.

FastCampus Kubernetes DevOps Part 3의 3-3-2 실습을 진행하던 중 IRSA와 ServiceAccount Namespace 관련해서 궁금한 점이 있어 문의드립니다.

진행 환경

  • Terraform으로 EKS 및 IRSA IAM Role 생성

  • Helm Chart로 aws-ebs-csi-driver, aws-load-balancer-controller 설치

  • 강의와 동일하게 아래 명령으로 설치했습니다.

helm install demo-helm .

별도의 -n 옵션은 사용하지 않았습니다.

Terraform 설정

terraform/modules/irsa/locals.tf

locals {
  service_account_name = {
    ebs_csi_controller         = "ebs-csi-controller-sa"
    load_balancer_controller   = "load-balancer-controller-sa"
  }

  service_account_namespace = "kube-system"
}

이 설정에 따라 생성된 IAM Role의 Trust Policy는 다음과 같이 kube-system Namespace의 ServiceAccount만 신뢰하도록 생성됩니다.

system:serviceaccount:kube-system:load-balancer-controller-sa

실제 설치 결과

반면 Helm Chart의 templates/serviceaccount.yaml에는 namespace가 명시되어 있지 않아 helm install demo-helm .으로 설치하면 모든 리소스가 default Namespace에 생성됩니다.

실제로 확인한 결과는 다음과 같습니다.

  • default/ebs-csi-controller-sa

  • default/load-balancer-controller-sa

  • default/ebs-csi-controller

  • default/aws-load-balancer-controller

발생한 문제

Controller Pod들이 모두 CrashLoopBackOff 상태가 되었고, IRSA의 sub 값이 일치하지 않아 IAM Role을 Assume하지 못하는 것이 원인으로 보입니다.

즉 실제 ServiceAccount는

system:serviceaccount:default:load-balancer-controller-sa

인데,

IAM Role은

system:serviceaccount:kube-system:load-balancer-controller-sa

만 허용하고 있는 상태입니다.

그런데 강의 화면에서는 Controller Pod들도 default Namespace에서 실행되고 있으면서 정상적으로 Running 상태인 것으로 보여 혼동이 되었습니다.

궁금한 점

  1. 이 경우 locals.tfservice_account_namespacedefault로 변경하는 것이 맞을까요?

  2. 아니면 Helm 설치 시 helm install -n kube-system으로 설치하는 것이 의도된 방식인가요?

  3. 만약 강의처럼 default Namespace에서 실행하는 것이 맞다면, IAM Role의 Trust Policy(sub) 역시 default Namespace를 기준으로 생성되어야 하는 것이 맞는지 궁금합니다.

  4. 혹시 제가 놓친 Helm Namespace 설정이나 Dependency Chart의 Namespace Override, 또는 IRSA 관련 설정이 있는지도 확인 부탁드립니다.

감사합니다.


답변 

연관 질문

커뮤니티 질문보기