Red Hat OpenShift의 네트워킹(Networking) 구조는 Kubernetes 네트워크 모델을 기반으로 하며, 내부 통신과 외부 트래픽 관리가 중요한 역할을 해. OpenShift는 기본적으로 Software-Defined Networking(SDN) 방식을 사용하며, 클러스터 내부와 외부의 워크로드를 안전하게 연결하는 다양한 네트워크 리소스를 제공해.
OpenShift 네트워크는 크게 Pod 네트워크, 서비스 네트워크, Ingress/Egress 네트워크로 나뉘어.
| 네트워크 종류 | 설명 |
|---|---|
| Pod 네트워크 | Pod 간 통신을 담당하는 네트워크 |
| Service 네트워크 | Pod를 그룹화하고 서비스 간 통신을 관리 |
| Ingress 네트워크 | 외부에서 OpenShift 내부로 들어오는 트래픽 제어 |
| Egress 네트워크 | OpenShift 내부에서 외부로 나가는 트래픽 관리 |
📌 Pod 네트워크 확인 명령어
oc get pods -o wide
실행하면 각 Pod의 IP 및 실행 중인 노드를 확인할 수 있어.
Pod는 IP가 변할 수 있기 때문에, 안정적인 접근을 위해 Service를 사용해 네트워크를 관리해야 해.
OpenShift의 Service에는 여러 가지 유형이 있어.
| 서비스 타입 | 설명 |
|---|---|
| ClusterIP (기본값) | 내부에서만 접근 가능 (외부에서 직접 접근 불가) |
| NodePort | 클러스터 외부에서 특정 포트를 통해 접근 가능 |
| LoadBalancer | 클라우드 환경에서 로드 밸런서를 통해 외부 접근 허용 |
| ExternalName | DNS 엔트리를 통해 외부 서비스와 연결 |
📌 서비스 확인 명령어
oc get svc
📌 특정 서비스 상세 보기
oc describe svc <서비스명>
OpenShift에서 외부 트래픽을 클러스터 내부로 전달하려면 Ingress 또는 Route를 사용해야 해.
oc create route 명령어로 생성 가능. 📌 기본적인 Route 생성 방식
oc expose svc <서비스명> --name=<라우트명> --hostname=<도메인>
📌 Route 확인 명령어
oc get routes
📌 Egress 정책 예제 (특정 도메인만 허용)
apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
name: allow-specific
namespace: my-namespace
spec:
egress:
- type: Allow
to:
dnsName: "example.com"
- type: Deny
to:
cidrSelector: "0.0.0.0/0"
이 설정을 하면 example.com을 제외한 모든 외부 네트워크 접속이 차단됨.
OpenShift에서는 NetworkPolicy를 활용하여 특정 Pod 간의 통신을 제어할 수 있어.
기본적으로 OpenShift에서는 모든 Pod 간 통신이 가능하지만, 보안 강화를 위해 NetworkPolicy를 적용할 수 있어.
📌 예제: 특정 네임스페이스 내에서만 Pod 통신 허용
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-namespace
namespace: my-namespace
spec:
podSelector:
matchLabels:
role: backend
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
👉 frontend 라벨이 붙은 Pod만 backend Pod와 통신할 수 있도록 설정.
📌 네트워크 정책 확인 명령어
oc get networkpolicy
OpenShift에서는 기본적으로 SDN(Software-Defined Networking)을 사용하지만, 클러스터의 네트워크 플러그인을 선택할 수도 있어.
| 네트워크 플러그인 | 설명 |
|---|---|
| OpenShift SDN (기본값) | OpenShift 기본 SDN, 간단한 네트워크 구성을 제공 |
| OVN-Kubernetes | 네트워크 격리 및 정책 적용이 강화된 네트워크 플러그인 |
| Calico / Cilium | 서드파티 네트워크 플러그인 (더 강력한 보안 및 성능) |
📌 현재 네트워크 플러그인 확인
oc get networks.operator.openshift.io -o yaml
ClusterIP, NodePort, LoadBalancer 타입을 사용하여 네트워크 관리 EgressNetworkPolicy)