EKS

· AWS/EKS
📌 해당 글은 가시다님의 AEWS 스터디 중, AWS EKS Upgrade Workshop에 대한 실습 정리 글입니다.     실습환경을 제공해주신 최영락 님에게 감사드립니다.먼저, 쿠버네티스 업그레이드 이해하기Amazon EKS 업그레이드를 논하기 전에, 먼저 Kubernetes 업그레이드의 기본 개념부터 살펴봅니다.쿠버네티스는 여러 컴포넌트가 서로 상호작용하는 분산 시스템으로, 단순히 버전만 올리는 작업이 아니라, 구성요소 간의 호환성과 순서를 고려해야 합니다. 지원 되는 버전Kubernetes는 가장 최근의 3개 마이너 버전만 공식 패치를 제공합니다.예를 들어 현재 시점 기준으로는 v1.30 v1.31 v1.32가 패치 대상이며, v1.29 이하의 버전에서는 보안 패치조차 지원되지 않습니다.참고로..
· AWS/EKS
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..
· AWS/EKS
1.  Karpenter란?AWS Karpenter는 Kubernetes 클러스터의 노드 프로비저닝을 자동화하는 오픈소스 도구로, Kubernetes 네이티브 오토스케일러입니다. 워크로드 요구사항에 맞게 적절한 컴퓨팅 리소스를 실시간으로 프로비저닝 하여 클러스터의 효율성과 비용 최적화를 동시에 달성합니다.Cluster Autoscaler vs KarpenterCluster Autoscaler?CAS(Cluster Autoscaler)는 클러스터에서 파드가 스케줄링되지 못하는 상황을 감지하고 클러스터의 노드 수를 자동으로 조정하는 도구입니다.EKS에서는 ASG(Auto Scaling group)을 이용하여 노드의 수를 조정하였습니다. 기존에는 노드 프로비저닝 자동화 도구로 CA(Cluster Autosca..
· AWS/EKS
CSI(Container Storage Interface)란?CSI(Container Storage Interface)는 쿠버네티스가 다양한 스토리지 시스템과 쉽게 연결될 수 있도록 만든 표준 인터페이스이다. 예전에는 AWS EBS 같은 스토리지 기능이 쿠버네티스 코드 안에 직접 포함되어 있어서, 스토리지 기능을 업데이트하려면 쿠버네티스 전체를 업그레이드해야 했다. 이런 불편함을 해결하기 위해 스토리지 관련 코드를 외부로 분리한 것이 바로 CSI이며, 이를 통해 스토리지 기능을 필요할 때마다 독립적으로 추가하고 업데이트할 수 있게 되었다. 다양한 벤더사의 CSI Driver가 존재하지만, AWS EBS CSI Driver로 예를 들면, csi-controller 파드(Statefulset or Deplo..
· AWS/EKS
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)등으로 통신하기 때문에 오버헤드가 발생..
· AWS/EKS
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..
1. Amazon EKS Blueprints for Terraform - Karpenter on EKS FargateAmazon EKS Blueprints for Terraform는 Terraform을 사용하여 다양한 Amazon EKS 클러스터 패턴 템플릿을 제공합니다. 테라폼이 복잡하게 권장하는 구성 지침보다는 사용자가 EKS 클러스터를 최대한 빠르고 쉽게 구성할 수 있도록 하는데에 초점을 두고 있습니다. 아래와 같이 다양한 기타 프로젝트를 지원합니다.GitopsData on EKSObservability AcceleratorKarpenter Blueprintskarpenter-blueprints Fargate는 컨트롤 플레인 + Fargate(데이터 플레인)의 완전한 서버리스형 쿠버네티스 컴퓨팅 엔..
· AWS/EKS
1. K8S 인증/인가 K8S 인증/인가 쿠버네티스 API 서버에 대한 인증 및 인가에 대해 설명합니다. 인증(Authentication) 인증은 접근하려는 사용자의 신분을 확인하는 과정입니다. 쿠버네티스에서는 대표적으로 아래 3가지 방식의 인증을 지원합니다. X509 Client Certs kubectl Service Account X509 Client Certs kubeconfig에 CA crt(발급 기관 인증서) , Client crt(클라이언트 인증서) , Client key(클라이언트 개인키)를 통해 인증합니다. kubectl 러 클러스터(kubeconfig)를 관리 가능 - contexts 에 클러스터와 유저 및 인증서/키 참고합니다. Service Account 서비스 계정에 부여된 API ..