웹사이트 검색

Istio의 트래픽 관리 - 상세 가이드


안녕하세요, 독자 여러분! 이 기사에서는 Istio의 트래픽 관리와 해당 리소스에 대해 자세히 설명합니다.

그럼 시작하겠습니다!!

또한 읽기: Kubernetes 클러스터에 Istio 설치

트래픽 관리란 무엇입니까?

트래픽 관리는 데이터/브라우징 전송 또는 API 호출의 일부로 생성된 트래픽을 관리하는 것을 말합니다.

온프레미스 서버 또는 클라우드를 통해 설정된 애플리케이션이 있는 경우 해당 애플리케이션이 특정 API 호출 또는 다른 타사 엔터티의 서비스에 대한 호출을 시도하거나 인터넷을 통한 데이터 전송을 시도할 때 트래픽이 생성됩니다.

데이터는 모든 애플리케이션의 중요하고 취약한 측면이며 인프라는 설정의 루트입니다. 보안 인프라를 통해 인터넷 트래픽을 모니터링해야 합니다. 이를 통해 동일한 플랫폼/인프라에서 서비스의 보안 및 관리가 향상됩니다.

계속해서 다음 섹션에서 트래픽 관리 도구로 Istio를 살펴보겠습니다.

트래픽 관리 도구로서의 Istio

Istio는 제공하는 트래픽 라우팅 규칙을 통해 트래픽 관리를 소개합니다. 응용 프로그램은 오류에 대한 복원력이 향상됩니다. 인터넷을 통해 애플리케이션을 오가는 모든 트래픽을 모니터링하기 때문입니다.

Istio는 Envoy 프록시를 애플리케이션 컨테이너에 대한 사이드카로 구성합니다. API 호출/서비스 참여 등을 위해 애플리케이션 팟에서 라우팅되는 모든 트래픽을 모니터링합니다.

이를 통해 기본 애플리케이션 서비스는 영향을 받지 않고 전체 트래픽 모니터링은 복원력 및 트래픽 관리를 위해 Envoy 사이드카를 통해 프록시됩니다.

  1. Istio는 트래픽을 모니터링하기 위해 애플리케이션의 엔드포인트를 이해해야 합니다. 따라서 애플리케이션의 엔드포인트뿐만 아니라 서비스를 인식하기 위해 내부적으로 서비스 검색 시스템에 연결됩니다.
  2. 따라서 네트워크 호출이 애플리케이션에 도달하면 Envoy 프록시를 통해 라우팅된 다음 최종적으로 애플리케이션의 최종 서비스로 라우팅됩니다. 따라서 사이드카는 애플리케이션의 트래픽을 완전히 렌더링하고 모니터링합니다.
  3. Istio는 라운드 로빈 모델을 사용하여 인프라 내에 설정된 로드 밸런서에 트래픽을 전송하거나 분산합니다.

Istio 트래픽 관리 리소스

Istio가 트래픽 관리 도구로 작동하는 것을 이해했으면 Istio에서 설정한 리소스를 탐색하도록 알려주세요.

1. 가상 서비스

가상 서비스를 사용하면 애플리케이션이 로드 밸런서에 도달하는 동안 도움이 될 수 있는 트래픽 라우팅 규칙을 정의할 수 있습니다. 최종 서비스에 대한 규칙 및 동등한 일치 프로토콜을 정의합니다. 규칙이 기준과 일치하면 트래픽이 최종 서비스로 전환됩니다.

가상 서비스를 사용하면 트래픽 라우팅 규칙을 통해 서비스 요청을 분리하여 트래픽 부하를 쉽게 관리할 수 있습니다. 동일한 가상 서비스 구성 내에서 여러 호스트 이름에 대한 트래픽 동작을 지정하고 유지할 수 있습니다.

이제 가상 서비스 구성의 아래 예를 이해하겠습니다.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-vs
spec:
  hosts:
  - demo.vs.com
  http:
  - match:
    - headers:
        end-user:
          exact: /api
    route:
    - destination:
        host: /

설명-

  • 호스트 항목에는 애플리케이션의 도메인 또는 CNAME이 포함됩니다.
  • 그런 다음 http 라우팅을 통해 캐스케이드 다운하고 특정 호스트/대상에 일치하는 백엔드 서비스를 구성합니다.
  • 일치 섹션 아래에는 호스트 항목이 일치하는 즉시 호출되는 백엔드 서비스 구성이 있습니다.
  • http 섹션에는 대상으로 리디렉션되는 라우팅 규칙이 포함됩니다.
  • 웹 트래픽/요청이 Istio 게이트웨이에 도달하는 즉시 CNAME/FQDN 항목을 찾습니다. 일치에 성공하면 트래픽을 특정 대상 k8 서비스로 라우팅하는 가상 서비스로 이동합니다.

2. 게이트웨이

게이트웨이를 사용하면 글로벌(특사) 수준에서 인바운드 및 아웃바운드 트래픽을 제어하고 모니터링할 수 있는 유연성이 제공됩니다. 대상으로의 추가 라우팅을 위해 Istio 서비스 메시에 들어가게 하려는 트래픽 종류(프로토콜/규칙)를 지정할 수 있습니다.

따라서 애플리케이션 URL이 로드 밸런서에 도달하는 즉시 동등한 게이트웨이를 검색합니다. 항목을 찾는 즉시 애플리케이션 호스트가 메시에 들어갈 수 있습니다.

아래 예를 통해 게이트웨이의 작동을 이해해 보겠습니다.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: demo-gtwy
spec:
  selector:
    app: demo
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - demo.vs.com
    tls:
      mode: SIMPLE
      credentialName: demo-tls-cert

설명:

  • 웹 트래픽이 로드 밸런서에 도달하는 즉시 Istio 게이트웨이로 라우팅됩니다. 게이트웨이를 사용하면 트래픽이 멘션 포트(이 경우 443)를 통해 서비스 메시에 들어갈 수 있습니다.
  • 하지만 이 단계에서는 백엔드 서비스로 트래픽 라우팅이 발생하지 않습니다.
  • 게이트웨이는 TLS 비밀(자격 증명)을 통해 CNAME의 신뢰성을 찾습니다.
  • 게이트웨이가 호스트에서 들어오는 트래픽을 확인하고 허용하면 가상 서비스가 주도권을 잡고 대상 서비스로 라우팅을 수행합니다.

3. 사이드카

사이드카를 사용하면 Envoy 프록시에 도달하는 트래픽을 제한하고 관리할 수 있습니다. 일반적인 방식으로 Istio는 애플리케이션의 워크로드와 연결된 포트에서 트래픽을 수락하는 Envoy 프록시를 구성합니다. 사이드카를 배치하면 다음과 같은 이점이 있습니다.

  • Envoy가 수락해야 하는 프로토콜과 포트를 필터링하고 관리할 수 있습니다.
  • 또한 Envoy 프록시가 특정 서비스 집합에 도달하거나 트래픽을 전달하지 못하도록 필터링하고 제한할 수 있습니다.
  • 서로 다른 네임스페이스 내의 서비스에 대한 트래픽을 허용/제한할 수 있습니다.

이제 아래 예를 사용하여 사이드카의 개념을 이해해 보겠습니다.

apiVersion: networking.istio.io/v1alpha3
kind: Sidecar
metadata:
  name: default
  namespace: default
spec:
  egress:
  - hosts:
    - "./*"
    - "bookinfo/*"

설명:

  • 위 구성으로 사이드카 구성을 기본 네임스페이스에 적용합니다.
  • 이 구성은 외부/이그레스 트래픽이 기본 및 bookinfo 네임스페이스의 백엔드 서비스에만 도달하도록 허용합니다.
  • 이를 통해 트래픽 라우팅/접근성을 다른 네임스페이스로 제한합니다.

결론

이것으로 우리는 이 주제의 끝에 접근했습니다. 궁금한 점이 있으면 아래에 의견을 남겨주세요.

Kubernetes와 관련된 더 많은 게시물을 보려면 계속 지켜봐 주시기 바랍니다.

그때까지, 행복한 학습! :)