Service Fabric マネージド クラスターには、外部クライアントがクラスターのリソースにアクセスできるようにする外部向け IP があります。 ただし、一部のシナリオでは、これらをインターネットに直接公開せずに、これらのリソースへのインターネット アクセスを提供することが望ましい場合があります。 NAT ゲートウェイは、この動作を可能にします。
クラスターに、インターネットからの受信トラフィックを受信する必要があるリソースがある一方で、保護する必要があるプライベート リソースもある場合は、NAT ゲートウェイが役立ちます。 また、シークレット、ストレージ、その他のプライベート リソースにアクセスするためにクラスターの外部へ接続する必要があるアプリケーションがある場合にも、NAT ゲートウェイが役立ちます。
マネージド クラスターに NAT ゲートウェイを使用する利点の一部を次に示します。
- セキュリティの強化: Azure NAT Gateway は、ゼロ トラスト ネットワーク セキュリティ モデルに基づいて構築されており、既定でセキュリティで保護されています。 NAT ゲートウェイでは、サブネット内のプライベート インスタンスは、インターネットに到達するためにパブリック IP アドレスを必要としません。 プライベート リソースは、NAT ゲートウェイの静的パブリック IP アドレスまたはプレフィックスへの送信元ネットワーク アドレス変換 (SNAT) によって、仮想ネットワークの外にある外部ソースに到達できます。 パブリック IP プレフィックスを使用することで送信接続用の連続した IP のセットを指定できます。また、この予測可能な IP リストに基づいて宛先ファイアウォール規則を構成できます。
- 回復性: Azure NAT Gateway は、フル マネージドの分散サービスです。 VM や 1 つの物理ゲートウェイ デバイスのような、個別のコンピューティング インスタンスには依存しません。 NAT ゲートウェイは常に複数の障害ドメインを持ち、サービス停止なしに複数の障害を維持することができる。 ソフトウェア定義ネットワークにより、NAT ゲートウェイの回復性が高くなっています。
- 簡略化されたネットワーク アーキテクチャ: NAT ゲートウェイを使用すると、プライベート サブネット内のインスタンスにアクセスするための bastion ホストまたは VPN 接続の必要性をなくすことで、ネットワーク アーキテクチャを簡略化できます。
- パフォーマンス: Azure NAT Gateway はパフォーマンスが高く安定しています。
次の図は、プライマリおよびセカンダリ ノード タイプを持つクラスターを示しており、各ノード タイプが独自のサブネットを持っています。 セカンダリ ノード タイプは NAT ゲートウェイの背後に配置され、そのすべての送信トラフィックはゲートウェイ経由でルーティングされます。 トラフィックがセカンダリ ノード タイプからのものである場合、パブリック IP アドレスは NAT ゲートウェイの IP アドレスになります。 すべての送信要求は NAT ゲートウェイを介してルーティングされるため、追加の NSG 規則を実装することができ、これはセキュリティを向上させ、外部サービスが内部サービスを検知するのを防ぎます。
次のシナリオは、Service Fabric マネージド クラスター上の NAT ゲートウェイでサポートされるユース ケースです。
- お客様は、マネージド クラスター ネットワーク設定の構成に関する記事の「独自の仮想ネットワークの持ち込み」セクションにある任意のノードの種類とサブネット構成に NAT ゲートウェイをアタッチできます。
- お客様は、マネージド クラスター ネットワーク設定の構成に関する記事の「独自の Azure Load Balancer の持ち込み」セクションで説明されているように、専用サブネットを使用して、セカンダリ ノード タイプに NAT ゲートウェイをアタッチできます。 独自のロード バランサーと NAT ゲートウェイを追加すると、ネットワーク トラフィックの制御が強化されます。
必須コンポーネント
自分のシナリオ向けに、手順に従ってマネージド クラスターのネットワークを適切に構成するようにしてください。
NAT ゲートウェイを持つ独自の仮想ネットワークを持ち込む
次の手順では、NAT ゲートウェイを仮想ネットワーク サブネットにアタッチする方法について説明します。
Azure NAT Gateway クイックスタートの手順に従って NAT ゲートウェイを作成します。
ロールの割り当てを使用して、NAT ゲートウェイの設定を変更するための Service Fabric リソース プロバイダーの権限を与えます。 マネージド クラスター ネットワーク設定の構成に関する記事の「独自の仮想ネットワークの持ち込み」セクションの最初の 2 つの手順に従って、NAT ゲートウェイの情報をサブネット パラメーターに挿入します。
これで、NAT ゲートウェイを仮想ネットワークのサブネットにアタッチする準備ができました。 ARM テンプレート、Azure CLI、Azure PowerShell、またはAzure portal を使用できます。
ARM テンプレート
次の ARM テンプレートを変更してデプロイし、NAT ゲートウェイをサブネットのプロパティに導入します。
{
"apiVersion": "[variables('networkApiVersion')]",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('vnetName')]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[parameters('natGatewayId'))]"
],
"properties": {
"subnets": [
{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "[parameters('subnetAddressPrefix')]",
"natGateway": {
"id": "[parameters('natGatewayId'))]"
}
}
}
]
}
}
Azure CLI
自分の情報を使用して次の Azure CLI コマンドを変更して実行します。
az network vnet subnet update --resource-group myResourceGroup --vnet-name mvVNet --name mySubnet --nat-gateway myNATGateway
Azure PowerShell
仮想ネットワークを変数に格納します
$net = @{ Name = `myVNet` ResourceGroupName = 'myResourceGroup' } $vnet = Get-AzVirtualNetwork @net
NAT ゲートウェイを変数に格納します
$nat = @{ Name = 'myNATgateway' ResourceGroupName = 'myResourceGroup' } $natGateway = Get-AzNatGateway @nat
サブネット構成を設定します
$subnet = @{ Name = 'mySubnet' VirtualNetwork = $vnet NatGateway = $natGateway AddressPrefix = '10.0.2.0/24' } Set-AzVirtualNetworkSubnetConfig @subnet
仮想ネットワークへの構成を保存します
$vnet | Set-AzVirtualNetwork
Azure portal
Azure portal で、仮想ネットワーク リソースに移動します。
[設定] で、 [サブネット] を選択します。
NAT ゲートウェイに関連付けたいサブネットを選択します。
[NAT ゲートウェイ] ドロップダウンを開き、NAT ゲートウェイを選択します。
[保存] をクリックします。
Azure NAT Gateway を使用して独自のロード バランサーを持ち込む
次の手順では、NAT ゲートウェイを仮想ネットワーク サブネットにアタッチする方法について説明します。
注意
このシナリオは、ARM テンプレート経由でのみサポートされています。
Azure NAT Gateway クイックスタートの手順に従って NAT ゲートウェイを作成します。
ロールの割り当てを使用して、NAT ゲートウェイの設定を変更するための Service Fabric リソース プロバイダーの権限を与えます。 マネージド クラスター ネットワーク設定の構成に関する記事の「独自の仮想ネットワークの持ち込み」セクションの最初の 2 つの手順に従って、NAT ゲートウェイの情報をサブネット パラメーターに挿入します。
デプロイに次のプロパティを追加して、NAT ゲートウェイを専用サブネットにアタッチします。
{
"apiVersion": "2023-03-01-preview",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[parameters('clusterLocation')]",
"properties": {
...
"isPrimary": false,
"natGatewayId": "[variables('natID')]",
"frontendConfigurations": [...],
...
}
次のステップ
- この記事で説明されている Service Fabric マネージド クラスター ネットワーク シナリオを確認します。
- Service Fabric マネージド クラスターの構成オプションを確認します。