brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Oct 01. 2024

11.AWS GS리테일 EKS 무중단업그레이드-2024

AWS 서밋

쿠버네티스의 단점 = 잦은 업그레이드 필요

EKS를 업그레이드 시 무중단으로 작업하기 위해 알아야 할 기술

개발자, 인프라 담당자가 봐야 할 내용




<1> EKS로 혁신

<2> EKS 어려움 4가지

<3> EKS 어려움 4가지 해결법?

<4> GS 리테일

<5> EKS 업그레이드 이슈와 해결

<6> 대규모 쿠버네티스 리소스 파일 쉽게 관리하기 = 템플릿 변환 엔진 개발





<1> EKS로 혁신


1

이제는 Analytics 등에도 EKS를 사용한다.





<2> EKS 어려움 4가지


1

클러스터 관리 어렵다

Add-on이 필수적인데 버전별로 디펜던시가 있다.

팀관리 - 개발팀과 플랫폼 팀과의 R&R 정리

Configuration 관리가 필요하다.




2

많은 도구를 사용한다.


빌드 도구

배포 도구 - ArgoCD

코드로 관리하는 툴 - 테라폼 등







<3> EKS 어려움 4가지 해결법?



GITOPS로 모두 해결했다.




1

클러스터 관리 어려움 해결법?


새로운 워크로드 필요하다.



EKS blueprints를 사용하기를 권고한다.

CDK나 테라폼으로 만들어져 있다.


멀티 클러스터는 중앙에 아르고 CD로 구축



2

Add-ons 관리?

GITOPS로 관리하자.


Configureation 파일은 Git에 올리고, 배포는 Argo CD가 담당한다.

 Argo CD의 Application SET 기능을 사용하면, 멀티 클러스터 환경을 통일성 있게 관리가 가능하다.



3

팀관리?

팀 간의 R&R을 Git중심으로 관리하자.



4

Configureation 관리?

Git으로 저장

아르고 CD로 배포




<4> GS 리테일


AWS로 마이그레이션 진행 중이다.


1

회사 서비스 소개?


GS25 운영

우리 동네 GS

GS SHOP = 홈쇼핑 운영 중




2

컨테이너 기반, 쿠버네티스 기반으로 변화.



1단계

싱글 클러스터 구성

장애 시 모든 서비스가 문제가 됨.

장애 영향도를 최소화하기 위해 클러스터를 각각 구성함.




3

클러스터가 많아짐.




4

인프라에 대한 도전 4가지?


멀티 클러스터 관리 어려움

팀 별  CI/CD 가 다르다 보니 어려움

쿠버네티스 이해도 부족이 힘듦.  개발만 하고 싶다.  외주 인력 기반 프로젝트.

관리 파일들이 많아져 어려움.







<5> EKS 업그레이드 이슈와 해결



1

잦은 업그레이드 필요



2

새로운  신규로 만드는 Blue-Green 방식의 업그레이드로 진행.



3

Rute53의 CNAME으로 변경.


로드 밸런서 변경 이슈





4

로드 밸런서의 생명주기를   EKS 생명주기에서 독립시킴!!!





5

Active-Active EKS 구조로 운영함.




CLI로 업그레이드함

가중치를 100, 가중치를 0으로 주어 업그레이드함.



EKS 업그레이드 와 작업 시 바로 업그레이드 진행함.


비즈니스 중단 타임 0.





6

상이한 배포 환경 개선?

쿠버네티스 진입 장벽 해소?


배포 템플릿화를 통한 개발 생산성 향상  = 커스텀 배포 API를 만들어 사용함.



7

과거의 CI/CD 파이프라인 구성?

개발자 - Git --- CI/CD (젠킨스 등 사용)------------ 쿠버네티스 


문제?

형상관리 안됨, 롤백 안됨.


빌드/배포는 개발팀에서 운영.

클러스터는 인프라가 운영하여 갭 차이 발생함.



팀별로 배포 툴이 다름 (젠킨스 등..)



8

쿠버네티스를 몰라도 배포할 수 있게 하자~

빌드가 배포를 분리하자~

Mainfest 파일을 자동화하자.

깃을 만들고 Mainfest 파일을 관리.


개발자 = 커스텀 배포 API 사용.

인프라는 쿠버네티스 Mainfest 파일을 만들어줌!!!


ArgoCD  - 배포


개발자는 개발만 함.

인프라에서 배포함.


템플릿 변환 엔진을 통해 배포함.




9

개선된 내용

개발팀과 인프라팀의 R&R 정리

매니패스트 집중관리로 복잡성 해소

진입 장벽 해소 - 쿠버네티스 잘 몰라도 배포 가능





<6> 대규모 쿠버네티스 리소스 파일 쉽게 관리하기 = 템플릿 변환 엔진 개발



1

템플릿 변환 엔진을 통해 배포함.



2

점점 늘어나는 매니패스트 Yaml , 리소스가 많아지고 있음.



3

템플릿 관리도구는 일반적으로 Heml이나 Kustomize 사용?


Heml - 가시성 떨어짐. 

Kustomize - 공통 영역 재활용.  비공식 영역은 수작업이 필요함.


개선?

자체적으로 만듦.

템플릿 변환 엔진 자체 개발.





감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari