[2] 250909~ 클라우드/[b] 12월 : Terraform + Ansible

[50] ECS Role VS EKS Role

페페 더 엔지니어 2026. 2. 17. 14:26

[0]

ECS IAM Role

-> Task Execution Role (로그, ECR Pull)

 

EKS IAM Rle

-> EKS Cluster Role + Node Role

혹은 Pod단위 IRSA로 분리

 

* EKS는 실행 주체가 더 많아서 Role도 쪼개짐

 

*

 

[1]

EKS Cluster Role

Control Plane이 Assume -> AWS 리소스 생성 및 관리

 

예시

- Node Group 생성 관리

- ELB / NLB 생성

- Security Group 관리

- ENI 관리

- CloudWatch 로그 전송

 

즉 클러스터 인프라 오케스트레이션

 

대표 정책

AmazonEKSClusterPolicy
ㄴ ec2:CreateSecurityGroup
ㄴ ec2:DescribeInstances
ㄴ elasticloadbalancing:CreateLoadBalancer
ㄴ iam:PassRole

 

 

Terraform 코드에서 출발하는 흐름

K8s Service type=LB
   ↓
Cloud Controller
   ↓
Cluster Role Assume
   ↓
AWS API 호출
   ↓
ELB 생성

 

-

 

[2]

Node Role

Worker Node (EC2) 가 사용하는 IAM Role

Kubelet + container runtime + CNI 가 사용

 

- Img pull

- ENI attach / IP 할당( for Pod nets)

- Cloudwatch (로그 / metrics)

 

대표 정책

AmazonEKSWorkerNodePolicy
AmazonEC2ContainerRegistryReadOnly
AmazonEKS_CNI_Policy

 

흐름

Pod 생성
   ↓
Node kubelet 실행
   ↓
Node Role 사용
   ├─ ECR pull
   ├─ ENI attach
   └─ Logs 전송

 

-

 

[3]

Pod 용 IRSA

 

예시 : IRSA 없이 AWS SDK 실패

*EKS에서 SDK : 특정 플랫폼 API를 코드로 호출하기 위한 라이브러리 모음

즉 코드에서

s3 = boto3.client("s3")
s3.list_buckets()

이게 SDK 호출

 

 

Pod App Code -> AWS SDK -> AWS API -> S3 / DDB / STS ...

즉 SDK는 AWS API 클라이언트

kubectl이 K8s API 클라이언트인 것처럼

 

-

 

SDK는 항상 자격증명 필요

AWS SDK는 내부적으로 자격증명 탐색 체인 사용

Env Variables

Shared Credentials (~/.aws)

EC2 Instance Role

IRSA WEBIdentity

이 중 하나라도 있어야 API 호출 가능

 

-

 

EC2에서 SDK가 되는 이유

EC2 안 앱

IMDS -> Instance Role -> STS Token

자동 인증, 그래서 별 키 없어도 S3 호출 가능

 

-

 

Pod에서 SDK가 실패하는 이유

## Pod 기본 상태 ##
Pod
 ├─ IAM Role 없음
 ├─ Access Key 없음
 └─ IMDS 접근 차단
 
## 그래서 SDK 실행 시 ##
Unable to locate credentials

 

-

 

IRSA가 해결하는 문제

Pod ServiceAccount
   ↓ OIDC Token
STS AssumeRoleWithWebIdentity
   ↓
Temporary Credentials
   ↓
AWS SDK 사용

즉 Pod 전용 IAM Role

이게 없으면 SDK는 실행되지만 API 호출이 거부됨

 

-

 

권한 경로 지도

Pod App
   ↓
AWS SDK
   ↓
IRSA Role (ServiceAccount)
   ↓
STS Token
   ↓
AWS API

 

-

 

기본 테스트 시 IRSA 필요 여부 : AWS API 사용 여부

 nginx inc 이미지 로드 후 기본 포트 응답시

주체 역할 AWS API 사용
Cluster Role LB 생성 / 헬스체크 o / x
Node Role 이미지 Pull o
Pod x x

 

그래서 실습때에는 Pod에 IRSA 필요 없었다

(sidecar proxy 역시)

 

-

 

(필요 있는 경우)

S3 업로드

DDB 쪼회

Secrets Manager 열기

SQS consume

STSAssumeRole

 

-

 

nginx img 내부

nginx binary

config

static html