2.2. 서비스의 ExternalIP 구성
클러스터 관리자는 클러스터의 서비스로 트래픽을 보낼 수 있는 클러스터 외부의 IP 주소 블록을 지정할 수 있습니다.
이 기능은 일반적으로 베어 메탈 하드웨어에 설치된 클러스터에 가장 유용합니다.
2.2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 네트워크 인프라는 외부 IP 주소에 대한 트래픽을 클러스터로 라우팅해야 합니다.
2.2.2. ExternalIP 정보 링크 복사링크가 클립보드에 복사되었습니다!
클라우드가 아닌 환경에서 OpenShift Container Platform은 서비스 객체의 spec.externalIPs[] 매개변수에서 외부 IP 주소를 지정하기 위해 ExternalIP 기능을 사용할 수 있도록 지원합니다. ExternalIP로 구성된 서비스는 type=NodePort 인 서비스와 유사하게 작동합니다. 즉, 트래픽이 부하 분산을 위해 로컬 노드로 전송됩니다.
클라우드 배포의 경우 클라우드 로드 밸런서 자동 배포를 위한 로드 밸런서 서비스를 사용하여 서비스 끝점을 대상으로 합니다.
매개변수에 대한 값을 지정하면 OpenShift Container Platform이 서비스에 추가 가상 IP 주소를 할당합니다. IP 주소는 클러스터에 대해 정의한 서비스 네트워크 외부에 존재할 수 있습니다.
ExternalIP는 기본적으로 비활성화되어 있으므로 ExternalIP 기능을 활성화하면 클러스터 내 트래픽이 외부 IP 주소로 전달되어 해당 서비스에 보안 위험이 발생할 수 있습니다. 이 구성은 클러스터 사용자가 외부 리소스를 대상으로 하는 중요한 트래픽을 가로챌 수 있음을 의미합니다.
다음과 같은 방법으로 MetalLB 구현이나 IP 장애 조치 배포를 사용하여 ExternalIP 리소스를 서비스에 연결할 수 있습니다.
- 외부 IP 자동 할당
-
OpenShift Container Platform에서는
spec.type=LoadBalancer가 설정된Service오브젝트를 생성할 때autoAssignCIDRsCIDR 블록의 IP 주소를spec.externalIPs[]배열에 자동으로 할당합니다. 이 구성의 경우, OpenShift Container Platform은 로드 밸런서 서비스 유형의 클라우드 버전을 구현하고 서비스에 IP 주소를 할당합니다. 자동 할당은 기본적으로 비활성화되어 있으며 "ExternalIP 구성" 섹션에 설명된 대로 클러스터 관리자가 구성해야 합니다. - 외부 IP 수동 할당
-
OpenShift Container Platform에서는
Service오브젝트를 생성할 때spec.externalIPs[]배열에 할당된 IP 주소를 사용합니다. 다른 서비스에서 이미 사용 중인 IP 주소는 지정할 수 없습니다.
MetalLB 구현이나 IP 장애 조치 배포를 사용하여 외부 IP 주소 블록을 호스팅한 후에는 외부 IP 주소 블록이 클러스터로 라우팅되도록 네트워킹 인프라를 구성해야 합니다. 이 구성은 노드의 네트워크 인터페이스에 IP 주소가 구성되지 않았음을 의미합니다. 트래픽을 처리하려면 정적 주소 확인 프로토콜(ARP) 항목과 같은 방법을 사용하여 외부 IP에 대한 라우팅과 액세스를 구성해야 합니다.
OpenShift Container Platform은 다음 기능을 추가하여 Kubernetes의 ExternalIP 기능을 확장합니다.
- 구성 가능한 정책을 통해 사용자가 외부 IP 주소 사용 제한
- 요청 시 서비스에 자동으로 외부 IP 주소 할당
2.2.3. ExternalIP 구성 링크 복사링크가 클립보드에 복사되었습니다!
Network.config.openshift.io 사용자 지정 리소스(CR)의 다음 매개변수는 OpenShift Container Platform에서 외부 IP 주소 사용을 제어합니다.
-
spec.externalIP.autoAssignCIDRs는 서비스에 대한 외부 IP 주소를 선택할 때 로드 밸런서에서 사용하는 IP 주소 블록을 정의합니다. OpenShift Container Platform에서는 자동 할당에 대해 하나의 IP 주소 블록만 지원합니다. 이 구성은 제한된 수의 공유 IP 주소에 대한 포트 공간을 관리해야 하는 서비스에 ExternalIP를 수동으로 할당하는 것보다 단계가 덜 필요합니다. 자동 할당을 활성화하면 Cloud Controller Manager Operator가 구성에서spec.type=LoadBalancer로 정의된서비스개체에 외부 IP 주소를 할당합니다. -
spec.externalIP.policy는 IP 주소를 수동으로 지정할 때 허용되는 IP 주소 블록을 정의합니다. OpenShift Container Platform은spec.externalIP.autoAssignCIDRs매개변수에서 정의한 IP 주소 블록에 정책 규칙을 적용하지 않습니다.
올바르게 라우팅되면 구성된 외부 IP 주소 블록의 외부 트래픽이 서비스에서 노출하는 TCP 또는 UDP 포트를 통해 서비스 끝점에 도달할 수 있습니다.
클러스터 관리자는 외부 IP로의 라우팅을 구성해야 합니다. 할당하는 IP 주소 블록이 해당 클러스터의 노드 1개 이상에서 종료되어야 합니다. 자세한 내용은 Kubernetes 외부 IP를 참조하세요.
OpenShift Container Platform은 자동 및 수동 IP 주소 할당을 모두 지원합니다. 이 지원은 각 주소가 최대 하나의 서비스에만 할당되고, 각 서비스는 다른 서비스에서 노출된 포트에 관계없이 선택한 포트를 노출할 수 있음을 보장합니다.
OpenShift Container Platform에서 autoAssignCIDR로 정의된 IP 주소 블록을 사용하려면 호스트 네트워크에 필요한 IP 주소 할당 및 라우팅을 구성해야 합니다.
다음 YAML에서는 외부 IP 주소가 구성된 서비스를 설명합니다.
spec.externalIPs[]가 설정된 Service 오브젝트의 예
클라우드 제공자 플랫폼에서 개인 클러스터를 실행하는 경우 다음 패치 명령을 실행하여 Ingress Controller의 로드 밸런서에 대한 게시 범위를 내부로 변경할 수 있습니다.
oc -n openshift-ingress-operator patch ingresscontrollers/ingress-controller-with-nlb --type=merge --patch='{"spec":{"endpointPublishingStrategy":{"loadBalancer":{"scope":"Internal"}}}}'
$ oc -n openshift-ingress-operator patch ingresscontrollers/ingress-controller-with-nlb --type=merge --patch='{"spec":{"endpointPublishingStrategy":{"loadBalancer":{"scope":"Internal"}}}}'
이 명령을 실행하면 Ingress Controller는 OpenShift Container Platform 애플리케이션의 경로에 대한 액세스를 내부 네트워크로만 제한합니다.
2.2.4. 외부 IP 주소 할당 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 서비스에 대한 IP 주소를 허용하거나 거부하기 위해 IP 주소 블록을 지정할 수 있습니다. 제한 사항은 cluster-admin 권한이 없는 사용자에게만 적용됩니다. 클러스터 관리자는 서비스 spec.externalIPs[] 필드를 IP 주소로 항상 설정할 수 있습니다.
정책 개체의 spec.ExternalIP.policy 매개변수에 대해 CIDR(Classless Inter-Domain Routing) 주소 블록을 지정하여 IP 주소 정책을 구성합니다.
정책 객체와 CIDR 매개변수의 JSON 형식 예
정책 제한을 구성할 때는 다음 규칙이 적용됩니다.
-
정책이{}로 설정된 경우spec.ExternalIPs[]로서비스객체를 생성하면 서비스가 실패합니다. 이 설정은 OpenShift Container Platform의 기본값입니다.policy: null에도 동일한 동작이 있습니다. policy가 설정되고policy.allowedCIDRs[]또는policy.rejectedCIDRs[]가 설정된 경우 다음 규칙이 적용됩니다.-
allowedCIDRs[]및rejectedCIDRs[]가 둘 다 설정된 경우rejectedCIDRs[]가allowedCIDRs[]보다 우선합니다. -
allowedCIDRs[]가 설정된 경우 지정된 IP 주소가 허용되는 경우에만spec.ExternalIPs[]를 사용하여Service를 생성할 수 있습니다. -
rejectedCIDRs[]가 설정된 경우 지정된 IP 주소가 거부되지 않는 경우에만spec.ExternalIPs[]를 사용하여Service를 생성할 수 있습니다.
-
2.2.5. 정책 오브젝트의 예 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션의 예에서는 다양한 spec.externalIP.policy 구성을 보여줍니다.
다음 예에서 정책은 OpenShift Container Platform에서 외부 IP 주소가 지정된 서비스를 생성하지 못하도록 합니다.
Service오브젝트spec.externalIPs[]에 지정된 값을 거부하는 정책의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예에서는
allowedCIDRs및rejectedCIDRs필드가 모두 설정되어 있습니다.허용되거나 거부된 CIDR 블록을 모두 포함하는 정책의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예에서는
policy가null로 설정됩니다. 이 구성을 사용하면oc get networks.config.openshift.io -o yaml명령을 사용하여 구성을 볼 때정책매개변수가 명령 출력에 표시되지 않습니다.policy: null에도 동일한 동작이 있습니다.Service오브젝트spec.externalIPs[]에 지정된 값을 허용하는 정책의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.6. ExternalIP 주소 블록 구성 링크 복사링크가 클립보드에 복사되었습니다!
ExternalIP 주소 블록에 대한 구성은 cluster라는 네트워크 CR(사용자 정의 리소스)에 의해 정의됩니다. 네트워크 CR은 config.openshift.io API 그룹의 일부입니다.
CVO(Cluster Version Operator)는 클러스터를 설치하는 동안 cluster라는 네트워크 CR을 자동으로 생성합니다. 이 유형의 다른 CR 오브젝트는 생성할 수 없습니다.
다음 YAML에서는 ExternalIP 구성을 설명합니다.
cluster라는 Network.config.openshift.io CR
다음 YAML에서는 policy 스탠자의 필드를 설명합니다.
Network.config.openshift.io policy 스탠자
policy: allowedCIDRs: [] rejectedCIDRs: []
policy:
allowedCIDRs: []
rejectedCIDRs: []
2.2.6.1. 외부 IP 구성의 예 링크 복사링크가 클립보드에 복사되었습니다!
외부 IP 주소 풀에 사용 가능한 몇 가지 구성이 다음 예에 표시되어 있습니다.
다음 YAML에서는 자동으로 할당된 외부 IP 주소를 사용하는 구성을 설명합니다.
spec.externalIP.autoAssignCIDRs가 설정된 구성의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 YAML에서는 허용되거나 거부된 CIDR 범위에 대한 정책 규칙을 구성합니다.
spec.externalIP.policy가 설정된 구성의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.7. 클러스터에 대한 외부 IP 주소 블록 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 다음 ExternalIP 설정을 구성할 수 있습니다.
-
Service오브젝트의spec.clusterIP필드를 자동으로 채우도록 OpenShift Container Platform에서 사용하는 ExternalIP 주소 블록입니다. -
Service오브젝트의spec.clusterIP배열에 수동으로 할당할 수 있는 IP 주소를 제한하는 정책 오브젝트입니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
선택 사항: 현재 외부 IP 구성을 표시하려면 다음 명령을 입력합니다.
oc describe networks.config cluster
$ oc describe networks.config clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성을 편집하려면 다음 명령을 입력합니다.
oc edit networks.config cluster
$ oc edit networks.config clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이 ExternalIP 구성을 수정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
externalIP스탠자에 대한 구성을 지정합니다.
업데이트된 ExternalIP 구성을 확인하려면 다음 명령을 입력합니다.
oc get networks.config cluster -o go-template='{{.spec.externalIP}}{{"\n"}}'$ oc get networks.config cluster -o go-template='{{.spec.externalIP}}{{"\n"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow