포도가게의 개발일지

[K8S] AWS EKS IRSA 동작 본문

Tech

[K8S] AWS EKS IRSA 동작

grape.store 2024. 4. 23. 00:39
반응형

AWS EKS IRSA 동작

  • 결국 k8s에는 role을 service account를 주어 pod이 k8s resource에 대한 접근권한을 얻는 방식이다.
  • 그럼 k8s의 pod들은 aws resource에 대한 접근권한을 어떻게 얻을까?
    • 첫번째 node에 iam role을 주어 pod이 자동으로 사용한다.
    • 두번째 iam user의 access key를 pod에서 직접 사용한다.
    • 세번째 AWS IRSA(IAM Role for Service Account)를 사용한다.
  • 우선 pod이 어떻게 aws resource에 접근할까?
    1. 전달 받은 jwt(id token)과 arn을 이용하여 STS를 통해 정책 및 trust relation(role의 사용가능여부)을 확인한다.
    2. jwt(id token)를 발급해준 IDP(eks oidc provider)를 통해 jwt 가 유효한지 확인한다.
    3. STS가 token(temp credential)을 이용하여 resource에 접근한다.


  • 그럼 jwt(id token)은 pod에 언제 주입되는걸까?
    1. pod이 생성되거나 수정될때 role arn을 service account의 annotation에 eks.amazonaws.com/role-arn에 붙이게 되면. pod identity webhook을 통해 eks api에 요청이 가게 된다.
    2. oidc ipd를 통해 jwt(id. token)을 만들어지며 volume에 mount되며 해당 file의 path는 AWS_WEB_IDENTITY_TOKEN_FILE에 환경변수로 AWS_ROLE_ARN과 함께 pod에 주입된다.
    3. 이 모든과정은 pod에 service account가 장착될때만 동작하는 flow이다.

'Tech' 카테고리의 다른 글

[k8s] Strategy for Gitops  (0) 2024.04.27
쿠버네티스(k8s)  (0) 2023.03.19
Track g4dn inference server OOM  (0) 2023.01.08
Monorepo vs Multirepo  (1) 2022.10.05
Object[5]  (0) 2022.04.20
Comments