3 min read

saml2aws로 eks 접근시 트러블슈팅

saml2aws로 eks 접근시 트러블슈팅
Photo by Mehmet Ali Peker / Unsplash

saml2aws 및 EKS Kubeconfig 갱신 문제 해결

saml2aws를 사용하여 AWS에 인증하고 aws eks update-kubeconfig 명령으로 EKS 클러스터 설정을 업데이트하는 과정에서 발생한 두 가지 주요 오류와 해결 과정을 기록했음.

🎯 목표

SAML 인증(saml2aws)을 통해 AWS 임시 자격 증명을 얻고, 이를 사용해 특정 EKS 클러스터의 kubeconfig 파일을 갱신하는 것이었음.


Problem 1: saml2aws 로그인 시 세션 기간 오류

saml2aws를 설정하고 로그인을 시도하는 과정에서 첫 번째 오류가 발생함.

실행한 명령:

Bash

# saml2aws 설정 (세션 기간을 8시간(28800초)으로 설정함)
$ saml2aws configure --profile=default --session-duration=28800

# 로그인 시도함
$ saml2aws login --force

발생한 오류:

Validating SAML assertion...

...

Error retrieving STS credentials using SAML: ValidationException: The requested DurationSeconds: 28800 exceeds the MaxSessionDuration set for this role: 3600

원인 분석:

오류 메시지는 명확했음. 요청한 세션 기간(28800초, 즉 8시간)이 이 SAML 역할에 설정된 최대 세션 기간(3600초, 즉 1시간)을 초과했음.

해결 방법:

역할에 허용된 최대 세션 기간(3600)에 맞춰 --session-duration 옵션을 명시하여 다시 로그인함.

Bash

$ saml2aws login --force --session-duration=3600
Authenticating as [USER_EMAIL]@[EXAMPLE_DOMAIN]...
? Please choose the role: [AWS_ACCOUNT_ID]:[ROLE_NAME]
...
Logged in as: arn:aws:sts::[AWS_ACCOUNT_ID]:assumed-role/[ROLE_NAME]/[USER_EMAIL]@[EXAMPLE_DOMAIN]
...
Your new access key pair has been stored in the AWS configuration

Problem 2: aws eks update-kubeconfig 실행 시 클러스터 찾기 오류

saml2aws 로그인이 성공한 후, AWS CLI v2를 설치하고 EKS kubeconfig 갱신을 시도했으나 두 번째 오류가 발생함.

실행한 명령:

Bash

# AWS CLI v2 설치 (macOS)
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"$ sudo installer -pkg AWSCLIV2.pkg -target /
$ aws --version
aws-cli/2.13.X ... # 버전 확인

# Kubeconfig 갱신 시도함
$ aws eks update-kubeconfig --name my-eks-cluster

발생한 오류:

An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-eks-cluster.

원인 분석:

ResourceNotFoundException은 대상 리소스를 찾을 수 없을 때 발생함. aws eks 명령어는 기본적으로 AWS CLI 설정에 지정된 기본 리전(region) 또는 환경 변수를 참조함. 대상 EKS 클러스터가 기본 설정된 리전이 아닌 다른 리전에 존재할 경우, 이 오류가 발생할 수 있음.

해결 방법:

--region 플래그를 사용하여 클러스터가 실제로 위치한 리전을 명시적으로 지정함.

Bash

$ aws eks update-kubeconfig --name my-eks-cluster --region ap-northeast-2
Updated context arn:aws:eks:ap-northeast-2:[AWS_ACCOUNT_ID]:cluster/my-eks-cluster in [USER_HOME]/.kube/config

📝 요약 및 교훈

  1. saml2aws 세션 기간: saml2aws loginValidationException이 발생하면, 요청하는 세션 기간(--session-duration)이 **IAM 역할에 설정된 MaxSessionDuration**을 초과하지 않는지 확인해야 함.

  2. AWS CLI 리전: ResourceNotFoundException (EKS, EC2, S3 등)이 발생하면, 가장 먼저 명령어가 올바른 리전(region)을 대상으로 실행되고 있는지 확인해야 함. --region 플래그를 사용하거나 AWS_REGION 환경 변수를 설정하여 해결할 수 있음.