개념 살펴보기
- Service
- Pod 집합에 대한 네트워크 접근을 추상화 한다.
- Pod는 동적으로 생성/삭제 되므로, Service가 고정된 엔드포인트 역할을 한다.
- 주요 타입 : ClusterIP, NodePort, LoadBalancer
- Ingress
- HTTP/HTTPS 트래픽을 L7 단에서 제어한다
- 여러 Service를 하나의 진입점으로 묶고 라우팅 규칭을 적용한다.
- Route(OpenShift 전용)
- Ingress와 유사하지만 OpenShift에서 기본 제공하는 리소스
- 클러스터 외부에서 Pod/Service 접근을 위해 사용한다
- 기본적으로 TLS 지원 가능하지만 이번 단원에서는 비 TLS 일반 Route만 다룬다.
리소스별 설명
Service
- 역할
- Pod 집합을대표하는 네트워크 엔드포인트 제공
- 특징
- Pod IP는 바뀌지만 Service IP는 고정
- DNS 이름 자동 부여(
<service>.<namespace>.svc.cluster.local)
- 타입
- ClusterIP: (기본값) 클러스터 내부의 Pod 간 통신을 담당하는 역할. 외부에서 접근 불가
- NoePort : 클러스터 외부에서 Node의 특정 포트 ( 30000~32767)를 통해 Pod로 연결하는 역할. 외부 로드밸런서가 없는 환경에서 테스트용으로 사용
- LoadBalancer : 클라우드 환경(AWS, GCP, Azure 등)에서 사용. 외부 로드밸런서가 자동으로 생성되어 IP 부여
- ExternalName : Service를 외부 도메인으로 매핑. 실제 Endpoint 없이 CNAME('Canonical Name’) 형식으로 동작. 외부 DB 또는 API 등을 Service 이름으로 접근할 때 사용
.png)
# demo-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-svc
spec:
selector:
app: demo
ports:
- port: 80
targetPort: 80
type: ClusterIP