Open minkukjo opened 2 years ago
서비스 간의 통신을 제어하고 관찰하는 인프라 계층
모든 서비스에 사이드카(Sidecar)로 경량 프록시를 사용해서 프록시를 통해서 각 컴포넌트가 통신할 수 있게끔 구성. 이렇게하면 서비스 메시가 모든 트래픽을 제어하고 모니터링할 수 있음
istio-system
)에 배포됨istioctl
명령어를 제공해서 이스티오 프록시를 삽입할 수 있음.
kubectl get deployment sample-deployment -o yaml | istioctl kube-inject -f - | kubectl apply -f -
sample-deployment
디플로이먼트를 yaml 형태로 추출해서Gateway
: 서비스 메시로 들어오고 나가는 트래픽의 처리방법을 구성하는 리소스. 아래 설명할 버추얼 서비스에 의존해서 트래픽을 라우팅함.VirtualService
: 라우팅 규칙 정의. 안정성과 탄력성 테스트를 위해 오류나 지연을 삽입할 수 있음.DestinationRule
: 버추얼 서비스에 의해 특정 서비스로 라우팅되는 트래픽에 대한 정책, 규칙을 정의함.Policy
: 요청 인증 방법을 정의. JWT 기반의 OAuth 2.0/OIDC 접근 토큰을 사용해 인증 할 수 있음. 전체 서비스 메시에 적용되는 글로벌 룰은 MeshPolicy
CRD를 사용함.Pilot
: 전체 사이드카로 업데이트된 서비스 메시 구성을 전달함.Mixer
: 2개의 런타임 컴포넌트로 구성됨.
Policy
: 인증, 권한 부여, 속도 제한, 할당량 제한 등의 네트워크 정책을 시행Telemetry
: 원격 측정 정보를 수집해서 프로메테우스 등으로 보냄.Gallery
: 구성 정보를 수집, 검증하고 컨트롤 플레인의 다른 이스티오 컴포넌트에 배포Citadel
: 내부에서 사용하는 인증서의 발급, 교체를 담당Kiali
: 서비스 메시 진행 중인 작업을 시각화, 검증, 트러블슈팅을 도와주는 컴포넌트. (별도의 오픈소스 프로젝트, https://kiali.io/)Prometheus
: 성능 메트릭 등등 시계열 기반 데이터를 수집해서 저장함. (별도의 오픈소스 프로젝트)Grafana
: 프로메테우스에서 수집한 성능 메트릭 및 기타 시계열 관련 테이터를 시각화함Tracing
: 분산 추적 정보를 처리하고 시각화함. (분산 추적을 위한 오픈 소스 프로젝트 Jaeger 기반)Ingress Gateway
: 서비스 메시로 들어오는 트래픽 처리Egress Gateway
: 서비스 메시로 나가는 트래픽 처리
끄적끄적
개인적인 결론