-
ServiceEntry는 네임스페이스마다 설정이 필요한가?Kubernetes 2025. 3. 13. 13:53728x90
❓ 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'Kubernetes' 카테고리의 다른 글
Custom Pod Scheduling (0) 2025.03.21 Kubernetes Default Pod Scheduler의 스케줄링 로직 (0) 2025.03.21 Istio Egress Gateway에서 TLS 요청이 해석되는 방식 (0) 2025.03.13 Egress Gateway에서 VirtualService 설정이 필요한가? (0) 2025.03.12 istio에서 north-south traffic의 의미 (0) 2025.03.12