8.7. 외부 프로젝트 트래픽의 정적 IP 활성화
클러스터 관리자는 트래픽을 외부에서 쉽게 인식할 수 있도록 특정 정적 IP 주소를 프로젝트에 할당할 수 있습니다. 특정 대상에 트래픽을 보내는 데 사용되는 기본 출력 라우터와는 다릅니다.
인식할 수 있는 IP 트래픽은 출처가 표시되는지 확인하여 클러스터 보안을 강화합니다. 활성화되면 지정된 프로젝트에서 나가는 모든 외부 연결이 동일한 고정 소스 IP를 공유합니다. 즉, 모든 외부 리소스가 트래픽을 인식할 수 있습니다.
출력 라우터와 달리 이는 EgressNetworkPolicy
방화벽 규칙의 영향을 받습니다.
클러스터의 프로젝트에 고정 IP 주소를 할당하려면 SDN에서 ovs-networkpolicy 또는 ovs- multitenant 네트워크 플러그인을 사용해야 합니다.
다중 테넌트 모드에서 OpenShift SDN을 사용하는 경우 연결된 프로젝트에 의해 다른 네임스페이스에 조인된 네임스페이스와 함께 송신 IP 주소를 사용할 수 없습니다. 예를 들어 oc adm pod-network join-projects --to=project1 project2
명령을 실행하여 project1
및 project2
를 조인한 경우 두 프로젝트 모두 송신 IP 주소를 사용할 수 없습니다. 자세한 내용은 BZ#1645577를 참조하십시오.
정적 소스 IP를 활성화하려면 다음을 수행합니다.
원하는 IP로
NetNamespace
를 업데이트합니다.$ oc patch netnamespace <project_name> -p '{"egressIPs": ["<IP_address>"]}'
예를 들어
MyProject
프로젝트를 IP 주소 192.168.1.100에 할당하려면 다음을 수행합니다.$ oc patch netnamespace MyProject -p '{"egressIPs": ["192.168.1.100"]}'
egressIPs
필드는 배열입니다. 고가용성을 제공하기 위해egressIP
를 다른 노드에서 둘 이상의 IP 주소로 설정할 수 있습니다. 여러 송신 IP 주소가 설정되어 있으면 Pod는 목록의 첫 번째 IP를 송신에 사용하지만, 해당 IP 주소를 호스팅하는 노드가 실패하면 Pod는 잠시 후 목록의 다음 IP를 사용하도록 전환됩니다.원하는 노드 호스트에 송신 IP를 수동으로 할당합니다. 노드 호스트의
HostSubnet
오브젝트에서egressIPs
필드를 설정합니다. 해당 노드 호스트에 할당하려는 만큼의 IP를 포함합니다.$ oc patch hostsubnet <node_name> -p \ '{"egressIPs": ["<IP_address_1>", "<IP_address_2>"]}'
예를 들어
node1
에 송신 IP 192.168.1.100, 192.168.1.101 및 192.168.1.102가 있어야 한다고 설정하려면 다음을 실행합니다.$ oc patch hostsubnet node1 -p \ '{"egressIPs": ["192.168.1.100", "192.168.1.101", "192.168.1.102"]}'
중요송신 IP는 기본 네트워크 인터페이스에서 추가 IP 주소로 구현되며 노드의 기본 IP와 동일한 서브넷에 있어야 합니다. 또한 ifcfg-eth0 과 같은 Linux 네트워크 구성 파일에 외부 IP를 구성해서는 안 됩니다.
기본 네트워크 인터페이스에서 추가 IP 주소를 허용하려면 일부 클라우드 또는 VM 솔루션을 사용할 때 추가 구성이 필요할 수 있습니다.
위가 프로젝트에 대해 활성화되면 해당 프로젝트의 모든 송신 트래픽이 해당 송신 IP를 호스팅하는 노드로 라우팅된 다음 NAT를 사용하여 해당 IP 주소에 연결됩니다. egressIPs
가 NetNamespace
에 설정되어 있지만 해당 송신 IP를 호스팅하는 노드가 없는 경우 네임스페이스의 송신 트래픽이 삭제됩니다.