본문 바로가기
DevOps/AWS

ecs -> eks 전환 처리

by 계범 2025. 8. 20.

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 형태로 변경 필요

'DevOps > AWS' 카테고리의 다른 글

EBS & AMI & EFS  (0) 2023.11.19
AWS IP, EC2 배치그룹, ENI, EC2 Hibernate  (1) 2023.11.18
AWS Lambda를 통한 PDF/ZIP 다운로드 개선 (미완글)  (0) 2023.11.16
AWS 비용설정(예산 설정) & AWS ECS  (1) 2023.11.13
AWS Region & IAM  (0) 2023.11.12

댓글