DevOps/AWS

ecs -> eks 전환 처리

계범 2025. 8. 20. 20:30

1. AWS SDK 버전업

EKS IRSA 방식의 AWS SDK V2 인증의 형태로 전환하려는 과정에서 

기존 aws 1.점대의 sdk가 문제가 됨.
aws 2.점대로 버전 업 처리가 필요.

 

pem키의 포맷 이슈 발생.

 

aws 1.xx의 cloudfront 에서 제공하던 SignerUtils가 사라졌고

import com.amazonaws.services.cloudfront.util.SignerUtils;

 

그로 인해 키를 읽는 방법의 바뀜으로서 PKCS#1 포맷의 키를 못읽음.

해당 명령어로 키 포맷을 변경 후 해결.

openssl pkcs8 -topk8 \
  -inform PEM \
  -in private_key.pem \
  -outform PEM \
  -nocrypt \
  -out private_key_pkcs8.pem

 

해당 키 양식이 자바가 기본적으로 읽는 포맷.

 

간단한 설명추가.

더보기

1. PKCS#1 (RSA 전용 키 포맷)

  • 헤더:
  •  
    -----BEGIN RSA PRIVATE KEY-----
  • RSA 알고리즘 전용으로 정의된 구조 (ASN.1 RSAPrivateKey).
  • 키 내부에는 n, e, d, p, q … (RSA 수학적 파라미터)만 들어있음.
  • 표준은 오래되었고, 범용성이 떨어짐.

2. PKCS#8 (범용 PrivateKey 포맷)

  • 헤더:
  •  
    -----BEGIN PRIVATE KEY-----
  • 어떤 알고리즘인지(RSA, EC, DSA …)와 그에 해당하는 키 데이터를 알고리즘 식별자 + PrivateKey 형태로 감싸둔 구조.
  • RSA/EC/DSA 등 다양한 키를 공통된 포맷으로 표현 가능.
  • 자바 JCA(KeyFactory 등)와 AWS SDK v2의 PemUtils 같은 도구들이 이 형식만 인식하도록 구현되어 있음.

3. 변환이 의미하는 것

  • 키 자체의 수학적 값(n, d, p, q …)은 그대로입니다. (안 바뀜)
  • 단지 저장/인코딩 방식(래핑 포맷) 만 바뀌는 거예요.
  • PKCS#1 → PKCS#8 변환은:
    • “RSA 전용 표현” → “범용 PrivateKey 표현”으로 포장하는 것.
    • 그래서 자바에서 PKCS8EncodedKeySpec 으로 읽을 수 있게 됨.

4. 왜 꼭 필요할까?

  • 자바 기본 KeyFactory 는 PKCS#8만 읽습니다. PKCS#1을 주면 InvalidKeySpecException 터짐.
  • AWS SDK v2도 내부적으로 PKCS#8로 파싱하기 때문에 PKCS#1 키를 넣으면 실패합니다.
  • 반대로 OpenSSL, 일부 구버전 유틸은 PKCS#1도 지원.

 

kms 2버전 코드 변경 필요

build기반으로 변경 필요

환경변수 주입 방법 변경 필요

ECS와 EKS에서 환경변수 처리 방식이 달라짐.

 

ECS

// ECS Task Definition
{
  "environment": [
    {
      "name": "APP_ATTACHFILE_DIR",
      "value": "my-bucket"
    }
  ]
}

 

  • ecs는 환경변수를 JVM 시스템 프로퍼티로도 자동 변환
  • 그로 인해 System.getProperty()를 통해 불러오는 것도 작동함
  • 컨테이너 런타임이 환경변수를 시스템 프로퍼티로 매핑

EKS

# Kubernetes Deployment
spec:
  containers:
  - env:
    - name: APP_ATTACHFILE_DIR
      value: "my-bucket"

 

  • kubernetes는 환경변수를 OS 환경변수로만 설정
  • System.getenv()는 동작하지만, System.getProperty()는 null을 반환
  • JVM 시스템 프로퍼티로 자동 변환되지 않음.

 

System.getProperty()를 쓰는 경우, getEnv 또는 @Value 형태로 변경 필요