클라우드 및 인프라 운영시에 다양한 업무들을 수행하지만 그 중 큰 부분을 차지하는 작업들 중 하나는 '업그레이드' 라고 생각한다. EKS 버전 업그레이드 워크샵을 통해 EKS 업그레이드시 필요한 부분들을 알아보자.
1. 실습환경
1.0 실습에 앞서
- Amazon EKS 버전을 업데이트하는 것은 Kubernetes 클러스터의 보안, 안정성, 성능 및 호환성을 유지하는 데 필수적이며, 플랫폼에서 제공하는 최신 기능과 역량을 활용할 수 있도록 보장
- AWS는 컨트롤 플레인을 관리하고 업그레이드하지만, 클러스터 소유자/고객은 클러스터 컨트롤 플레인과 데이터 플레인 모두에 대한 업그레이드를 시작할 책임이 있음
- 데이터 플레인 업그레이드는 여전히 고객의 책임, 여기에는 자체 관리형 노드 그룹, 관리형 노드 그룹, Fargate 및 기타 애드온을 통해 프로비저닝된 워커 노드가 포함
- 워크숍 환경은 EKS 1.30 기반 클러스터에서 여러 노드 운영 방식을 함께 다루는 구조
- 핵심은 단순 버전 업그레이드가 아니라 Control Plane, Add-on, Node, Workload를 순서대로 검증하는 과정
1.1 실습환경 위치
1.2 인프라 구조
- Managed Node Group, Self-managed Node Group, Karpenter, Fargate가 함께 존재하는 구조
IDE Terminal
├─ kubectl
├─ AWS CLI
├─ Terraform
└─ Git
│
▼
Amazon EKS Cluster
├─ Managed Node Group
├─ Self-managed Node Group
├─ Karpenter Node
└─ Fargate Node
│
▼
Cluster Add-ons
├─ Argo CD
├─ AWS Load Balancer Controller
├─ EFS CSI Driver
├─ Karpenter
└─ Metrics Server
1.3 애플리케이션 구조
- 워크숍에서는 쇼핑몰 형태의 샘플 애플리케이션을 사용
- 각 컴포넌트는 독립적인 서비스로 구성되어 있으며 Argo CD를 통해 EKS 클러스터에 배포되는 구조
User
│
▼
UI Service
├─ Catalog Service
├─ Cart Service
├─ Checkout Service
└─ Static Assets
Checkout Service
└─ Orders Service
1.5 EKS 업그레이드 흐름

- Control Plane, Add-on, Node, Workload 순서로 확인하는 방식
[사용자 작업 흐름]
현재 상태 확인
↓
Control Plane 업그레이드
↓
Add-on 호환성 확인
↓
Node Group 업그레이드
↓
Karpenter / Fargate 등 업그레이드
↓
애플리케이션 상태 확인
1.6 주요 고려사항
Add-on 호환성
EKS 버전을 올리기 전에 설치된 Add-on들이 대상 Kubernetes 버전과 호환되는지 확인 필요
대상 Add-on
- Argo CD
- AWS Load Balancer Controller
- EFS CSI Driver
- Karpenter
- Metrics Server
노드 업그레이드 방식 차이
현재 노드 구성이 섞여 있기 때문에 동일한 방식으로 처리 불가
- Managed Node Group: EKS 관리형 업그레이드 가능
- Self-managed Node Group: AMI, Launch Template, Drain 직접 고려 필요
- Karpenter Node: NodePool, NodeClass, Karpenter 버전 확인 필요
- Fargate Node: Fargate Profile 대상 워크로드 확인 필요
애플리케이션 영향도
- 업그레이드 중 Pod 재배치 발생 가능
- 서비스 중단 여부 확인 필요
- Argo CD Sync / Health 상태 확인 필요
1.7 환경 확인




2. 실습 진행
2.1 Control Plane 업그레이드
- terraform 을 통한 버전 업데이트 진행



2.2 Addon 업그레이드





2.3 관리형 노드그룹 업데이트 (인플레이스)
노드그룹 생성





노드그룹 업데이트





2.4 관리형 노드그룹 업데이트 (블루-그린)
1.30 버전 사용 노드그룹 확인 (블루)



1.31 버전 사용 노드그룹 생성 (그린)



1.30 버전 사용 노드그룹 삭제 (블루)


2.5 Karpenter 업데이트 (블루-그린)
카펜터 설정 확인





pod 설정 변경

ami 업데이트




2.6 자체 관리 노드그룹
설정 확인


업그레이드


2.7 Fargate 업그레이드



