重要
Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。
Azure Kubernetes Service (AKS) を使用して、ビッグ データ クラスターからのエグレス トラフィックを制限できます。 このサービスでは、Standard SKU Load Balancer がプロビジョニングされます。 これは既定で設定され、エグレスに使用されます。 これで、既定のセットアップがすべてのシナリオと要件を満たしていない可能性があります。 たとえば、パブリック IP が許可されていない場合や、エグレスに追加 ホップ が必要な場合です。 クラスターがパブリック IP を禁止し、ネットワーク仮想アプライアンス (NVA) の背後にある場合は、ユーザー定義ルート (UDR) テーブルを定義できます。
AKS クラスターには、無制限の送信 (エグレス) インターネット アクセスがあります。 これは、管理と運用上の目的で使用されます。 AKS クラスター内のワーカー ノードは、特定のポートと 完全修飾ドメイン名 (FQDN) にアクセスする必要があります。 この例を次に示します。
- ワーカー ノード OS のセキュリティ更新中に、クラスターが Microsoft Container Registry (MCR) から基本システム コンテナー イメージをプルする必要がある場合。
- GPU が有効になっている場合、AKS ワーカー ノードは、ドライバーをインストールするために Nvidia からエンドポイントにアクセスする必要があります。
- お客様が AKS を Azure サービスと組み合わせて使用する場合 (エンタープライズ レベルのコンプライアンスのための Azure ポリシー、Azure 監視 (コンテナーの分析情報を使用) など)。
- Dev Space が有効になっている場合、およびその他の同様のシナリオ。
注
Azure Kubernetes Service (AKS ) プライベート クラスターにビッグ データ クラスター (BDC) をデプロイする場合、この記事で説明されているものを除き、受信依存関係はありません。 すべての送信依存関係は、 Azure Kubernetes Service (AKS) のクラスター ノードの制御エグレス トラフィックで 確認できます。
この記事では、高度なネットワークと UDR を使用して AKS プライベート クラスターに BDC をデプロイする方法について説明します。 また、BDC とエンタープライズ レベルのネットワーク環境の統合についても説明します。
Azure ファイアウォールでエグレス トラフィックを制限する方法
Azure Firewall には、構成を簡略化するための Azure Kubernetes Service (AzureKubernetesService)
FQDN タグが用意されています。
FQDN タグの詳細については、「 Azure ファイアウォールを使用してエグレス トラフィックを制限する」を参照してください。
次の図は、AKS プライベート クラスターでのトラフィックの制限方法を示しています。
Azure Firewall を使用してビッグ データ クラスターの基本的なアーキテクチャを開発します。
- リソース グループを作成する > VNet
- Azure ファイアウォールの作成と設定
- ユーザー定義ルート テーブルを作成する
- ファイアウォール規則を設定する
- サービス プリンシパル (SP) の作成
- AKS プライベート クラスターを作成する
- BDC デプロイ プロファイルを作成する
- BDC のデプロイ
リソース グループと VNet を作成する
リソースを作成する環境変数のセットを定義します。
export REGION_NAME=<region> export RESOURCE_GROUP=private-bdc-aksudr-rg export SUBNET_NAME=aks-subnet export VNET_NAME=bdc-vnet export AKS_NAME=bdcaksprivatecluster
リソース グループを作成する
az group create -n $RESOURCE_GROUP -l $REGION_NAME
VNET を作成する
az network vnet create \ --resource-group $RESOURCE_GROUP \ --___location $REGION_NAME \ --name $VNET_NAME \ --address-prefixes 10.0.0.0/8 \ --subnet-name $SUBNET_NAME \ --subnet-prefix 10.1.0.0/16 SUBNET_ID=$(az network vnet subnet show \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --query id -o tsv)
Azure Firewall の作成と設定
リソースを作成するための環境変数のセットを定義します。
export FWNAME=bdcaksazfw export FWPUBIP=$FWNAME-ip export FWIPCONFIG_NAME=$FWNAME-config az extension add --name azure-firewall
ファイアウォール用の専用サブネットを作成する
注
作成後にファイアウォール名を変更することはできません
az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name AzureFirewallSubnet \ --address-prefix 10.3.0.0/24 az network firewall create -g $RESOURCE_GROUP -n $FWNAME -l $REGION_NAME --enable-dns-proxy true az network public-ip create -g $RESOURCE_GROUP -n $FWPUBIP -l $REGION_NAME --sku "Standard" az network firewall ip-config create -g $RESOURCE_GROUP -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBIP --vnet-name $VNET_NAME
Azure では、Azure のサブネット、仮想ネットワーク、およびオンプレミスのネットワーク間のトラフィックが自動的にルーティングされます。
ユーザー定義ルート テーブルを作成する方法
Azure Firewall へのホップを含む UDR テーブルを作成できます。
export SUBID= <your Azure subscription ID>
export FWROUTE_TABLE_NAME=bdcaks-rt
export FWROUTE_NAME=bdcaksroute
export FWROUTE_NAME_INTERNET=bdcaksrouteinet
export FWPUBLIC_IP=$(az network public-ip show -g $RESOURCE_GROUP -n $FWPUBIP --query "ipAddress" -o tsv)
export FWPRIVATE_IP=$(az network firewall show -g $RESOURCE_GROUP -n $FWNAME --query "ipConfigurations[0].privateIpAddress" -o tsv)
# Create UDR and add a route for Azure Firewall
az network route-table create -g $RESOURCE_GROUP --name $FWROUTE_TABLE_NAME
az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME --route-table-name $FWROUTE_TABLE_NAME --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FWPRIVATE_IP --subscription $SUBID
az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME_INTERNET --route-table-name $FWROUTE_TABLE_NAME --address-prefix $FWPUBLIC_IP/32 --next-hop-type Internet
ファイアウォール規則を設定する方法
# Add FW Network Rules
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 1194 --action allow --priority 100
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 9000
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'time' --protocols 'UDP' --source-addresses '*' --destination-fqdns 'ntp.ubuntu.com' --destination-ports 123
# Add FW Application Rules
az network firewall application-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwar' -n 'fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100
次のコマンドを使用して、以前に BDC をデプロイした AKS クラスターに UDR を関連付けることができます。
az network vnet subnet update -g $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --route-table $FWROUTE_TABLE_NAME
サービス プリンシパル (SP) を作成して構成する
この手順では、サービス プリンシパルを作成し、仮想ネットワークにアクセス許可を割り当てる必要があります。
次の例を参照してください。
# Create SP and Assign Permission to Virtual Network
az ad sp create-for-rbac -n "bdcaks-sp"
APPID=<your service principal ID >
PASSWORD=< your service principal password >
VNETID=$(az network vnet show -g $RESOURCE_GROUP --name $VNET_NAME --query id -o tsv)
# Assign SP Permission to VNET
az role assignment create --assignee $APPID --scope $VNETID --role "Network Contributor"
RTID=$(az network route-table show -g $RESOURCE_GROUP -n $FWROUTE_TABLE_NAME --query id -o tsv)
az role assignment create --assignee $APPID --scope $RTID --role "Network Contributor"
AKS クラスターを作成する
userDefinedRouting
を送信の種類として使用して AKS クラスターを作成できるようになりました。
az aks create \
--resource-group $RESOURCE_GROUP \
--___location $REGION_NAME \
--name $AKS_NAME \
--load-balancer-sku standard \
--outbound-type userDefinedRouting \
--enable-private-cluster \
--network-plugin azure \
--vnet-subnet-id $SUBNET_ID \
--docker-bridge-address 172.17.0.1/16 \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--service-principal $APPID \
--client-secret $PASSWORD \
--node-vm-size Standard_D13_v2 \
--node-count 2 \
--generate-ssh-keys
ビッグ データ クラスターのデプロイ プロファイルを作成する
カスタム プロファイルを使用してビッグ データ クラスターを作成できます。
azdata bdc config init --source aks-dev-test --target private-bdc-aks --force
カスタム BDC デプロイ プロファイルを生成して構成する
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.docker.imageTag=2019-CU6-ubuntu-16.04"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.data.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.logs.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[1].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.master.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.gateway.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.appproxy.spec.endpoints[0].serviceType=NodePort"
AKS プライベート クラスターに BDC をデプロイする
export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>
azdata bdc create --config-profile private-bdc-aks --accept-eula yes
サード パーティのファイアウォールを使用してエグレス トラフィックを制限することはできますか?
サードパーティのファイアウォールを使用して、デプロイされた BDC と AKS プライベート クラスターを使用してエグレス トラフィックを制限できます。 例を表示するには、 Azure Marketplace ファイアウォールにアクセスしてください。 サードパーティ製のファイアウォールは、より準拠した構成を持つプライベート デプロイ ソリューションで使用できます。 ファイアウォールには、次のネットワーク規則が用意されている必要があります。
- AKS クラスターに必要なすべての送信ネットワーク 規則と FQDN を表示します。 この URL には、すべてのワイルドカード HTTP/HTTPS エンドポイントと依存関係も含まれます。 これらは、多数の修飾子と実際の要件に基づいて、AKS クラスターによって異なる場合があります。
- Azure グローバル必須ネットワーク規則/FQDN/アプリケーション規則については、こちらに記載されています。
- ここで説明する AKS クラスターに推奨されるオプションの FQDN/アプリケーション 規則。
AKS プライベート クラスターでビッグ データ クラスターを管理する方法を確認してから、次の手順はビッグ データ クラスターに接続することです。
このシナリオの自動化スクリプトについては、 GitHub の SQL Server サンプル リポジトリを参照してください。