Kubernetes 워크로드와 컨트롤러 Kubernetes에서 워크로드는 클러스터에서 실행되는 애플리케이션을 의미하며, 컨트롤러는 파드 집합의 원하는 상태를 관리한다. 컨트롤러는 파드가 지정된 상태와 일치하도록 관리하며, 실패한 파드를 자동으로 교체하는 등의 작업을 수행한다. Kubernetes는 여러 종류의 빌트인 컨트롤러를 제공하여 다양한 애플리케이션 유형을 처리한다.각 컨트롤러는 애플리케이션의 요구 사항에 따라 적합하게 선택할 수 있다. Replication ControllerReplication Controller는 Kubernetes에서 파드의 복제본을 관리하는 오래된 방식이다. 현재는 Deployment와 ReplicaSet이 대부분의 경우에 더 적합하지만, 여전히 사용할 수 있는 리소스로 파..
Cluster AutoscalerCluster Autoscaler는 Kubernetes에서 오래전부터 사용되던 노드 스케일링 도구로, AWS에서는 Auto Scaling Group(ASG)과 함께 동작한다. 즉, 미리 정의된 노드 그룹(ASG 단위)을 기준으로, 리소스가 부족하면 노드를 추가하고, 리소스가 여유로우면 노드를 축소한다. 이것은 EC2 Autoscaling 그룹을 사용한다고 보면 된다. 하지만 이방식은 구성하기가 어렵고 구성할 수 있는 범위가 매우 제한적이다. 예를 들어, 사용 가능한 인스턴스 타입이나 지역, 스팟 인스턴스 사용 여부 등을 세부적으로 제어하려면, ASG에서 미리 다 설정해둬야 하기 때문에 실시간 대응에는 다소 한계가 있다. 또한, Pod의 리소스 요청(Request)에 딱 맞..
EKS(Elastic Kubernetes Service) 와 온프레미스 Kuberentes 환경 차이 AWS의 EKS(Elastic Kubernetes Service)와 온프레미스 Kubernetes의 가장 큰 차이는 마스터 노드(제어 플레인)의 관리 주체에 있다. EKS는 마스터 노드를 AWS가 완전하게 관리하며, 사용자는 EC2 기반의 노드 그룹을 생성하거나 서버리스 환경인 Fargate를 선택해 워커 노드 없이도 서비스를 운영할 수 있다. 또한 EKS에서는 클러스터 버전 업그레이드가 상대적으로 수월하다. Terraform을 활용한 자동화는 물론, AWS 콘솔에서 수동으로도 간편하게 진행할 수 있다.반면, 온프레미스 Kubernetes는 컨트롤 플레인 설치부터 업그레이드, 장애 복구까지 모든 작업을 ..
프로젝트 개요이번 프로젝트는 Naver Cloud Kubernetes Service(NKS)를 활용하여, 간단한 3-Tier 애플리케이션을 Kubernetes의 기본 리소스만으로 직접 배포하고, 이를 통해 Kubernetes 구성 요소에 대한 이해를 높이는 것에 중점을 두고 있다.Frontend, Backend, Database 각 구성 요소는 개별적으로 컨테이너화되어 Kubernetes 클러스터에 배포되며, 서비스 간의 연결과 통신이 이루어지도록 하는것이 목표이다. 아키텍처애플리케이션 기술 스택Frontend: ReactBackend: Node.js(Express)Database: MySQLKubernetes 리소스 DeploymentServicePersistentVolume (PV)Persistent..
Security ContextSecurityContext는 Kubernetes에서 Pod 또는 컨테이너의 보안 설정을 정의하는 데 사용되는 구성 요소이다. 이를 통해 컨테이너 실행 시 특정 보안 관련 옵션(권한, 사용자, 그룹 등)을 설정할 수 있다. SecurityContext를 사용하는 이유컨테이너가 실행될 때 최소 권한으로 동작하도록 제한하기 위해.시스템에서 위험한 작업을 할 수 있는 권한을 엄격히 관리하기 위해.실행 환경을 보안 규칙에 맞게 설정하기 위해.CapabilitiesCapabilities는 Linux 커널에서 제공하는 기능으로, 루트 권한을 세분화한 특정 작업 권한이다. 보통 리눅스에서는 root 사용자에게 모든 권한이 부여되지만, Capabilities를 사용하면 필요한 권한만 추가로..
Kubernetes에서 CSR(Certificate Signing Request)은 클러스터 내에서 사용자가 인증을 위해 인증서를 요청하는 메커니즘이다. CSR은 인증서 서명 요청으로, 사용자가 클러스터 내에서 안전하게 작업을 수행할 수 있도록 하기 위한 인증서를 발급받기 위한 요청을 나타낸다.Kubernetes에서 CSR의 주요 목적은 클러스터 내 인증과 권한 부여와 관련된 작업을 하는 것이다. 예를 들어, API 서버에 접근하거나 클러스터 내 다른 서비스에 접근하려는 사용자는 특정한 인증서를 사용해야 한다. 이를 통해 사용자는 클러스터에 안전하게 접근할 수 있게 된다.CSR의 주요 용도와 흐름클라이언트 인증서 요청클러스터 내에서 인증이 필요한 사용자가 인증서 서명 요청(CSR)을 생성한다.이 요청에는..