Istio는 무엇입니까? Kubernetes 서비스 메시 설명

마이크로 서비스 아키텍처는 일부 문제를 해결하지만 다른 문제를 도입합니다. 애플리케이션을 독립 서비스로 분할하면 개발, 업데이트 및 확장이 간소화됩니다. 동시에 연결하고 고정 할 더 많은 움직이는 부품을 제공합니다. 로드 밸런싱, 트래픽 관리, 인증 및 권한 부여 등 모든 네트워크 서비스 관리는 엄청나게 복잡해질 수 있습니다. 

Kubernetes 클러스터의 서비스 사이에이 네트워크 공간을 통칭하는 용어는 서비스 메시 입니다. Google 프로젝트 Istio는 클러스터의 서비스 메시가 가시 덤불로 변하기 전에 관리하는 방법을 제공하는 것입니다.

서비스 메시 란 무엇입니까?

네트워크로 연결된 애플리케이션 그룹에는 주변에서 발생하는 일반적인 동작이 많이 있습니다. 예를 들어로드 밸런싱 : 네트워크 서비스 그룹이 필요하지 않은 경우는 거의 없습니다. 마찬가지로 다양한 서비스 조합을 A / B 테스트하거나 서비스 체인 전반에 걸쳐 엔드 투 엔드 인증을 설정할 수 있습니다. 이러한 동작을 통칭하여 서비스 메시 라고합니다  .

서비스 메시 관리는 서비스 자체에 맡겨서는 안됩니다. 그들 중 누구도 하향식으로 일을하기에 좋은 위치에 있지 않으며, 어쨌든 그들의 직업이되어서는 안됩니다. 서비스와 통신하는 네트워크 사이에 별도의 시스템을 두는 것이 좋습니다. 이 시스템은 두 가지 주요 기능을 제공합니다.

  1. 서비스 자체가 네트워크 트래픽 관리의 핵심 인로드 밸런싱, 라우팅, 재시도 등을 처리하지 않도록합니다.
  2. 관리자를위한 추상화 계층을 제공하여 정책 제어, 메트릭 및 로깅, 서비스 검색, TLS를 통한 안전한 서비스 간 통신 등 클러스터의 네트워크 트래픽에 대한 높은 수준의 결정을 쉽게 내릴 수 있습니다.

Istio 서비스 메시 구성 요소

Istio는 클러스터를위한 두 가지 기본 아키텍처 인 데이터 플레인컨트롤 플레인 을 제공하여 서비스 메시로 작동합니다 .

데이터 플레인은 메시에있는 서비스 간의 네트워크 트래픽을 처리합니다. 이 모든 트래픽은 네트워크 프록시 시스템에 의해 가로 채어 리디렉션됩니다. Istio의 경우 프록시는 Envoy라는 오픈 소스 프로젝트에서 제공됩니다. 데이터 플레인의 두 번째 구성 요소 인 Mixer는 Envoy에서 원격 측정 및 통계와 서비스 간 트래픽 흐름을 수집합니다.

Istio의 핵심 인 컨트롤 플레인은 데이터 플레인을 관리하고 보호합니다. 누가 누구와 언제 대화를 나누는 지와 같은 서비스에 대한 네트워크 정책을 시행하는 Envoy 프록시와 믹서를 모두 구성합니다. 또한 컨트롤 플레인은 데이터 플레인 및 모든 동작에 대해 프로그래밍 방식의 추상화 계층을 제공합니다.

세 가지 다른 Istio 서비스가 혼합을 마무리합니다.

Istio 파일럿

Istio Pilot은 컨트롤 플레인에서 제공하는 트래픽 동작에 대한 규칙을 가져와 로컬에서 관리하는 방법에 따라 Envoy에서 적용하는 구성으로 변환합니다. Pilot을 통해 Istio는 Kubernetes 외에 다른 오케스트레이션 시스템에서 작업 할 수 있지만 둘 사이에서 일관되게 작동합니다. 

이스 티오 시타델

Citadel은 서비스 간의 인증 및 ID 관리를 제어합니다.

Istio Galley

갤러리는 Istio에 대한 사용자 지정 구성을 가져와 다른 컨트롤 플레인 구성 요소에 대한 유효한 구성으로 변환합니다. 이것은 Istio가 다른 오케스트레이션 시스템을 투명하게 사용할 수 있도록하는 또 다른 요소입니다.

Istio 서비스 메시 기능

Istio가 제공하는 첫 번째이자 가장 가치있는 이점은 추상화입니다. 즉, 서비스 메시의 복잡성을 완벽하게 처리하는 방법입니다. Istio를 명령하여 프로그래밍 방식으로 메시를 변경할 수 있습니다. 메시에 연결된 서비스는 새로운 네트워크 정책이나 할당량을 따르기 위해 내부에서 다시 프로그래밍 할 필요가 없으며, 이들 사이의 네트워킹 공간도 직접 건드릴 필요가 없습니다.

또한 Istio를 사용하면 클러스터의 네트워크 구성에 대한 비파괴 적 또는 임시 변경을 수행 할 수 있습니다. 전체 또는 부분적으로 새 네트워크 레이아웃을 롤아웃하거나 새 구성에 대해 현재 구성을 A / B 테스트하려는 경우 Istio를 사용하면 하향식 방식으로이를 수행 할 수 있습니다. 비정상으로 판명 된 경우 이러한 변경 사항을 롤백 할 수도 있습니다.

세 번째 장점은 관찰 가능성입니다. Istio는 컨테이너와 클러스터 노드간에 진행되는 상황에 대한 자세한 통계 및보고를 제공합니다. 예상치 못한 문제가 있거나 정책을 준수하지 않는 사항이 있거나 변경 한 사항이 비생산적인 것으로 판명되면 즉시 문제를 확인할 수 있습니다.

Istio는 또한 서비스 메시에서 볼 수있는 일반적인 패턴을 이행하는 방법을 제공합니다. 한 가지 예는 백엔드가 문제를보고하고 적시에 요청을 수행 할 수없는 경우 서비스에 요청이 쏟아지는 것을 방지하는 방법 인 회로 차단기 패턴입니다. Istio는 표준 정책 시행 라이브러리의 일부로 회로 차단기 패턴을 제공합니다.

마지막으로 Istio는 Kubernetes와 가장 직접적이고 깊이있게 작동하지만 플랫폼 독립적으로 설계되었습니다. Istio는 Kubernetes 자체가 사용하는 것과 동일한 개방형 표준에 연결됩니다. Istio는 개별 시스템 또는 Mesos 및 Nomad와 같은 기타 오케스트레이션 시스템에서 독립 실행 형 방식으로 작업 할 수도 있습니다.

Istio를 시작하는 방법

이미 Kubernetes에 대한 경험이있는 경우 Istio를 배우는 좋은 방법은 아직 프로덕션에 없는 Kubernetes 클러스터를 가져와 Helm 차트를 통해 Istio를 설치하는 것입니다. 그런 다음 지능형 트래픽 관리 및 원격 측정과 같은 일반적인 Istio 기능을 보여주는 샘플 애플리케이션을 배포 할 수 있습니다. 이를 통해 Istio를 애플리케이션 클러스터에 서비스 메시 용으로 배포하기 전에 Istio에 대한 약간의 기초 수준의 경험을 얻을 수 있습니다.

회사의 Kubernetes 기반 OpenShift 프로젝트의 일부로 Istio에 투자 한 Red Hat은 일반적인 Istio 배포 및 관리 시나리오를 안내하는 자습서를 제공합니다.