ARO(Azure Red Hat OpenShift) 클러스터에 대한 Bring Your Own NSG(네트워크 보안 그룹)
일반적으로 ARO 클러스터를 설정할 때 ARO 클러스터 개체를 배포하기 위한 리소스 그룹(다음 다이어그램에서는 기본 리소스 그룹이라고 함)을 지정해야 합니다. 이러한 시나리오에서는 VNET(가상 네트워크)과 클러스터 모두에 동일한 리소스 그룹을 사용하거나 VNET에 대해서만 별도의 리소스 그룹을 선택할 수 있습니다. 이러한 리소스 그룹 중 어느 것도 단일 ARO 클러스터와 직접적으로 일치하지 않으므로 이를 완벽하게 제어할 수 있습니다. 이는 이러한 리소스 그룹 내에서 리소스를 자유롭게 만들기, 수정 또는 삭제할 수 있음을 의미합니다.
클러스터 만들기 프로세스 중에 ARO RP(리소스 공급자)는 클러스터 요구 사항에 맞는 전용 리소스 그룹을 설정합니다. 이 그룹에는 다음 다이어그램의 관리되는 리소스 그룹에 설명된 대로 노드 VM, 부하 분산 장치 및 NSG(네트워크 보안 그룹)와 같은 다양한 클러스터별 리소스가 포함되어 있습니다. 관리되는 리소스 그룹은 엄격하게 보호되어 클러스터를 만드는 동안 지정된 VNet 서브넷에 연결된 NSG를 포함하여 해당 콘텐츠에 대한 수정을 금지합니다. 어떤 상황에서는 ARO RP에서 생성된 NSG가 특정 조직의 보안 정책을 준수하지 않을 수 있습니다.
이 문서에서는 "Bring Your Own" NSG(네트워크 보안 그룹) 기능을 사용하여 기본/VNet RG(리소스 그룹)에 있는 미리 구성된 자체 NSG(다음 다이어그램에서 BYO-NSG로 표시됨)를 ARO 클러스터 서브넷에 연결하는 방법을 보여 줍니다. 이 사전 구성된 NSG를 소유하고 있으므로 ARO 클러스터 수명 동안 규칙을 추가/제거할 수 있습니다.
일반 기능 및 제한 사항
클러스터를 만들기 전에 미리 구성된 NSG를 마스터 및 작업자 서브넷 모두에 연결해야 합니다. 미리 구성된 NSG를 두 서브넷 모두에 연결하지 못하면 오류가 발생합니다.
마스터 및 작업자 서브넷에 대해 동일하거나 다른 미리 구성된 NSG를 사용하도록 선택할 수 있습니다.
자체 NSG를 사용하는 경우 ARO RP는 관리되는 리소스 그룹(기본 NSG)에 NSG를 만들지만 해당 NSG는 작업자 또는 마스터 서브넷에 연결되지 않습니다.
기존 ARO 클러스터에서는 미리 구성된 NSG 기능을 사용하도록 설정할 수 없습니다. 현재 이 기능은 클러스터를 만들 때에만 사용하도록 설정할 수 있습니다.
미리 구성된 NSG 옵션은 Azure Portal에서 구성할 수 없습니다.
미리 보기 중에 이 기능을 사용한 경우 기존의 사전 구성된 클러스터가 이제 완벽하게 지원됩니다.
참고 항목
"직접 가져오기" NSG 기능을 사용하고 NSG 흐름 로그를 사용하려는 경우 ARO 관련 흐름 로그 설명서가 아닌 Azure Network Watcher 설명서의 네트워크 보안 그룹에 대한 흐름 로깅을 참조하세요.(자체 NSG 가져오기 기능에서는 작동하지 않습니다).
규칙 사용
Warning
ARO 클러스터 내에서 Kubernetes LoadBalancer 형식 서비스 또는 OpenShift 경로를 만들 때 미리 구성된 NSG는 규칙으로 자동 업데이트되지 않습니다. 따라서 필요에 따라 이러한 규칙을 수동으로 업데이트해야 합니다. 이 동작은 이러한 상황에서 기본 NSG가 프로그래밍 방식으로 업데이트되는 원래 ARO 동작과 다릅니다.
기본 ARO 클러스터 NSG(이 기능을 사용하는 동안 서브넷에 연결되지 않음)는 ARO 클러스터 내에서 Kubernetes LoadBalancer 형식 서비스 또는 OpenShift 경로를 만들 때 규칙으로 계속 업데이트됩니다.
이 기능을 사용하여 만들어진 클러스터의 서브넷에서 미리 구성된 NSG를 분리할 수 있습니다. NSG가 없는 서브넷이 있는 클러스터가 생성됩니다. 그런 다음 미리 구성된 다른 NSG 집합을 클러스터에 연결할 수 있습니다. 또는 ARO 기본 NSG를 클러스터 서브넷에 연결할 수 있습니다(이 시점에서 클러스터는 이 기능을 사용하지 않는 다른 클러스터와 같아집니다).
미리 구성된 NSG에는 다음 형식의 인바운드/아웃바운드 거부 규칙이 있어서는 안 됩니다. 이러한 규칙은 클러스터 작동을 방해하거나 ARO 지원/SRE 팀의 지원/관리 제공을 방해할 수 있기 때문입니다. (여기서 서브넷은 서브넷의 일부 또는 모든 IP 주소와 해당 서브넷에 해당하는 모든 포트를 나타냅니다.)
마스터 서브넷 ←→ 마스터 서브넷
작업자 서브넷 ←→ 작업자 서브넷
마스터 서브넷 ←→ 작업자 서브넷
잘못 구성된 규칙으로 인해 사전 구성된 NSG 문제를 해결하는 데 도움이 되는 Azure Monitor에서 사용되는 신호가 발생합니다.
ARO 공용 클러스터로 들어오는 트래픽을 허용하려면 NSG에서 다음 인바운드 허용 규칙(또는 이에 상응하는 규칙)을 설정합니다. 구체적인 세부 정보는 클러스터의 기본 NSG를 참조하고 배포에 표시된 NSG 예를 참조하세요. NSG에서 이러한 규칙이 없어도 클러스터를 만들 수 있습니다.
- API 서버 액세스의 경우 → 인터넷(또는 기본 원본 IP)에서 마스터 서브넷의 포트 6443으로.
- OpenShift 라우터(따라서 OpenShift 콘솔 및 OpenShift 경로)에 액세스하려면 → 인터넷(또는 기본 원본 IP)에서 클러스터의 공용 부하 분산 장치에 있는 default-v4 공용 IP의 포트 80 및 443으로.
- 모든 부하 분산 장치 형식 Kubernetes Service에 액세스하려면 → 인터넷(또는 기본 원본 IP)에서 클러스터의 공용 부하 분산 장치의 서비스에 해당하는 공용 IP의 서비스 포트로.
배포
VNET을 만들고 미리 구성된 NSG를 만들고 구성합니다.
VNET을 만든 다음 그 안에 마스터 및 작업자 서브넷을 만듭니다.
기본 규칙(또는 규칙 없음)을 사용하여 미리 구성된 NSG를 만들고 이를 마스터 및 작업자 서브넷에 연결합니다.
ARO 클러스터 만들기 및 사전 구성된 NSG 업데이트
클러스터를 만듭니다.
az aro create \ --resource-group BASE_RESOURCE_GROUP_NAME \ --name CLUSTER_NAME \ --vnet VNET_NAME \ --master-subnet MASTER_SUBNET_NAME \ --worker-subnet WORKER_SUBNET_NAME \ --client-id CLUSTER_SERVICE_PRINCIPAL_ID \ --client-secret CLUSTER_SERVICE_PRINCIPAL_SECRET \ --enable-preconfigured-nsg
기능 및 제한 사항에 언급된 사항을 고려하면서 요구 사항에 따라 규칙으로 사전 구성된 NSG를 업데이트합니다.
다음 예에는 스크린샷/CLI 출력에 표시된 대로 클러스터 공용 부하 분산 장치가 있습니다.
$ oc get svc | grep tools tools LoadBalancer 172.30.182.7 20.141.176.3 80:30520/TCP 143m $ $ oc get svc -n openshift-ingress | grep Load router-default LoadBalancer 172.30.105.218 20.159.139.208 80:31157/TCP,443:31177/TCP 5d20