[reinvent 2024] Amazon EKS fleet 관리에 대해 자세히 알아보기

Summary

GitOps 원칙을 사용하여 Amazon EKS 클러스터를 환경 전반에 걸쳐 통합된 내부 개발 플랫폼을 만드는 방법을 배웁니다. 다중 클러스터 리소스 구성, 드리프트 감지, 수명 주기 관리를 통해 기술을 연마하고 동시에 규정 준수와 보안을 보장합니다. 플랫폼 엔지니어링을 구현하여 리소스 상태를 일관되고 유지하고, 클러스터 전반에 정책을 적용하여, 로그, 메트릭, 모니터링 및 액세스 제어를 중앙 집중화 하는 기술을 Workshop을 통해 배울 수 있습니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Dive deep into Amazon EKS fleet management [REPEAT]
  • Date:  2024년 12월 4일(수)
  • Venue: MGM Grand | Level 3 | Premier 311
  • Speaker:
  • Sebastien Allamand(Sr. Specialist Solutions Architect, AWS)
  • Carlos Santana(Sr. Specialist Solutions Architect, AWS)
  • Industry: Cross-Industry Solutions

들어가며

이 세션은 워크샵이지만 EKS Fleet Management 라는 단어가 있어 바로 신청을 하게 되었습니다.
EKS Fleet Management는 다중 클러스터 환경에 효율적으로 관리하는 개념 및 접근 방식입니다.
이 스킬을 익힌다면 더 성장할 수 있는 나의 모습을 볼 수 있을 것 같습니다.

EKS의 성장

2024년 7월 기준, Amazon EKS는 빠르게 채택되고 있으며, 관리되는 클러스터 수가 전년 대비 33.1% 증가하고 있습니다.

그러나 더 많은 클러스터를 생성해야 하고 복잡성이 증가하고 다양한 파이프라인과 다른 버전이 생성되면서  관리가 불가능한 성장을 이루어 내고 있습니다.

결과적으로 클러스터의 일관성을 유지하기 어려워 지고 있습니다.

필요

EKS Fleet Management의 장점은 아래 3가지가 있습니다.

  1. 속도
  2. 가용성
  3. 효율성

위의 문제를 해결 하기 위해서는 EKS 클러스터에 배포되는 Kubernetes 리소스에 대해 GitOps 사용하는 것을 권장합니다.

장점은 아래와 같습니다.

  1. 원하는 상태가 선언적으로 표현됩니다.  -> 복잡성 감소
  2. 불변 상태 유지 -> 감사 기능 강화
  3. 에이전트가 원하는 상태를 가져옴 -> 보안 강화
  4. 에이전트가 지속적으로 관찰하고 조정 -> 일관성 강제화

GitOps는 누군가 실수로 콘솔에서 변경을 하더라도 GitOps 에이전트가 복구하고 원래 상태로 되돌릴 수 있는 장점이 있습니다.

실습 환경은 위의 그림과 같습니다.

실제 워크숍에서는 허브 앤 스포크/푸시 GitOps 에이전트 및 풀(애드온, 플랫폼, 애플리케이션) 배포 아키텍처를 선택했습니다. 이 아키텍처는 ArgoCD와 같은 중앙 집중식 GitOps 도구로 많은 수의 EKS 클러스터를 관리할 때 발생할 수 있는 확장성 문제를 해결하도록 설계되었습니다.

여러가지 과제에 직면

많은 수의 Kubernetes 클러스터를 관리하기 시작하면 여러가지 문제에 직면합니다. 이 부분을 해결 방법을 이야기 합니다.

  1. 개발자 마찰 -> 개발자들이 자원을 독립적으로 생성하고 애플리케이션을 배포할 수 있도록 셀프 서비스 기능을 제공
  2. 모니터링 -> 클러스터 상태, 버전, 애플리케이션 배포 상태 및 애드온 상태에 대한 중앙 집중형 가시성을 포함한 종합적인 모니터링 체계를 수립
  3. 보안, 규정 준수 -> 모든 클러스터가 보안, 규정 요구 사항을 충족하도록 보장

Fleet Monitoring

Fleet Monitoring은 리소스를 효율적으로 운영하고 성능을 최적화 하여 장애 발생 시 신속하게 대응하는 부분을 이야기 합니다.

  1. 단일 화면에서 모든 것을 관리
  2. 플랫폼 구성 요소에 대한 모니터링
  3. 사전 경고에 중점을 둠

QuickSight를 이용하여 Dashboard를 생성해 보겠습니다.

위의 이미지  처럼 EKS Fleet View / Kubernetes Release / EKS 메타데이터를 확인할 수 있습니다.

Argo Project 탭을 선택하면 Application 상태 체크도 확인할 수 있습니다.

Container Insights를 Enable하면 위의 이미지 처럼 Dashboard를 볼 수 있습니다.

Gorvern

대규모 가드레일 항목에 아래 3가지가 있습니다.

  1. 일관성 보장
  2. 보안 결과 또는 보안 이슈
  3. Pod 보안 표준

실습 환경은 중앙에 Security Hub를 두고 각 EKS에 Kyverno를 이용하여 정책을 적용하여 감사 작업을 진행합니다.

아래와 같이 Report를 확인할 수 있습니다.

Validation

검증 단계를 강화하기 위해서 아래 3가지를 이야기 합니다.

  1. 파이프라인 강화
  2. 안정성 향상
  3. 회귀(기능 퇴보) 방지

테스트 방법은 아래 3가지를 이야기 합니다.

  1. 단위 테스팅 : Terraform 테스트
  2. 기능 테스트 : BDD 기반 Pytest
  3. 비기능 테스트 : Locust ( 부하  테스트 밀 성능 테스트 도구 )

위의 이미지는 테라폼 단위테스트 한 화면 입니다.

위의 이미지는 Pytest 한 결과 화면입니다.

위의 내용은 Helm Chart 단위 테스트한 화면입니다.

비기능 테스트인 Locust를 테스트한 결과 화면입니다.

결론

Workshop이여서 실습이 위주다 보니, 내용을 표시하기가 힘든 부분이 있습니다. 그러나 다중 클러스터 관점에서 어떻게 운영을 해야 하는지 알수 있었습니다.
아래의 과제를 가지고 학습을 한다면 실력향상의 지름길로 갈 수 있을 것입니다.

  1. ArgoCD로 멀티 클라우드 배포환경 구축해 보기
  2. QuickSight를 이용해서 Dashboard를 구축해 보기
  3. Security Hub 와 Kyverno 를 이용하여 보안 정책 적용해 보기
  4. Terraform / Helm 에 테스트 적용해 보기
  5. Locust를 이용하여 성능 테스트 해보기 
글 │메가존클라우드, Strategic Technology Center (CTC),Cloud Native Platform Team, 서현철
게시물 주소가 복사되었습니다.