26.10. 리디렉션 모드에서 송신 라우터 Pod 배포
클러스터 관리자는 트래픽을 지정된 대상 IP 주소로 리디렉션하도록 구성된 송신 라우터 Pod를 배포할 수 있습니다.
26.10.1. 리디렉션 모드에 대한 송신 라우터 Pod 사양
Pod
오브젝트에서 송신 라우터 Pod에 대한 구성을 정의합니다. 다음 YAML은 리디렉션 모드에서 송신 라우터 Pod를 구성하는 데 필요한 필드를 나타냅니다.
apiVersion: v1 kind: Pod metadata: name: egress-1 labels: name: egress-1 annotations: pod.network.openshift.io/assign-macvlan: "true" 1 spec: initContainers: - name: egress-router image: registry.redhat.io/openshift4/ose-egress-router securityContext: privileged: true env: - name: EGRESS_SOURCE 2 value: <egress_router> - name: EGRESS_GATEWAY 3 value: <egress_gateway> - name: EGRESS_DESTINATION 4 value: <egress_destination> - name: EGRESS_ROUTER_MODE value: init containers: - name: egress-router-wait image: registry.redhat.io/openshift4/ose-pod
- 1
- 주석은 OpenShift Container Platform에 기본 네트워크 인터페이스 컨트롤러(NIC)에서 macvlan 네트워크 인터페이스를 생성하고 해당 macvlan 인터페이스를 Pod의 네트워크 네임스페이스로 이동하도록 지시합니다.
"true"
값을 따옴표로 묶어야 합니다. OpenShift Container Platform에서 다른 NIC 인터페이스에서 macvlan 인터페이스를 생성하려면 주석 값을 해당 인터페이스 이름으로 설정합니다. 예를 들면eth1
입니다. - 2
- 송신 라우터 Pod에서 사용하도록 예약된 노드가 있는 물리적 네트워크의 IP 주소입니다. 선택사항: 서브넷 길이를 나타내는
/24
접미사를 포함하여 로컬 서브넷 경로를 적절하게 설정할 수 있습니다. 서브넷 길이를 지정하지 않으면 송신 라우터에서EGRESS_GATEWAY
변수로 지정된 호스트에만 액세스하고 서브넷의 다른 호스트에는 액세스할 수 없습니다. - 3
- 노드에서 사용하는 기본 게이트웨이와 동일한 값입니다.
- 4
- 트래픽을 전달할 외부 서버입니다. 이 예제를 사용하면 Pod에 대한 연결이 소스 IP 주소가
192.168.12.99
인203.0.113.25
로 리디렉션됩니다.
송신 라우터 pod 사양의 예
apiVersion: v1 kind: Pod metadata: name: egress-multi labels: name: egress-multi annotations: pod.network.openshift.io/assign-macvlan: "true" spec: initContainers: - name: egress-router image: registry.redhat.io/openshift4/ose-egress-router securityContext: privileged: true env: - name: EGRESS_SOURCE value: 192.168.12.99/24 - name: EGRESS_GATEWAY value: 192.168.12.1 - name: EGRESS_DESTINATION value: | 80 tcp 203.0.113.25 8080 tcp 203.0.113.26 80 8443 tcp 203.0.113.26 443 203.0.113.27 - name: EGRESS_ROUTER_MODE value: init containers: - name: egress-router-wait image: registry.redhat.io/openshift4/ose-pod
26.10.2. 송신 대상 구성 형식
송신 라우터 Pod가 리디렉션 모드로 배포되면 다음 형식 중 하나 이상을 사용하여 리디렉션 규칙을 지정할 수 있습니다.
-
<port> <protocol> <ip_address>
- 지정된<port>
로 들어오는 연결을 지정된<ip_address>
의 동일한 포트로 리디렉션해야 합니다.<protocol>
은tcp
또는udp
입니다. -
<port> <protocol> <ip_address> <remote_port>
- 연결이<ip_address>
의 다른<remote_port>
로 리디렉션된다는 점을 제외하고는 위와 같습니다. -
<ip_address>
- 마지막 줄이 단일 IP 주소인 경우 기타 포트의 모든 연결이 이 IP 주소의 해당 포트로 리디렉션됩니다. 대체 IP 주소가 없으면 기타 포트의 연결이 거부됩니다.
이어지는 예제에서는 몇 가지 규칙이 정의됩니다.
-
첫 번째 줄에서는 트래픽을 로컬 포트
80
에서203.0.113.25
의 포트80
으로 리디렉션합니다. -
두 번째 및 세 번째 줄에서는 로컬 포트
8080
및8443
을203.0.113.26
의 원격 포트80
및443
으로 리디렉션합니다. - 마지막 줄은 이전 규칙에 지정되지 않은 모든 포트의 트래픽과 일치합니다.
설정 예
80 tcp 203.0.113.25 8080 tcp 203.0.113.26 80 8443 tcp 203.0.113.26 443 203.0.113.27
26.10.3. 리디렉션 모드에서 송신 라우터 Pod 배포
리디렉션 모드에서는 송신 라우터 Pod가 자체 IP 주소에서 하나 이상의 대상 IP 주소로 트래픽을 리디렉션하도록 iptables 규칙을 설정합니다. 예약된 소스 IP 주소를 사용해야 하는 클라이언트 pod는 대상 IP에 직접 연결하는 대신 송신 라우터의 서비스에 액세스하도록 구성해야 합니다. curl
명령을 사용하여 애플리케이션 포드에서 대상 서비스 및 포트에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.
$ curl <router_service_IP> <port>
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
- 송신 라우터 Pod를 생성합니다.
다른 Pod에서 송신 라우터 Pod의 IP 주소를 찾을 수 있도록 하려면 다음 예제와 같이 송신 라우터 Pod를 가리키는 서비스를 만듭니다.
apiVersion: v1 kind: Service metadata: name: egress-1 spec: ports: - name: http port: 80 - name: https port: 443 type: ClusterIP selector: name: egress-1
이제 Pod에서 이 서비스에 연결할 수 있습니다. 이러한 연결은 예약된 송신 IP 주소를 사용하여 외부 서버의 해당 포트로 리디렉션됩니다.