15.2. 프로젝트의 송신 IP 구성
클러스터 관리자는 OpenShift SDN 기본 컨테이너 네트워크 인터페이스(CNI) 네트워크 공급자를 구성하여 하나 이상의 송신 IP 주소를 프로젝트에 할당할 수 있습니다.
15.2.1. 프로젝트 송신 트래픽에 대한 송신 IP 주소 할당
프로젝트의 송신 IP 주소를 구성하면 지정된 프로젝트의 모든 발신 외부 연결이 동일한 고정 소스 IP 주소를 공유합니다. 외부 리소스는 송신 IP 주소를 기반으로 특정 프로젝트의 트래픽을 인식할 수 있습니다. 프로젝트에 할당된 송신 IP 주소는 특정 목적지로 트래픽을 보내는 데 사용되는 송신 라우터와 다릅니다.
송신 IP 주소는 노드의 기본 네트워크 인터페이스에서 추가 IP 주소로 구현되며 노드의 기본 IP 주소와 동일한 서브넷에 있어야 합니다.
송신 IP 주소는 ifcfg-eth0
과 같은 Linux 네트워크 구성 파일에서 구성하지 않아야 합니다.
AWS(Amazon Web Services), GCP(Google Cloud Platform)의 송신 IP는 OpenShift Container Platform 버전 4.10 이상에서만 지원됩니다.
기본 네트워크 인터페이스에서 추가 IP 주소를 허용하려면 일부 클라우드 또는 가상 머신 솔루션을 사용할 때 추가 구성이 필요할 수 있습니다.
NetNamespace
오브젝트의 egressIPs
매개변수를 설정하여 네임스페이스에 송신 IP 주소를 지정할 수 있습니다. 송신 IP가 프로젝트와 연결된 후 OpenShift SDN을 사용하면 다음 두 가지 방법으로 송신 IP를 호스트에 할당할 수 있습니다.
- 자동 할당 방식에서는 송신 IP 주소 범위가 노드에 할당됩니다.
- 수동 할당 방식에서는 하나 이상의 송신 IP 주소 목록이 노드에 할당됩니다.
송신 IP 주소를 요청하는 네임스페이스는 해당 송신 IP 주소를 호스트할 수 있는 노드와 일치되며 송신 IP 주소가 해당 노드에 할당됩니다. egressIPs
매개변수가 NetNamespace
오브젝트에 설정되었지만 IP 주소를 송신하는 노드 호스트가 없는 경우 네임스페이스에서 송신하는 트래픽이 삭제됩니다.
노드의 고가용성은 자동입니다. 송신 IP 주소를 호스팅하는 노드에 도달할 수 없고 해당 송신 IP 주소를 호스트할 수 있는 노드가 있으면 송신 IP 주소가 새 노드로 이동합니다. 연결할 수 없는 노드가 다시 온라인 상태가 되면 송신 IP 주소가 자동으로 이동하여 노드 간에 송신 IP 주소의 균형을 조정합니다.
다음 제한 사항은 OpenShift SDN 클러스터 네트워크 공급자와 함께 송신 IP 주소를 사용하는 경우 적용됩니다.
- 동일한 노드에서 수동 할당 및 자동 할당 송신 IP 주소를 사용할 수 없습니다.
- IP 주소 범위에서 송신 IP 주소를 수동으로 할당하는 경우 해당 범위를 자동 IP 할당에 사용할 수 있도록 설정해서는 안 됩니다.
- OpenShift SDN 송신 IP 주소 구현을 사용하여 여러 네임스페이스에서 송신 IP 주소를 공유할 수 없습니다. 네임스페이스 간에 IP 주소를 공유해야 하는 경우 OVN-Kubernetes 클러스터 네트워크 공급자 송신 IP 주소 구현을 통해 여러 네임스페이스에서 IP 주소를 확장할 수 있습니다.
다중 테넌트 모드에서 OpenShift SDN을 사용하는 경우 연결된 프로젝트에 의해 다른 네임스페이스에 조인된 네임스페이스와 함께 송신 IP 주소를 사용할 수 없습니다. 예를 들어 oc adm pod-network join-projects --to=project1 project2
명령을 실행하여 project1
및 project2
를 조인한 경우 두 프로젝트 모두 송신 IP 주소를 사용할 수 없습니다. 자세한 내용은 BZ#1645577를 참조하십시오.
15.2.1.1. 자동 할당된 송신 IP 주소 사용 시 고려사항
송신 IP 주소에 자동 할당 방식을 사용할 때는 다음 사항을 고려해야 합니다.
-
각 노드의
HostSubnet
리소스의egressCIDRs
매개변수를 설정하여 노드가 호스트할 수 있는 송신 IP 주소 범위를 나타냅니다. OpenShift Container Platform은 지정한 IP 주소 범위를 기반으로HostSubnet
리소스의egressIPs
매개변수를 설정합니다.
네임스페이스의 송신 IP 주소를 호스팅하는 노드에 도달할 수 없는 경우 OpenShift Container Platform은 호환되는 송신 IP 주소 범위를 가진 다른 노드에 송신 IP 주소를 다시 할당합니다. 자동 할당 방식은 추가 IP 주소를 노드와 연결할 수 있는 유연성이 있는 환경에 설치된 클러스터에 가장 적합합니다.
15.2.1.2. 수동으로 할당된 송신 IP 주소 사용 시 고려사항
이 방법은 추가 IP 주소를 퍼블릭 클라우드 환경과 같은 노드와 연결하는 데 제한이 있을 수 있는 클러스터에 사용됩니다.
송신 IP 주소에 수동 할당 방식을 사용할 때는 다음 사항을 고려해야 합니다.
-
각 노드의
HostSubnet
리소스의egressIPs
매개변수를 설정하여 노드가 호스트할 수 있는 IP 주소를 표시합니다. - 네임스페이스당 여러 개의 송신 IP 주소가 지원됩니다.
네임스페이스에 여러 송신 IP 주소가 있고 해당 주소가 여러 노드에서 호스팅되는 경우 다음과 같은 추가 고려 사항이 적용됩니다.
- Pod가 송신 IP 주소를 호스팅하는 노드에 있는 경우 해당 pod는 항상 노드에서 송신 IP 주소를 사용합니다.
- Pod가 송신 IP 주소를 호스팅하는 노드에 없는 경우 해당 Pod는 송신 IP 주소를 임의로 사용합니다.
15.2.2. 네임스페이스에 자동으로 할당된 송신 IP 주소 구성
OpenShift Container Platform에서는 하나 이상의 노드에서 특정 네임스페이스에 대한 송신 IP 주소를 자동으로 할당할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. -
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
다음 JSON을 사용하여 송신 IP 주소로
NetNamespace
오브젝트를 업데이트합니다.$ oc patch netnamespace <project_name> --type=merge -p \ '{ "egressIPs": [ "<ip_address>" ] }'
다음과 같습니다.
<project_name>
- 프로젝트 이름을 지정합니다.
<ip_address>
-
egressIPs
배열에 대해 하나 이상의 송신 IP 주소를 지정합니다.
예를 들어
project1
을 IP 주소 192.168.1.100에 할당하고project2
를 IP 주소 192.168.1.101에 할당하려면 다음을 수행합니다.$ oc patch netnamespace project1 --type=merge -p \ '{"egressIPs": ["192.168.1.100"]}' $ oc patch netnamespace project2 --type=merge -p \ '{"egressIPs": ["192.168.1.101"]}'
참고OpenShift SDN은
NetNamespace
오브젝트를 관리하므로 기존NetNamespace
오브젝트를 수정하기만 하면 됩니다. 새NetNamespace
오브젝트를 생성하지 마십시오.다음 JSON을 사용하여 각 호스트에 대해
egressCIDRs
매개변수를 설정하여 송신 IP 주소를 호스팅할 수 있는 노드를 표시합니다.$ oc patch hostsubnet <node_name> --type=merge -p \ '{ "egressCIDRs": [ "<ip_address_range>", "<ip_address_range>" ] }'
다음과 같습니다.
<node_name>
- 노드 이름을 지정합니다.
<ip_address_range>
-
CIDR 형식의 IP 주소 범위를 지정합니다.
egressCIDRs
배열에 대해 두 개 이상의 주소 범위를 지정할 수 있습니다.
예를 들어,
node1
및node2
를 192.168.1.0에서 192.168.1.255 범위의 송신 IP 주소를 호스팅하도록 설정하려면 다음을 수행합니다.$ oc patch hostsubnet node1 --type=merge -p \ '{"egressCIDRs": ["192.168.1.0/24"]}' $ oc patch hostsubnet node2 --type=merge -p \ '{"egressCIDRs": ["192.168.1.0/24"]}'
OpenShift Container Platform은 특정 송신 IP 주소를 균형 잡힌 방식으로 사용 가능한 노드에 자동으로 할당합니다. 이 경우 송신 IP 주소 192.168.1.100을
node1
에 할당하고 송신 IP 주소 192.168.1.101을node2
에 할당하거나 그 반대의 경우도 마찬가지입니다.
15.2.3. 네임스페이스에 수동으로 할당된 송신 IP 주소 구성
OpenShift Container Platform에서 하나 이상의 송신 IP 주소를 네임스페이스와 연결할 수 있습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. -
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
원하는 IP 주소로 다음 JSON 오브젝트를 지정하여
NetNamespace
오브젝트를 업데이트합니다.$ oc patch netnamespace <project_name> --type=merge -p \ '{ "egressIPs": [ "<ip_address>" ] }'
다음과 같습니다.
<project_name>
- 프로젝트 이름을 지정합니다.
<ip_address>
-
egressIPs
배열에 대해 하나 이상의 송신 IP 주소를 지정합니다.
예를 들어,
project1
프로젝트를 IP 주소192.168.1.100
및192.168.1.101
에 할당하려면 다음을 수행합니다.$ oc patch netnamespace project1 --type=merge \ -p '{"egressIPs": ["192.168.1.100","192.168.1.101"]}'
고가용성을 제공하기 위해
egressIPs
값을 서로 다른 노드에서 둘 이상의 IP 주소로 설정합니다. 여러 송신 IP 주소가 설정되면 Pod는 모든 송신 IP 주소를 거의 동일하게 사용합니다.참고OpenShift SDN은
NetNamespace
오브젝트를 관리하므로 기존NetNamespace
오브젝트를 수정하기만 하면 됩니다. 새NetNamespace
오브젝트를 생성하지 마십시오.송신 IP를 노드 호스트에 수동으로 할당합니다. 노드 호스트의
HostSubnet
오브젝트에서egressIPs
매개변수를 설정합니다. 다음 JSON을 사용하여 해당 노드 호스트에 할당하려는 만큼의 IP 주소를 포함합니다.$ oc patch hostsubnet <node_name> --type=merge -p \ '{ "egressIPs": [ "<ip_address>", "<ip_address>" ] }'
다음과 같습니다.
<node_name>
- 노드 이름을 지정합니다.
<ip_address>
-
IP 주소를 지정합니다.
egressIPs
배열에 대해 두 개 이상의 IP 주소를 지정할 수 있습니다.
예를 들어
node1
에 송신 IP192.168.1.100
,192.168.1.101
및192.168.1.102
가 있도록 지정하려면 다음을 수행합니다.$ oc patch hostsubnet node1 --type=merge -p \ '{"egressIPs": ["192.168.1.100", "192.168.1.101", "192.168.1.102"]}'
이전 예에서
project1
의 모든 송신 트래픽은 지정된 송신 IP를 호스팅하는 노드로 라우팅된 다음 NAT(Network Address Translation)를 사용하여 해당 IP 주소에 연결됩니다.