Tags
- SQL
- 17-55
- 군산
- CS231n
- 수요미식회
- 제주도
- 여행
- 대만
- k-디지털트레이닝
- 축복렌즈
- 시청
- 우리에프아이에스
- 오사카
- 맛집
- ai_엔지니어링
- 축복이
- 해리포터
- 글로벌소프트웨어캠퍼스
- 전시
- 650d
- 도쿄
- 건담
- 사진
- 우리fis아카데미
- Python
- 대만여행
- 카페
- 전주
- fdr-x3000
- 우리fisa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Today
- Total
Recent Posts
300x250
브렌쏭의 Veritas_Garage
[Istio] Make 'Kubernetes's Network' Great Again! 본문
Istio란?
Istio는 쿠버네티스(Kubernetes)와 같은 마이크로서비스 아키텍처에서 네트워크 연결을 효율적으로 관리하기 위해 설계된 오픈 소스 서비스 메쉬(Service Mesh) 솔루션입니다. Istio를 도입하면 복잡한 분산 네트워크 환경에서 각 애플리케이션 간의 트래픽을 제어하고 보안을 강화하며, 로깅 및 모니터링을 쉽게 구현할 수 있습니다. 이를 통해 쿠버네티스의 복잡성을 줄이고, 애플리케이션 개발 및 운영을 간소화할 수 있습니다.
Istio의 아키텍처
Istio는 Data Plane과 Control Plane이라는 두 가지 주요 구성 요소로 나뉩니다.
1. Data Plane
- 실제로 애플리케이션 트래픽을 처리하는 부분으로, 각 서비스에 Sidecar 형태로 배포된 Envoy Proxy가 이 역할을 담당합니다.
- Envoy: 경량화된 L7 전용 프록시로, HTTP, TCP 등의 프로토콜을 지원하며, Circuit Breaker, Retry, Timeout 등의 기능을 제공합니다.
2. Control Plane
- Data Plane을 제어하는 구성 요소들로 구성됩니다. 이는 Istio의 중요한 기능을 담당하는 여러 컴포넌트를 포함합니다.
- Pilot: Envoy에 대한 설정을 관리하고, 서비스 디스커버리, 트래픽 관리, 헬스 체크, 로드 밸런싱 등을 담당합니다.
- Mixer: 서비스 간의 접근 제어 및 정책을 관리하며, 서비스 메쉬 전반에 걸쳐 모니터링 지표를 수집합니다. (최신 버전에서는 Pilot에 통합)
- Citadel: 보안 기능을 담당하며, 인증서 관리와 통신 암호화(TLS)를 지원합니다.
- Galley: Istio 구성 요소의 설정을 검증하고 관리합니다.
Istio의 주요 기능
1. 트래픽 관리
- Istio는 버전 간 트래픽 분할, 컨텐츠 기반의 트래픽 라우팅 등의 기능을 제공하여, 서비스의 배포 및 운영 중에도 네트워크 트래픽을 정교하게 제어할 수 있습니다.
- 예를 들어, 새로운 버전의 서비스로 일부 트래픽만을 전송하여 안정성을 테스트하거나, 사용자 에이전트에 따라 트래픽을 다르게 라우팅할 수 있습니다.
2. 서비스 간 안정성 제공
- Istio는 헬스 체크, 서비스 디스커버리, 재시도(Retry), 타임아웃(Timeout), Circuit Breaker 등의 기능을 통해 서비스 호출의 안정성을 높입니다.
- 장애가 발생한 서비스를 자동으로 제거하거나, 문제 발생 시 재시도 정책을 적용하여 전체 시스템의 안정성을 유지합니다.
3. 보안
- Istio는 서비스 간 통신을 기본적으로 TLS로 암호화하며, 양방향 TLS(Mutual TLS)를 통해 서비스 간 상호 인증을 수행합니다.
- JWT 토큰을 활용한 서비스와 사용자 간 인증 기능도 지원하며, 역할 기반 접근 제어(RBAC)를 통해 접근 권한을 세밀하게 관리할 수 있습니다.
4. 모니터링
- Istio는 네트워크 트래픽을 모니터링하고, 각 서비스 간의 호출 관계, 응답 시간, 처리량 등의 다양한 지표를 수집하여 모니터링할 수 있습니다.
- 이러한 지표는 Logging Backend에 저장되며, 운영 인프라에 맞춘 플러그인 아답터 구조로 쉽게 변환이 가능합니다.
Istio와 Kubernetes의 관계
Istio와 Kubernetes(K8s)는 마이크로서비스 아키텍처를 지원하기 위한 두 가지 핵심 기술로, 서로 상호 보완적인 역할을 합니다. Kubernetes는 컨테이너화된 애플리케이션을 관리하기 위한 오케스트레이션 플랫폼이며, Istio는 이러한 애플리케이션 간의 네트워크 트래픽을 제어하고 보안을 강화하는 서비스 메쉬입니다.
Kubernetes와 Istio의 기본 역할
- Kubernetes (K8s):
- Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 운영을 자동화하는 오케스트레이션 플랫폼입니다.
- 주요 기능에는 컨테이너의 스케줄링, 서비스 디스커버리, 로드 밸런싱, 자동 복구(self-healing), 자동 확장 등이 포함됩니다.
- Kubernetes는 다양한 클러스터 리소스를 관리하고, 이를 통해 애플리케이션이 안정적으로 실행되도록 보장합니다.
- Istio:
- Istio는 Kubernetes 환경에서 서비스 간의 통신을 관리하고, 네트워크 트래픽의 세부 제어, 보안, 관찰성(observability) 기능을 제공합니다.
- Istio는 서비스 간 통신을 위한 프록시 레이어를 추가하여, 트래픽 관리, 보안, 로깅, 모니터링을 수행합니다.
- Istio는 Kubernetes 클러스터 내에서 실행되는 각 서비스의 네트워크 연결을 관리하고, 복잡한 마이크로서비스 환경에서 운영을 간소화합니다.
Kubernetes와 Istio의 상호 관계
1. 서비스 디스커버리
- Kubernetes는 자체적으로 서비스 디스커버리를 지원하여 클러스터 내에서 실행 중인 서비스들을 발견하고 연결할 수 있습니다.
- Istio는 이 기능을 확장하여, 더 세밀한 트래픽 제어와 라우팅 정책을 적용할 수 있도록 합니다.
- 예를 들어, Istio는 서비스의 특정 버전으로만 트래픽을 라우팅하거나, 특정 조건에 따라 트래픽을 분기하는 기능을 제공합니다.
2. 네트워크 관리
- Kubernetes는 클러스터 내의 네트워크 연결을 기본적인 수준에서 관리하지만, Istio는 네트워크 트래픽을 더 세밀하게 제어할 수 있습니다.
- Istio는 트래픽의 리트라이, 타임아웃, Circuit Breaker와 같은 고급 네트워크 제어 기능을 제공합니다.
- Istio는 각 서비스에 Envoy Sidecar Proxy를 주입하여, 모든 네트워크 트래픽이 이 프록시를 통과하도록 하고, 이를 통해 다양한 네트워크 정책을 실행할 수 있습니다.
3. 보안
- Kubernetes는 네임스페이스와 RBAC(Role-Based Access Control) 등을 통해 기본적인 보안 관리를 제공합니다. 그러나 Istio는 서비스 간 통신에 대한 추가적인 보안 계층을 제공합니다.
- Istio는 Mutual TLS(mTLS)를 통해 서비스 간 통신을 암호화하고, 서비스 간의 상호 인증을 수행합니다. 또한 JWT 토큰을 활용한 사용자 인증 및 서비스 간 권한 제어 기능도 제공합니다.
4. 모니터링 및 로깅
- Kubernetes는 기본적으로 컨테이너와 포드의 상태 모니터링을 수행하지만, Istio는 서비스 간의 호출 관계와 네트워크 트래픽을 더 상세하게 모니터링할 수 있는 기능을 제공합니다.
- Istio는 서비스 메쉬 내의 모든 트래픽을 관찰하고, 이 정보를 기반으로 분석, 로깅, 모니터링을 수행합니다. 이를 통해 운영자는 서비스 간의 의존성, 트래픽 흐름, 성능 이슈 등을 명확히 파악할 수 있습니다.
5. 배포 전략 지원
- Kubernetes는 롤링 업데이트나 블루-그린 배포와 같은 배포 전략을 지원합니다. Istio는 이와 함께 카나리 배포나 A/B 테스팅과 같은 더 정교한 트래픽 분할 및 배포 전략을 지원합니다.
- Istio는 트래픽의 일부만을 새 버전의 서비스로 라우팅하는 등의 기능을 통해 새로운 버전의 안정성을 검증하는 데 도움이 됩니다.
Istio와 Kubernetes의 통합
Istio는 Kubernetes 환경에서 원활하게 동작하도록 설계되었습니다. Istio는 Kubernetes 클러스터 내에 설치되며, 클러스터의 모든 네임스페이스에 걸쳐 작동할 수 있습니다. Istio는 Kubernetes의 기본 네트워킹 기능을 확장하여 더 강력한 서비스 메쉬 기능을 제공하며, Kubernetes의 네이티브 기능과 잘 통합됩니다.
- Istio 설치: Istio는 Helm 차트나 Istioctl과 같은 도구를 통해 Kubernetes 클러스터에 쉽게 설치할 수 있습니다.
- 자동 사이드카 주입: Istio는 Kubernetes의 웹훅(Webhook)을 사용하여 각 서비스의 Pod에 Envoy 사이드카 프록시를 자동으로 주입할 수 있습니다. 이를 통해 애플리케이션 코드를 수정하지 않고도 Istio의 기능을 활용할 수 있습니다.
- Kubernetes와의 연동: Istio는 Kubernetes의 네이티브 리소스(예: Service, Ingress)를 인식하고, 이를 기반으로 트래픽 관리 및 정책을 설정할 수 있습니다.
'[Project_하다] > [Project_공부]' 카테고리의 다른 글
[Cloud Platform] 금융권 트렌드 (0) | 2024.08.11 |
---|---|
[RAG] Elastic as Vector Store (0) | 2024.08.10 |
[Istio] 작동 흐름과 기능 (0) | 2024.08.10 |
[K8s] 컨테이너 오케스트레이션 (0) | 2024.08.10 |
[Linux] 리눅스 권한 (4) | 2024.08.09 |
[Linux_Shell] 존재 여부만 알아두면 나중에 쓸모있을 정보 (0) | 2024.08.08 |
[Linux] 대충 잊어먹기 쉬운 것들 (0) | 2024.08.07 |
Comments