自分のサービスを参照する Private Link サービスを作成してみましょう。 Private Link には、Azure Standard Load Balancer の背後にデプロイされたサービスやリソースへのアクセス権を付与することができます。 サービスのユーザーは、各自の仮想ネットワークからプライベートにアクセスすることができます
前提条件
アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
Azure Cloud Shell または Azure PowerShell。
このクイックスタートの手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloudshell を開く] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 この記事の手順では、バージョン 5.4.1 以降の Azure PowerShell モジュールが必要です。
Get-Module -ListAvailable Az
を実行して、インストールされているバージョンを見つけます。 アップグレードする必要がある場合は、Azure PowerShell モジュールの更新を参照してください。PowerShell をローカルで実行する場合は、
Connect-AzAccount
を実行して Azure に接続します。
リソース グループを作成する
Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
New-AzResourceGroup を使用して、次のようにリソース グループを作成します。
New-AzResourceGroup -Name 'test-rg' -Location 'eastus2'
内部ロード バランサーを作成します。
このセクションでは、仮想ネットワークと内部 Azure Load Balancer を作成します。
仮想ネットワーク
このセクションでは、Private Link サービスにアクセスするロード バランサーをホストする仮想ネットワークとサブネットを作成します。
- New-AzVirtualNetwork を使用して仮想ネットワークを作成します。
## Create backend subnet config ##
$subnet = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create the virtual network ##
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnetConfig
}
$vnet = New-AzVirtualNetwork @net
標準ロードバランサーを作成する
このセクションでは、ロード バランサーの以下のコンポーネントを作成および構成する方法について説明します。
フロントエンド IP プールの New-AzLoadBalancerFrontendIpConfig を使用してフロントエンド IP を作成します。 ロード バランサーでは、この IP で受信トラフィックを受け取ります。
ロード バランサーのフロントエンドから送信されたトラフィック用に 、New-AzLoadBalancerBackendAddressPoolConfig を使用してバックエンド アドレス プールを作成します。 このプールは、バックエンド仮想マシンがデプロイされる場所です。
バックエンド VM インスタンスの正常性を決定する正常性プローブを Add-AzLoadBalancerProbeConfig で作成します。
Add-AzLoadBalancerRuleConfig を使用して、VM へのトラフィックの分散方法を定義するロード バランサー規則を作成します。
New-AzLoadBalancer を使用してパブリック ロード バランサーを作成します。
## Place virtual network created in previous step into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
Name = 'frontend'
PrivateIpAddress = '10.0.0.4'
SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'backend-pool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'health-probe'
Protocol = 'http'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
RequestPath = '/'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'http-rule'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = 'test-rg'
Name = 'load-balancer'
Location = 'eastus2'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
ネットワーク ポリシーを無効にする
仮想ネットワークにプライベート リンク サービスを作成する前に、 privateLinkServiceNetworkPolicies
設定を無効にする必要があります。
- Set-AzVirtualNetwork を使用してネットワーク ポリシーを無効にします。
## Place the subnet name into a variable. ##
$subnet = 'subnet-1'
## Place the virtual network configuration into a variable. ##
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$vnet = Get-AzVirtualNetwork @net
## Set the policy as disabled on the virtual network. ##
($vnet | Select -ExpandProperty subnets | Where-Object {$_.Name -eq $subnet}).privateLinkServiceNetworkPolicies = "Disabled"
## Save the configuration changes to the virtual network. ##
$vnet | Set-AzVirtualNetwork
プライベート リンク サービスを作成する
このセクションでは、前の手順で作成した Standard Azure Load Balancer を使用するプライベート リンク サービスを作成します。
New-AzPrivateLinkServiceIpConfig を使用してプライベート リンク サービスの IP 構成を作成します。
New-AzPrivateLinkService を使用してプライベート リンク サービスを作成します。
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
## Create the IP configuration for the private link service. ##
$ipsettings = @{
Name = 'ipconfig-1'
PrivateIpAddress = '10.0.0.5'
Subnet = $vnet.subnets[0]
}
$ipconfig = New-AzPrivateLinkServiceIpConfig @ipsettings
## Place the load balancer frontend configuration into a variable. ##
$par = @{
Name = 'load-balancer'
ResourceGroupName = 'test-rg'
}
$fe = Get-AzLoadBalancer @par | Get-AzLoadBalancerFrontendIpConfig
## Create the private link service for the load balancer. ##
$privlinksettings = @{
Name = 'private-link-service'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
LoadBalancerFrontendIpConfiguration = $fe
IpConfiguration = $ipconfig
}
New-AzPrivateLinkService @privlinksettings
Private Link サービスが作成され、トラフィックを受信できるようになります。 トラフィック フローを確認する場合は、ご利用のアプリケーションを Standard ロード バランサーの背後に構成します。
プライベート エンドポイントの作成
このセクションでは、プライベート リンク サービスをプライベート エンドポイントにマップします。 仮想ネットワークには、プライベート リンク サービス用のプライベート エンドポイントが含まれています。 この仮想ネットワークには、プライベート リンク サービスにアクセスするリソースが含まれています。
プライベート エンドポイントの仮想ネットワークを作成する
- New-AzVirtualNetwork を使用して仮想ネットワークを作成します。
## Create backend subnet config ##
$subnet = @{
Name = 'subnet-pe'
AddressPrefix = '10.1.0.0/24'
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create the virtual network ##
$net = @{
Name = 'vnet-pe'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig
}
$vnetpe = New-AzVirtualNetwork @net
エンドポイントと接続を作成する
Get-AzPrivateLinkService を使用して、事前に作成したプライベート リンク サービスの構成を後で使用できるように変数に配置します。
New-AzPrivateLinkServiceConnection を使用して接続構成を作成します。
New-AzPrivateEndpoint を使用してエンドポイントを作成します。
## Place the private link service configuration into variable. ##
$par1 = @{
Name = 'private-link-service'
ResourceGroupName = 'test-rg'
}
$pls = Get-AzPrivateLinkService @par1
## Create the private link configuration and place in variable. ##
$par2 = @{
Name = 'connection-1'
PrivateLinkServiceId = $pls.Id
}
$plsConnection = New-AzPrivateLinkServiceConnection @par2
## Place the virtual network into a variable. ##
$par3 = @{
Name = 'vnet-pe'
ResourceGroupName = 'test-rg'
}
$vnetpe = Get-AzVirtualNetwork @par3
## Create private endpoint ##
$par4 = @{
Name = 'private-endpoint'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnetpe.subnets[0]
PrivateLinkServiceConnection = $plsConnection
}
New-AzPrivateEndpoint @par4 -ByManualRequest
プライベート エンドポイント接続を承認する
このセクションでは、前の手順で作成した接続を承認します。
- Approve-AzPrivateEndpointConnection を使用して接続を承認します。
## Place the private link service configuration into variable. ##
$par1 = @{
Name = 'private-link-service'
ResourceGroupName = 'test-rg'
}
$pls = Get-AzPrivateLinkService @par1
$par2 = @{
Name = $pls.PrivateEndpointConnections[0].Name
ServiceName = 'private-link-service'
ResourceGroupName = 'test-rg'
Description = 'Approved'
PrivateLinkResourceType = 'Microsoft.Network/privateLinkServices'
}
Approve-AzPrivateEndpointConnection @par2
プライベート エンドポイントの IP アドレス
このセクションでは、ロード バランサーとプライベート リンク サービスに対応するプライベート エンドポイントの IP アドレスについて説明します。
- Get-AzPrivateEndpoint を使用して IP アドレスを取得します。
## Get private endpoint and the IP address and place in a variable for display. ##
$par1 = @{
Name = 'private-endpoint'
ResourceGroupName = 'test-rg'
ExpandResource = 'networkinterfaces'
}
$pe = Get-AzPrivateEndpoint @par1
## Display the IP address by expanding the variable. ##
$pe.NetworkInterfaces[0].IpConfigurations[0].PrivateIpAddress
❯ $pe.NetworkInterfaces[0].IpConfigurations[0].PrivateIpAddress
10.1.0.4
リソースをクリーンアップする
必要がなくなれば、Remove-AzResourceGroup コマンドを使用して、リソース グループやロード バランサー、その他のリソースを削除できます。
Remove-AzResourceGroup -Name 'test-rg'
次のステップ
このクイック スタートでは次の作業を行います。
仮想ネットワークと内部 Azure Load Balancer を作成しました。
プライベート リンク サービスを作成しました
Azure プライベート エンドポイントについてさらに学習するには、次の記事に進んでください。