이 글은 istio 공식 문서에서 발췌한 내용들로 구성되어 있습니다.
The Istio service mesh
What is Service Mesh?
- 일반적으로 모던 어플리케이션들은 몇몇의 이산적인 비즈니스 로직을 수행하는 분산된 마이크로서비스 집합들로 설계됨
- 서비스메시는 전용 인프라 계층(dedicated infrastructure layer)이라서 자체 코드를 추가하지 않고도 observability, traffic management, security 같은 기능을 추가할 수 있음
- "서비스 메시"라는 용어는 이 패턴을 구현하는 데 사용하는 소프트웨어 유형과 해당 소프트웨어를 사용할 때 생성되는 보안 또는 네트워크 도메인을 모두 설명
- 운영 요구사항: 검색, 로드 밸런싱, 장애 복구, 메트릭 및 모니터링
- 보다 복잡한 운영 요구사항: A/B 테스트, 카나리아 배포, 속도 제한, 액세스 제어, 암호화 및 종단 간 인증
What is Istio?
Istio는 기존 분산 어플리케이션에 투명하게 끼워넣을 수 있는 오픈소스 서비스 메시입니다. 다음과 같은 강력한 기능을 제공합니다:
- TLS 암호화, 강력한 ID 기반 인증 및 권한 부여를 통해 클러스터에서 안전한 서비스 간 통신
- HTTP, gRPC, WebSocket, and TCP 트래픽에 대한 자동화된 로드밸런싱
- 풍부한 라우팅 규칙 및 retry, failover, fault injection을 활용한 세밀한 트래픽 제어
- 플러그형 정책 레이어와 액세스 제어, 속도 및 할당량 제한을 지원하는 API
- 클러스터 내의 모든 트래픽에 대한 자동화된 metrics, logs, and traces
Istio는 확장성을 위해 설계되었으며, 다양한 배포 전략을 지원합니다. Istio의 컨트롤 플레인은 Kubernetes에서 실행되며 해당 클러스터에 배포된 애플리케이션을 메시에 추가하거나 메시를 다른 클러스터로 확장하거나 Kubernetes 외부에서 실행되는 VM 또는 기타 엔드포인트를 연결할 수도 있습니다.
How it works
Istio는 두 개의 컴포넌트를 가지고 있습니다: data plane & control plane
Data plane은 서비스간 통신입니다. 서비스 메시가 없으면 네트워크는 전송되는 트래픽을 이해하지 못하며 트래픽의 유형, 발신인 또는 수신인을 기반으로 결정을 내릴 수 없습니다. Service Mesh는 프록시를 사용하여 모든 네트워크 트래픽을 가로채므로 설정한 configuration을 기반으로 하는 광범위한 애플리케이션 인식 기능을 허용합니다. Envoy 프록시는 클러스터의 서비스와 함께 배포됩니다.
Control plane은 요구되는 configuration과 서비스 뷰를 사용하고 프록시 서버를 동적으로 프로그래밍하여 규칙이나 환경이 변경되면 업데이트합니다.
Concepts
Traffic management
단일 클러스터 내 및 클러스터 간 트래픽 라우팅은 성능에 영향을 미치고 더 나은 배포 전략을 가능하게 합니다. Istio의 트래픽 라우팅 규칙을 사용하면 서비스 간의 트래픽 흐름 및 API 호출을 쉽게 제어할 수 있습니다. Istio는 circuit breaker, timeout 및 retries와 같은 서비스 수준 속성의 configuration을 단순화하고 A/B 테스트, canary 배포 및 퍼센트 기반 트래픽 분할을 통한 staged rollouts와 같은 중요한 작업을 쉽게 설정할 수 있도록 합니다.
Observability
서비스가 복잡해짐에 따라 동작과 성능을 이해하는 것이 어려워집니다. Istio는 서비스 메시 내의 모든 통신에 대한 상세한 원격 분석을 생성합니다. 이 telemetry는 서비스 동작의 observability를 제공하여 운영자가 애플리케이션의 문제를 해결하고 유지 관리하고 최적화할 수 있도록 합니다. 더군다나 애플리케이션을 변경할 필요 없이 이 계측을 거의 모두 사용할 수 있습니다. 운영자는 Istio를 통해 모니터링되는 서비스가 상호 작용하는 방식을 철저히 이해할 수 있습니다.
Istio의 telemetry에는 자세한 metrics, distributed traces 및 full access log가 포함됩니다. Istio를 사용하면 철저하고 포괄적인 서비스 메시 observability을 얻을 수 있습니다. 강력한 ID, 강력한 정책, 투명한 TLS 암호화, AAA(authentication, authorization 및 audit) 도구를 제공하여 서비스와 데이터를 보호합니다.