ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ServiceEntry는 네임스페이스마다 설정이 필요한가?
    Kubernetes 2025. 3. 13. 13:53
    728x90

    ❓ ServiceEntry는 네임스페이스마다 설정해야 하나?

    👉 아니요, 반드시 네임스페이스마다 설정할 필요는 없습니다.
    👉 하지만, ServiceEntry의 적용 범위는 리소스를 정의한 네임스페이스에 따라 달라질 수 있음.


    1️⃣ ServiceEntry의 네임스페이스 적용 범위

    설정 위치적용 대상특징
    공용 네임스페이스 (예: istio-system) 모든 네임스페이스의 Pod에서 사용 가능 클러스터 전체에서 외부 서비스 접근 가능
    특정 네임스페이스 (예: app-namespace) 해당 네임스페이스의 Pod에서만 사용 가능 네임스페이스 별로 개별 설정 필요

    2️⃣ ServiceEntry 적용 범위에 따른 예제

    1. 클러스터 전체에서 공유 (istio-system 네임스페이스에 설정)

    👉 모든 네임스페이스의 Pod가 api.external-service.com에 접근 가능.

    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: external-api
      namespace: istio-system  # 클러스터 전역에서 사용 가능
    spec:
      hosts:
      - api.external-service.com
      location: MESH_EXTERNAL
      ports:
      - number: 443
        name: https
        protocol: TLS
      resolution: DNS

     

    결과:

    • 모든 네임스페이스에서 api.external-service.com 접근 가능.
    • 하지만, Istio의 "네임스페이스 격리 정책"이 활성화되면 특정 네임스페이스에서 접근이 제한될 수도 있음.

     

    2. 특정 네임스페이스에서만 허용 (app-namespace에 설정)

    👉 특정 네임스페이스(app-namespace)의 Pod만 api.external-service.com에 접근 가능.

    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: external-api
      namespace: app-namespace  # 특정 네임스페이스에서만 사용 가능
    spec:
      hosts:
      - api.external-service.com
      location: MESH_EXTERNAL
      ports:
      - number: 443
        name: https
        protocol: TLS
      resolution: DNS

     

    결과:

    • app-namespace 내의 Pod만 api.external-service.com에 접근 가능.
    • 다른 네임스페이스의 Pod는 ServiceEntry를 별도로 설정해야 외부 서비스에 접근 가능.

     

    3️⃣ 특정 네임스페이스에서만 공유 가능하게 설정

    Istio의 Sidecar 리소스를 활용하면 특정 네임스페이스에서만 ServiceEntry를 공유할 수 있음.

    📌 Sidecar 리소스를 사용하여 특정 네임스페이스에서 ServiceEntry 공유

    apiVersion: networking.istio.io/v1beta1
    kind: Sidecar
    metadata:
      name: allow-egress
      namespace: app-namespace  # app-namespace 내부에서만 적용
    spec:
      egress:
      - hosts:
        - "./*"                 # 현재 네임스페이스의 모든 서비스 허용
        - "istio-system/*"       # istio-system의 ServiceEntry 허용

    결과:

    • istio-system 네임스페이스에 설정된 ServiceEntry를 app-namespace에서도 사용할 수 있음.

    🚀 결론

    설정 위치적용 범위설정 필요 여부
    istio-system 네임스페이스 모든 네임스페이스에서 사용 가능 ✅ 한 번만 설정하면 됨
    특정 네임스페이스 (예: app-namespace) 해당 네임스페이스에서만 사용 가능 ✅ 각 네임스페이스마다 필요
    Sidecar 리소스를 활용 특정 네임스페이스에 공유 가능 ✅ 선택적 설정

    🚀 즉, ServiceEntry를 istio-system에 설정하면 모든 네임스페이스에서 사용할 수 있지만, 네임스페이스 격리 정책이 적용된 경우 각 네임스페이스마다 따로 설정해야 할 수도 있음!

    728x90
Designed by Tistory.