강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

mw50.jeong님의 프로필 이미지
mw50.jeong

작성한 질문수

여러 개의 워크로드를 지원하기 위한 istio 설정

해결된 질문

작성

·

97

0

k8s 클러스터에 Movie 서비스 외 Music 서비스를 추가하는 경우

istio에서 어떻게 해야 할지 궁금합니다

 

1) movie 서비스와 music 서비스가 서로 다른 IP를 사용하는 경우

LB에 의한 external IP를 할당해야 하는 데

ingress-gateway 를 2개 설치해야 하는 건가요 ??

여러 개 설치하는 것이 가능한지 ? 그리고 이것이 일반적인 접근인지 궁금합니다

 

2) movie 서비스와 music 서비스가 동일 IP에 서로 다른 port를 사용하는 경우

ingress-gateway 1개로 처리가 가능할 것 같은 데

gateway 나 virtualservice 를 어떤 형태로 정의해야 하는 지 궁금합니다

 

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
mw50.jeong님,

Kubernetes 클러스터에서 Istio를 사용하여 Movie 서비스와 Music 서비스를 추가하는 방법에 대해 설명드리겠습니다:

1) Movie 서비스와 Music 서비스가 서로 다른 IP를 사용하는 경우

여러 external IP를 사용하는 경우, 두 개의 ingress-gateway를 설치해야 할 수 있습니다. Istio는 여러 개의 ingress-gateway를 지원하며, 이러한 설정은 다중 테넌시 환경에서 일반적인 접근 방법입니다.
- ingress-gateway를 여러 개 설치하는 것은 가능합니다.
- 각 서비스마다 독립적인 ingress-gateway를 구성하여 서비스를 격리하고 관리할 수 있습니다.

예시:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: external-istio-ingressgateway
spec:
  components:
    ingressGateways:
    - name: istio-ingressgateway-movie
      enabled: true
      label:
        istio: ingressgateway-movie
    - name: istio-ingressgateway-music
      enabled: true
      label:
        istio: ingressgateway-music

2) Movie 서비스와 Music 서비스가 동일 IP에 서로 다른 port를 사용하는 경우

하나의 ingress-gateway를 사용해도 됩니다. 이 경우, gateway와 virtualservice를 적절히 정의하여 각 포트에 대한 라우팅 규칙을 설정하면 됩니다.

예시로 Gateway와 VirtualService를 다음과 같이 정의할 수 있습니다:

  1. Gateway 정의
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: movie-music-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
  - port:
      number: 8080  # Music service 포트
      name: http-music
      protocol: HTTP
    hosts:
    - "*"
  1. VirtualService 정의
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: movie-service
spec:
  hosts:
  - "*"
  gateways:
  - movie-music-gateway
  http:
  - match:
    - port: 80
    route:
    - destination:
        host: movie-service.default.svc.cluster.local
        port:
          number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: music-service
spec:
  hosts:
  - "*"
  gateways:
  - movie-music-gateway
  http:
  - match:
    - port: 8080
    route:
    - destination:
        host: music-service.default.svc.cluster.local
        port:
          number: 8080

이와 같이 각 서비스에 대해 개별적인 Gateway와 VirtualService를 정의하여 포트별로 라우팅을 설정할 수 있습니다.

더 자세한 정보는 Istio Documentation을 참조하시기 바랍니다.

감사합니다.

mw50.jeong님의 프로필 이미지
mw50.jeong

작성한 질문수

질문하기