📌 해당 글은 가시다님의 AEWS 스터디 중, AWS EKS Upgrade Workshop에 대한 실습 정리 글입니다. 실습환경을 제공해주신 최영락 님에게 감사드립니다.먼저, 쿠버네티스 업그레이드 이해하기Amazon EKS 업그레이드를 논하기 전에, 먼저 Kubernetes 업그레이드의 기본 개념부터 살펴봅니다.쿠버네티스는 여러 컴포넌트가 서로 상호작용하는 분산 시스템으로, 단순히 버전만 올리는 작업이 아니라, 구성요소 간의 호환성과 순서를 고려해야 합니다. 지원 되는 버전Kubernetes는 가장 최근의 3개 마이너 버전만 공식 패치를 제공합니다.예를 들어 현재 시점 기준으로는 v1.30 v1.31 v1.32가 패치 대상이며, v1.29 이하의 버전에서는 보안 패치조차 지원되지 않습니다.참고로..
FargateFargate란? EKS Fargate는 AWS에서 제공하는 서버리스 Kubernetes 컴퓨팅 서비스입니다. 일반 EKS는 컨트롤 플레인만 AWS가 관리하지만, Fargate는 데이터 플레인까지 관리해 주므로 인프라 걱정 없이 애플리케이션 개발에 집중할 수 있습니다. 하지만, AWS에서 데이터플레인까지 관리하는 영역이 넓어진 만큼, 여러 가지 제약사항과 고려사항이 존재합니다.CPU와 메모리는 정해진 단위(예: 0.25, 0.5, 1.0 vCPU 및 512MB, 1GB 등)로만 할당할 수 있습니다.데몬 셋은 Fargate에서 지원하지 않습니다.특권 컨테이너(Privileged containers)가 지원되지 않습니다.HostPort 또는 HostNetwork를 지정할 수 없습니다Fargate..
1. Karpenter란?AWS Karpenter는 Kubernetes 클러스터의 노드 프로비저닝을 자동화하는 오픈소스 도구로, Kubernetes 네이티브 오토스케일러입니다. 워크로드 요구사항에 맞게 적절한 컴퓨팅 리소스를 실시간으로 프로비저닝 하여 클러스터의 효율성과 비용 최적화를 동시에 달성합니다.Cluster Autoscaler vs KarpenterCluster Autoscaler?CAS(Cluster Autoscaler)는 클러스터에서 파드가 스케줄링되지 못하는 상황을 감지하고 클러스터의 노드 수를 자동으로 조정하는 도구입니다.EKS에서는 ASG(Auto Scaling group)을 이용하여 노드의 수를 조정하였습니다. 기존에는 노드 프로비저닝 자동화 도구로 CA(Cluster Autosca..
CSI(Container Storage Interface)란?CSI(Container Storage Interface)는 쿠버네티스가 다양한 스토리지 시스템과 쉽게 연결될 수 있도록 만든 표준 인터페이스이다. 예전에는 AWS EBS 같은 스토리지 기능이 쿠버네티스 코드 안에 직접 포함되어 있어서, 스토리지 기능을 업데이트하려면 쿠버네티스 전체를 업그레이드해야 했다. 이런 불편함을 해결하기 위해 스토리지 관련 코드를 외부로 분리한 것이 바로 CSI이며, 이를 통해 스토리지 기능을 필요할 때마다 독립적으로 추가하고 업데이트할 수 있게 되었다. 다양한 벤더사의 CSI Driver가 존재하지만, AWS EBS CSI Driver로 예를 들면, csi-controller 파드(Statefulset or Deplo..
AWS VPC CNIAWS VPC CNI(Container Network Interface)는 Amazon EKS 클러스터의 파드 네트워킹을 담당하는 네트워크 플러그인이다. AWS CNI는 다른 CNI들과는 주요 특징은 다음과 같다.노드와 파드의 네트워크 대역이 같다.ENI와 L-IPAM을 함께 활용하여 다른 CNI와 차별화된 네트워크 방식을 제공한다.워커 노드의 인스턴스 타입별 파드 생성 개수 제한이 있다. 노드와 파드의 네트워크 대역이 같다노드와 파드의 네트워크 대역이 같다. 이는 VPC의 서브넷 IP를 파드에 직접 할당함으로써, 파드가 마치 VPC 내의 일반적인 EC2 인스턴스처럼 동작할 수 있게 한다. 일반적인 K8S CNI는 오버레이(VXLAN, IP-IP)등으로 통신하기 때문에 오버헤드가 발생..
EKS 배포EKS를 배포 방법에는 3가지 방법이 있습니다.AWS 웹 관리 콘솔eksctlIaC(CDK, CloudFormation, Terraform)이번 실습에서는 eksctl 명령어를 활용하여 EKS를 배포합니다.eksctleksctl은 Amazon EKS 클러스터를 생성하고 관리하기 위한 공식 CLI(Command Line Interface) 도구입니다.eksctl로 클러스터 생성 시, 내부 로직(코드)을 살펴보면 aws cloudformation 서비스를 통해서 스택을 생성하고 업데이트를 수행합니다. eksctl 설치 OS 플랫폼에 맞게 eksctl을 설치합니다.실습은 ubuntu(amd64) 환경에서 진행합니다.# for ARM systems, set ARCH to: `arm64`, `armv6..
테라폼 기본 사용테라폼은 hashcorp사에서 공개한 너무나도 유명한 IaC 도구입니다.테라폼 설치 mac os를 기준, 설치 방법입니다. tfenv는 테라폼의 다양한 버전을 사용할 수 있게 해 주는 도구입니다.테라폼 설치 버전 : 1.8.1테라폼 자동완성 설치# tfenv 설치brew install tfenv# 설치 가능 버전 리스트 확인tfenv list-remote# 테라폼 1.5.1 버전 설치tfenv install 1.8.1# 테라폼 1.5.1 버전 사용 설정 tfenv use 1.8.1# tfenv로 설치한 버전 확인tfenv list# 테라폼 버전 정보 확인terraform version# 자동완성terraform -install-autocomplete## 참고 .zshrc 에 아래 추가됨c..
1. Jenkins 젠킨스(Jenkins)는 지속적 통합(Continuous Integration, CI) 및 지속적 배포(Continuous Deployment, CD)를 지원하는 오픈 소스 자동화 도구입니다. 주요 특징은 다음과 같습니다: 자동화된 빌드: 소스 코드가 변경될 때마다 자동으로 빌드를 실행하여 테스트를 수행하고 결과를 제공합니다. 지속적 통합: 개발자들이 작성한 코드가 주기적으로 통합되고 테스트되며, 버그를 빠르게 발견하여 해결할 수 있도록 지원합니다. 지속적 배포: 빌드된 애플리케이션을 자동으로 테스트 및 프로덕션 환경으로 배포하여 개발과 운영 간의 간극을 줄입니다. 확장성: 풍부한 플러그인 생태계를 통해 다양한 개발 스택 및 툴과의 통합이 가능합니다. 유연성: 다양한 작업을 파이프라인..