낙숫물이 바위를 뚫듯이.

[AWS] VPC CNI와 Node/Pod IP 할당, Subnet IP 소비 이해하기
·
DevOps/DevOps
개요최근 Subnet IP 관련 작업을 진행하면서 AWS VPC 관점에서 IP들이 어떻게 관리되는지 살펴보았다. 이 과정에서 특히 EKS 네트워크 관점에서의 VPC CNI, 노드/파드 관점에서의 IP 할당 이슈들을 알게되어서, 오래 기억하고 실무에 활용하기 위해 글로 정리해본다!! 1. AWS 네트워크 간략 정리 (VPC, Subnet, IP)1.1. VPC와 서브넷VPC는 리전에 생성하는 논리적 네트워크 공간, 서브넷은 VPC 내부의 논리적 네트워크 공간으로, VPC CIDR 공간을 다시 일정 크기로 나눠서 점유한다. EC2, RDS와 같이 ENI(Elastic Network Interface)가 필수로 붙는 리소스들이 서브넷이라는 공간에 만들어진다.1.2. 서브넷 특징서브넷은 VPC CIDR을 나눠서..
[Istio] Mesh 밖 클라우드 서비스와의 통신, ServiceEntry
·
DevOps/DevOps
개요사내에서 진행하는 Istio Study 마지막 세션. 내 주요 업무는 클라우드 서비스와 연관되어 있기에, Istio와 클라우드 서비스를 엮어서 마지막 발표를 준비했다. 지금까지는 클러스터 내부에서 Pod 간 통신에서의 Istio/envoy를 살펴봤다면, 이번 글에서는 (클라우드 파트 업무와 엮어서) Istio 외부 즉, Mesh 밖으로 나가는 트래픽을 위주로 학습해보려고 한다. 1. Mesh의 경계는 Service Registry가 정한다.1.1. Service RegistryEnvoy는 istiod가 내려주는 설정 즉, Service Registry에 있는 목적지만 알아본다. 쿠버네티스 Service를 만들면 이 Service Registry라는 목록에 자동으로 올라간다. 그래서 cobinding..
[Istio] GW/VS/DR을 apply하면 Envoy에는 무슨 일이 생길까?
·
DevOps/DevOps
개요지난 글에서는 Service Mesh를 타는/타지 않는 경우에 대한 트래픽 흐름을 살펴보았다. Mesh를 타는 흐름 즉, Envoy를 통해 트래픽이 오갈 때 Gateway, Virtual Service, Destination Rule이 주는 영향을 직접 단계별로 살펴보자. 1. 들어가며 : K8S Architecture와 CRD(Gateway, VirtualService, DestinationRule) GW, VS, DR은 내장 리소스가 아니라 istio가 CRD(커스텀 리소스!)로 등록한 것이다. CRD를 등록하는 순간 API Server가 그 타입을 이해하게 되고, 그 뒤로는 내장 리소스(Deployment, Service 등)와 완전히 동일하게 동작한다. CRD kubectl apply 후, ..
[Istio] Service Mesh를 탈 때/타지 않을 때 요청 흐름 비교
·
DevOps/DevOps
개요이 글은 클러스터로 들어온 요청이 앱 컨테이너에 도달하기까지의 전체 경로를 탐색한다. 지난 글에서 사이드카가 어떤 원리로 주입되고 트래픽을 가로채는지 확인했다면, 이번엔 사이드카에 실제 요청이 어떻게 통과하는지를 살펴본다. 1. 환경 준비1.1. 클러스터와 istio이전 글의 k8s-lab 클러스터를 그대로 쓰되, 이번에는 클러스터 밖에서 게이트웨이로 들어가는 경로가 필요하다. 그런데 Kind에서는 이 경로가 기본적으로 막혀있다. 왜 막혀 있는지부터 살펴보자. Kind는 EKS와 달리 Docker 컨테이너가 하나의 노드 역할을 한다. Docker는 컨테이너를 내부 사설 네트워크(Bridge)에 붙이기 때문에, 노드는 172.18.0.2와 같은 브리지 안의 사설 주소를 할당 받는다. [Docker Do..
[Istio] Sidecar (Native, Ambient)
·
DevOps/DevOps
개요이 글은 Istio의 Data Plane, 그중에서도 사이드카에 집중한다. 사이드카가 어떤 원리로 앱 Pod에 주입되고, 어떻게 앱의 트래픽을 가로채 처리하는지를 실제 kind 로컬 클러스터(bobae-labs) 위에서 명령어 레벨로 확인한다. Service Mesh와 Istio의 전체 구조는 이전 글에서 다뤘고, 이 글을 단독으로 읽어도 되도록 필요한 부분만 짧게 복습하고 시작해보자!Service Mesh: 모든 서비스 간 트래픽을 프록시로 한 번 통과시켜, 통신 제어(라우팅·재시도·mTLS·telemetry)를 앱 코드 밖으로 빼내는 구조. 정책을 선언하는 Control Plane과 실제 트래픽을 처리하는 Data Plane으로 나뉜다.Istio: Control Plane은 istiod, Data..
[Istio] Service Mesh와 Istio
·
DevOps/DevOps
개요Service Mesh와 Istio에 대해 이해한다. 1. Service Mesh1.1. Service Mesh가 필요한 이유MSA 환경에서는 서비스가 수십 개로 쪼개지면서, 서비스 간 통신에 필요한 일들 (retry, timeout, 라우팅, mTLS(서비스 간 암호화) 등)을 모두 앱이 각자 코드로 떠안아야 하는 문제가 생긴다. 파편화되는 만큼 Request의 추적이 어렵고 서비스 간의 순환 호출 등의 문제가 발생해 장애 여파가 커지기도 한다. 1.2. Service Mesh를 통해 해결할 수 있는 것핵심은 단순하게 모든 서비스 간 트래픽이 프록시(Envoy)를 한 번 거치게 된다는 것이다. 트래픽이 반드시 지나야 하는 길목이 생기면, 그 길목에서 통신을 제어하고 들여다보는 일이 전부 가능해진다..
[K8S] Mac Mini(Ubuntu)에 kind 기반 로컬 K8S Cluster 환경 구축하기
·
DevOps/DevOps
개요Ubuntu가 설치된 Mac Mini에 kind 기반 k8s를 구축하는 과정을 소개한다. (들어가며 - Local K8S Cluster 간략 소개)로컬 K8S 도구는 kind를 선택했다. 대표적으로 kind, minikube, kubeads 등이 있는데 해당 글에서 자세히 소개하진 않겠다. [k8s docs] 나는 EKS와 동작이 가까워야 사내 인프라에 대한 학습 효과가 좋다고 판단해서 kind를 선택했다. kind는 노드를 docker 기반으로 띄운다. 1. Network 환경 구성SRE가 된 지 어느덧 1년이 지났다. 그간 K8S 지식·운영에 대해 얼마나 성장했을까 돌이켜보면 부끄럽지만 아직 한참 부족한 점이 많았다. 리더와 이 고민을 공유했을 때 가지고 계신 구형 맥미니에 Ubuntu 서버를 설..
[DevOps] SSH 없이 안전하게 EC2 운영하기: SSM 기반 접근 제어와 전역 정책 설계
·
DevOps/DevOps
개요서비스가 점점 커지면서 개발자의 다양한 PoC 니즈를 충족하기 위해, EC2 Instance Self-Service 기능을 준비했다. 프라이빗 환경에서 서버가 뜰 테지만, 아무래도 서버를 오픈하는 건 여러 위험성이 있기에 작업 전에 테크 스펙을 작성해서 여러가지 인프라/보안 이슈에 대해 검토했다. 그 중에서도 가장 레슨런이 많았던 Session Manager와 SSM Logging에 대해 정리해보려고 한다. 1. EC2 Instance 접근 방식EC2 Instance에 접근하는 다양한 방식이 있다.1.1 EC2 Instance Connect (문서)브라우저 기반 SSH 연결 방식으로, AWS가 일시적인 SSH 퍼블릭 키를 자동 생성하여 60초간 인스턴스 메타데이터에 푸시한다. SSH Client와 다..
[K8S] 자주 사용하는 Kubernetes CLI 정리
·
DevOps/DevOps
개요업무를 하면서 점점 파드에 접근해서 정보를 확인할 일이 늘어나고 있다. 온콜이나 장애 상황 시에 노션에 붙여둔 명령어를 일일이 찾아보는게 허들이라 느껴져서 아예 블로그에 정리해보기로 했다! KubectlKubernetes API를 사용해서 쿠버네티스 클러스터의 컨트롤 플레인과 통신하기 위한 커맨드 라인 툴이다.리소스 관리: Pod, Service, Deployment, ConfigMap 등 k8s 리소스를 생성하고 관리할 수 있다. YAML 파일을 통해 선언적으로 리소스를 정의하거나 명령형 커맨드로 직접 다룰 수 있다.클러스터 상태 확인: 클러스터에서 실행 중인 애플리케이션의 상태, 노드 정보, 이벤트 로그 등을 조회할 수 있다.애플리케이션 배포 및 업데이트: 컨테이너 이미지를 배포하고, 롤링 업데이..
[DevOps] 멀티모듈 프로젝트 CI/CD 적용 - 설계 구상 편
·
DevOps/DevOps
개요실제 운영 환경 인프라를 구축하기 위해 설계를 팀에 공유해보기로 하였다. 사실 3달 정도 전에 Github Actions + Elastic Beanstalk으로 실습을 해보았으나, 실패했던 경험이 있기에 다시 돌아와서 설계 과정을 세세히 기록해본다. 또한, 이전에는 사용해보고 싶었던 기술(Jenkins)과 추천 받은 기술로 구성하였다면, 이번엔 온전히 내 논리와 지식을 활용하여, 배포를 하자마자 사용자가 생길 우리 서버..🤗의 아키텍처를 구상해보려고 한다.   1) 이전 시도 복기와 현재 상황나에게 가장 까다롭게 다가오는 것은 멀티 모듈 설계와 AWS 사용이다. 이 까다로운 문제를 하나씩 풀어 나가는 과정을 작성해보자..! 1-1) 모듈 구조 파악하기 core(공통 라이브러리)admin(관리자 모듈..
cobinding
'DevOps/DevOps' 카테고리의 글 목록