Kubernetes 17

Istio

[Istio?] Service Mesh를 구현할 수 있는 오픈소스 솔루션. 서비스에 경량화 프록시(Proxy)를 사이드카(sidecar) 방식으로 배치하여 서비스 간 통신을 제어. Istio를 사용하면 Application 코드의 변경없이 로드밸런싱, 서비스간 인증, 모니터링 등을 적용하여 마이크로 서비스를 쉽게 관리할 수 있다. 마이크로서비스간의 모든 네트워크 통신을 담당하는 프록시인 Envoy를 서비스마다 배포한다음 프록시들의 설정값을 저장하고 관리하는 컨트롤러 역할을 한다. 각각의 마이크로 서비스에 사이드카 형태로 배포된 envoy프록시를 Data Plane이라고하며, Data Plane을 컨트롤하는 부분을 Control Plane이라고 한다. [Istio 구조] Data Plane: 각 서비스에 ..

Kubernetes 2023.01.31

Service Mesh

[개요] Service Mesh 아키텍쳐는 MicroService 아키텍쳐와 더불어 활발하게 언급되고 있는 아키텍쳐이다. 왜 Service Mesh 아키텍쳐가 무엇인지 그리고 왜 활발하게 언급되고있는지, 구현체인 Istio에 대해서도 정리한다. [Service Mesh?] 마이크로서비스 구조를 띄는 시스템의 통신이 Mesh 네트워크의 형태를 띄는 것에 빗대어 Service Mesh로 명명되었다고 한다. 애플리케이션 계층이 아닌 인프라 플랫폼 계층에 특정 모듈을 삽입하여 애플리케이션에 대한 라우팅, 보안 등의 기능을 추가하는 것. 마이크로서비스에서 각 서비스들이 상호 통신을 할 때 코딩수준에서 통신방법을 정의해서 사용하는 방식을 많이 사용하였다. 하지만 통신이 복잡해지기 시작하면 이처럼 직접 구현하는 것이..

Kubernetes 2023.01.31

Service란?

[Kubernetes의 Services란?] 쿠버네티스 공식 페이지의 설명: 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 용어집 | Kubernetes 용어집 kubernetes.io 즉, "pod들의 서비스를 외부로 노출하기 위한 방법" 정도인데, 그렇다면 pod의 IP를 직접 노출하면 되지 않을까 라는 생각이 들 수도 있다. 하지만 pod의 경우 휘발성이라 다운되고 새로운 pod이 올라올 경우 새로운 IP를 할당받아 구동되게 된다. 그러므로 pod의 IP를 직접 외부로 노출하는 방법은 잘못되었고, 서비스를 통해 고정된 IP로 접근할 수 있도록 하는 방법이다. 예제: Flink의 Admin Web UI를 서비스를 통해 외부로 노출 Apache Flink의 예제를 보면 J..

Kubernetes 2022.12.06

ConfigMap이란?

[ConfigMap이란?] Key-Value 형태로 기밀이 아닌 데이터를 저장하는 데 사용하는 API오브젝트. 앱을 배포하다보면 DEV, PROD와 같이 환경별로 다른 변수값을 사용하는 경우가 있다. 앱의 이미지는 같지만 이러한 변수값이 차이가 나는 경우 다른 컨테이너 설정을 통해 배포하는 것은 매우 비효율적일 수 있다. 이럴 때 ConfigMap을 사용해서 값을 넣어놓고, 환경별로 다른 설정정보를 읽어오도록 처리할 수 있다. 즉, 컨테이너에서 필요한 환경 설정 내용을 컨테이너와 분리해서 제공해주기 위한 기능. [ConfigMap의 종류] Literal ConfigMap을 yml파일에 정의하거나 CLI를 통해 직접 생성하는 방법 kubectl create configmap [configmap 이름] --..

Kubernetes 2022.12.06

Kubernetes Ingress?

[Ingress, Egress 개념] 네트워크 트래픽은 Ingress, Egress로 구분된다. - Ingress: 외부로부터 서버로 유입되는 트래픽 - Egress: 서버 내부에서 외부로 나가는 트래픽 쿠버네티스에도 Ingress라는 개념이 존재한다. 즉, Ingress 트래픽을 어떻게 처리할지 결정한다. Ingress를 사용하지 않았을 경우 외부 트래픽을 처리하는 방법은 "포트번호, 외부IP" 등으로 구분할 수 있으나 세부적인 처리로직을 구현하기에는 한계가 있다고 한다. Ingress를 통해서 L7 수준의 요청처리를 할 수 있다고 한다. ex) 로드밸런싱, TLS/SSL 인증서 처리, 특정 HTTP경로의 라우팅 [쿠버네티스에서 Ingress 적용하기] 쿠버네티스에서 Ingress를 적용하려면 2가지가..

Kubernetes 2022.11.02