Azure CLI를 사용하여 방화벽을 사용하여 아웃바운드 트래픽 제한
중요하다
AKS의 Azure HDInsight는 2025년 1월 31일에 사용 중지되었습니다. 을(를) 이 공지에서 자세히 알아보세요.
워크로드가 갑자기 종료되는 것을 방지하기 위해 워크로드를 Microsoft Fabric 또는 동등한 Azure 제품으로 워크로드를 마이그레이션해야 합니다.
중요하다
이 기능은 현재 미리 보기로 제공됩니다. Microsoft Azure 미리 보기의 추가 사용 조건에는 베타, 미리 보기 및 일반 공급으로 아직 릴리스되지 않은 Azure 기능에 적용되는 더 많은 법적 조건이 포함되어 있습니다. 이 특정 미리 보기에 대한 자세한 내용은 AKS 미리 보기 정보 azure HDInsight참조하세요. 질문이나 기능 제안을 하려면 세부 사항과 함께 AskHDInsight 에 요청을 제출하시고, 더 많은 업데이트를 받으려면 Azure HDInsight Community을 팔로우하세요.
엔터프라이즈에서 클러스터 배포에 자체 가상 네트워크를 사용하려는 경우 가상 네트워크의 트래픽을 보호하는 것이 중요해집니다. 이 문서에서는 Azure CLI사용하여 AZURE Firewall을 통해 AKS 클러스터의 HDInsight에서 아웃바운드 트래픽을 보호하는 단계를 제공합니다.
다음 다이어그램에서는 이 문서에서 엔터프라이즈 시나리오를 시뮬레이션하는 데 사용되는 예제를 보여 줍니다.
이 문서에 설명된 예제는 Azure Could Shell 사용합니다.
변수 정의
Azure Cloud Shell에서 복사하고 실행하여 이러한 변수의 값을 설정합니다.
PREFIX="hdiaks-egress"
RG="${PREFIX}-rg"
LOC="eastus"
HDIAKS_CLUSTER_POOL=${PREFIX}
VNET_NAME="${PREFIX}-vnet"
HDIAKS_SUBNET_NAME="${PREFIX}-subnet"
# DO NOT CHANGE FWSUBNET_NAME - This is currently a requirement for Azure Firewall.
FWSUBNET_NAME="AzureFirewallSubnet"
FWNAME="${PREFIX}-fw"
FWPUBLICIP_NAME="${PREFIX}-fwpublicip"
FWIPCONFIG_NAME="${PREFIX}-fwconfig"
FWROUTE_NAME="${PREFIX}-fwrn"
FWROUTE_NAME_INTERNET="${PREFIX}-fwinternet"
가상 네트워크 및 서브넷 만들기
az group create 명령을 사용하여 리소스 그룹을 만듭니다.
az group create --name $RG --location $LOC
가상 네트워크와 두 개의 서브넷을 만듭니다.
AKS 클러스터 풀의 HDInsight용 서브넷이 있는 가상 네트워크
az network vnet create \ --resource-group $RG \ --name $VNET_NAME \ --location $LOC \ --address-prefixes 10.0.0.0/8 \ --subnet-name $HDIAKS_SUBNET_NAME \ --subnet-prefix 10.1.0.0/16
Azure Firewall용 서브넷.
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
중요하다
- 서브넷
HDIAKS_SUBNET_NAME
NSG를 추가하는 경우 특정 아웃바운드 및 인바운드 규칙을 수동으로 추가해야 합니다. 을 따라 NSG를 사용하여 트래픽을로 제한합니다. - 기본적으로 경로 테이블은 서브넷과 연결되지 않습니다. 필요한 경우 사용자는 경로 테이블을 만들고 클러스터 풀과 연결해야 합니다.
- 서브넷
Azure Portal을 사용하여 AKS 클러스터 풀에서 HDInsight 만들기
클러스터 풀을 만듭니다.
경로 테이블을 만듭니다.
경로 테이블을 만들고 클러스터 풀과 연결합니다. 자세한 내용은 경로 테이블 만들기참조하세요.
클러스터 풀 내에서 생성된 AKS 클러스터의 세부 정보 가져오기
다음 단계에 따라 AKS 클러스터 정보를 가져옵니다. 이 정보는 후속 단계에서 유용합니다.
AKS_MANAGED_RG=$(az network vnet subnet show --name $HDIAKS_SUBNET_NAME --vnet-name $VNET_NAME --resource-group $RG --query routeTable.resourceGroup -o tsv)
AKS_ID=$(az group show --name $AKS_MANAGED_RG --query managedBy -o tsv)
HDIAKS_MANAGED_RG=$(az resource show --ids $AKS_ID --query "resourceGroup" -o tsv)
API_SERVER=$(az aks show --name $HDIAKS_CLUSTER_POOL --resource-group $HDIAKS_MANAGED_RG --query fqdn -o tsv)
방화벽 만들기
표준 SKU 공용 IP 리소스를 만듭니다. 이 리소스는 Azure Firewall 프런트 엔드 주소로 사용됩니다.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Azure Firewall 미리 보기 CLI 확장을 등록하여 Azure Firewall을 만듭니다.
az extension add --name azure-firewall
Azure Firewall을 만들고 DNS 프록시를 사용하도록 설정합니다.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Azure Firewall IP 구성을 만듭니다.
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
IP 구성 명령이 성공하면 나중에 구성을 위해 방화벽 프런트 엔드 IP 주소를 저장합니다.
FWPUBLIC_IP=$(az network public-ip show -g $RG -n $FWPUBLICIP_NAME --query "ipAddress" -o tsv) FWPRIVATE_IP=$(az network firewall show -g $RG -n $FWNAME --query "ipConfigurations[0].privateIPAddress" -o tsv)
방화벽에 네트워크 및 애플리케이션 규칙 추가
네트워크 규칙을 만듭니다.
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 1194 --action allow --priority 100 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 9000 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiserver' --protocols 'TCP' --source-addresses '*' --destination-fqdns "$API_SERVER" --destination-ports 443 #Add below step, in case you are integrating log analytics workspace az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'azuremonitor' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureMonitor" --destination-ports 443
애플리케이션 규칙을 만듭니다.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'aks-fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'acr' --source-addresses '*' --protocols 'https=443' --target-fqdns "hiloprodrpacr00.azurecr.io" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'blob' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.blob.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'servicebus' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.servicebus.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gsm' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.table.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gcsmonitoring' --source-addresses '*' --protocols 'https=443' --target-fqdns "gcs.prod.monitoring.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'graph' --source-addresses '*' --protocols 'https=443' --target-fqdns "graph.microsoft.com"
트래픽을 방화벽으로 리디렉션하는 경로 테이블에 경로 만들기
AKS 클러스터 풀의 HDInsight에 연결할 경로 테이블을 만듭니다. 자세한 내용은 경로 테이블 명령 만들기을 참조하세요.
클러스터 만들기
이전 단계에서는 네트워크 트래픽을 방화벽으로 라우팅했습니다.
다음 단계에서는 각 클러스터 유형에 필요한 특정 네트워크 및 애플리케이션 규칙에 대한 세부 정보를 제공합니다. 필요에 따라 Apache Flink, Trino및 Apache Spark 클러스터를 만들기 위한 클러스터 만들기 페이지를 참조할 수 있습니다.
중요하다
클러스터를 만들기 전에 다음 클러스터별 규칙을 실행하여 트래픽을 허용해야 합니다.
트리노 ()
Trino 클러스터에 대해 다음 네트워크 및 애플리케이션 규칙을 추가합니다.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
필요에 따라 다음 구문의
Sql.<Region>
을 해당 지역 이름으로 변경하십시오. 예:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses Sql.<Region> --destination-ports "11000-11999"
Apache Flink
Apache Flink 클러스터에 대해 다음 애플리케이션 규칙을 추가합니다.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
Apache Spark
Spark 클러스터에 대해 다음 네트워크 및 애플리케이션 규칙을 추가합니다.
요구 사항에 따라 다음 문법의
Storage.<Region>
를 해당 지역 이름으로 변경하세요. 예:Storage.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'smb' --protocols 'TCP' --source-addresses '*' --destination-addresses "Storage.<Region>" --destination-ports 445 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
필요에 따라 다음 구문의
Sql.<Region>
를 해당 지역으로 변경하세요. 예:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses "Sql.<Region>" --destination-ports '11000-11999' az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
대칭 라우팅 문제 해결
다음 단계를 따라 클러스터별로 로드 밸런서 인그레스 서비스를 요청하고 네트워크 응답 트래픽이 방화벽으로 전달되지 않도록 할 수 있습니다. 경로 테이블에 경로를 추가하여 응답 트래픽을 클라이언트 IP로 인터넷으로 리디렉션한 다음 클러스터에 직접 연결할 수 있습니다.
az network route-table route create -g $AKS_MANAGED_RG --name clientip --route-table-name $ROUTE_TABLE_NAME --address-prefix {Client_IPs} --next-hop-type Internet
NSG를 구성한 후 클러스터에 연결할 수 없는 경우, 에 따라 NSG를 사용하여 트래픽을 제한하고,에 따라 트래픽을 허용하도록 설정하십시오.
팁
더 많은 트래픽을 허용하려면 방화벽을 통해 구성할 수 있습니다.
디버그하는 방법
클러스터가 예기치 않게 작동하는 경우 방화벽 로그를 확인하여 차단된 트래픽을 찾을 수 있습니다.