4.2. 送信接続の設定
ピア Pod がパブリックインターネットなどの外部ネットワークと通信できるようにするには、Pod 仮想マシン (VM) サブネットの送信接続を設定する必要があります。これには、NAT ゲートウェイの設定と、オプションでサブネットを Azure のクラスターの仮想ネットワーク (VNet) と統合する方法の定義が含まれます。
- ピア Pod とサブネット
- ピア Pod は、送信アクセス用に明示的な設定を必要とする専用の Azure サブネットで動作します。このサブネットは、OpenShift Container Platform ノードによって使用されるデフォルトのワーカーサブネット、またはピア Pod 専用に作成された別のカスタムサブネットのいずれかになります。
- VNet ピアリング
- 別のサブネットを使用する場合、VNet ピアリングはピア Pod VNet をクラスターの VNet に接続し、分離を維持しながら内部通信を確保します。これには、CIDR 範囲が VNet 間で重複しないようにする必要があります。
送信接続は次の 2 つの方法で設定できます。
- デフォルトのワーカーサブネット: 既存のワーカーサブネットを変更して、NAT ゲートウェイを含めます。これはより単純で、クラスターリソースを再利用しますが、分離性は低くなります。
- ピア Pod VNet: ピア Pod 専用の VNet とサブネットを設定し、NAT ゲートウェイを接続して、クラスター VNet とピアリングします。これにより、複雑さは増しますが、分離性と柔軟性が向上します。
4.2.1. 送信接続用のデフォルトのワーカーサブネットの設定
デフォルトのワーカーサブネットを NAT ゲートウェイで設定できます。
前提条件
-
Azure CLI (
az
) がインストールされ、認証されている。 - Azure リソースグループと VNet への管理者アクセス権がある。
手順
次のコマンドを実行して、
AZURE_RESOURCE_GROUP
環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')
$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')
次のコマンドを実行して、
AZURE_REGION
環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""
$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""
次のコマンドを実行して、
AZURE_VNET_NAME
環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)
$ AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)
次のコマンドを実行して、
AZURE_SUBNET_ID
環境変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_SUBNET_ID=$(az network vnet subnet list \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${AZURE_VNET_NAME}" --query "[].{Id:id} \ | [? contains(Id, 'worker')]" --output tsv)
$ AZURE_SUBNET_ID=$(az network vnet subnet list \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${AZURE_VNET_NAME}" --query "[].{Id:id} \ | [? contains(Id, 'worker')]" --output tsv)
次のコマンドを実行して、ピア Pod サブネットの NAT ゲートウェイ環境変数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW=peerpod-nat-gw
$ export PEERPOD_NAT_GW=peerpod-nat-gw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW_IP=peerpod-nat-gw-ip
$ export PEERPOD_NAT_GW_IP=peerpod-nat-gw-ip
次のコマンドを実行して、NAT ゲートウェイのパブリック IP アドレスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}" --sku Standard
$ az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}" --sku Standard
次のコマンドを実行して、NAT ゲートウェイを作成し、パブリック IP アドレスに関連付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"
$ az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"
以下のコマンドを実行して、NAT ゲートウェイを使用するように VNet サブネットを更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet subnet update --nat-gateway "${PEERPOD_NAT_GW}" \ --ids "${AZURE_SUBNET_ID}"
$ az network vnet subnet update --nat-gateway "${PEERPOD_NAT_GW}" \ --ids "${AZURE_SUBNET_ID}"
検証
以下のコマンドを実行して、NAT ゲートウェイが VNet サブネットに割り当てられていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet subnet show --ids "${AZURE_SUBNET_ID}" \ --query "natGateway.id" -o tsv
$ az network vnet subnet show --ids "${AZURE_SUBNET_ID}" \ --query "natGateway.id" -o tsv
出力には NAT ゲートウェイリソース ID が含まれます。NAT ゲートウェイが接続されていない場合、出力は空になります。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subscriptions/12345678-1234-1234-1234-1234567890ab/resourceGroups/myResourceGroup/providers/Microsoft.Network/natGateways/myNatGateway
/subscriptions/12345678-1234-1234-1234-1234567890ab/resourceGroups/myResourceGroup/providers/Microsoft.Network/natGateways/myNatGateway
関連情報
- Azure ドキュメント: NAT ゲートウェイの概要
- Azure ドキュメント: VNet ピアリングの概要
4.2.2. 送信接続用のピア Pod VNet の作成
パブリックインターネットアクセスを有効にするには、ピア Pod 専用の仮想ネットワーク (VNet) を作成して、ネットワークアドレス変換 (NAT) ゲートウェイの接続およびサブネットの作成を行い、重複しないアドレス空間で VNet ピアリングを有効にします。
前提条件
-
Azure CLI (
az
) がインストールされている、 - Azure にサインインしている。Azure CLI を使用した Azure の認証 を参照してください。
- クラスターをホストする Azure リソースグループおよび VNet への管理者アクセスがある。
-
クラスターの VNet classless inter-domain routing (CIDR) アドレスを検証した。デフォルト値は
10.0.0.0/14
です。デフォルト値を上書きした場合は、CIDR アドレスがピア Pod VNet と重複していないことを確認します。たとえば、192.168.0.0/16
です。
手順
ピア Pod ネットワークの環境変数を設定します。
次のコマンドを実行して、ピア Pod VNet 環境変数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_VNET_NAME="${PEERPOD_VNET_NAME:-peerpod-vnet}"
$ export PEERPOD_VNET_NAME="${PEERPOD_VNET_NAME:-peerpod-vnet}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_VNET_CIDR="${PEERPOD_VNET_CIDR:-192.168.0.0/16}"
$ export PEERPOD_VNET_CIDR="${PEERPOD_VNET_CIDR:-192.168.0.0/16}"
次のコマンドを実行して、ピア Pod サブネット環境変数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_SUBNET_NAME="${PEERPOD_SUBNET_NAME:-peerpod-subnet}"
$ export PEERPOD_SUBNET_NAME="${PEERPOD_SUBNET_NAME:-peerpod-subnet}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_SUBNET_CIDR="${PEERPOD_SUBNET_CIDR:-192.168.0.0/16}"
$ export PEERPOD_SUBNET_CIDR="${PEERPOD_SUBNET_CIDR:-192.168.0.0/16}"
Azure の環境変数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')
$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster \ -o jsonpath='{.status.platformStatus.azure.resourceGroupName}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""
$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP}\ --query "{Location:location}" --output tsv) && \ echo "AZURE_REGION: \"$AZURE_REGION\""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)
$ AZURE_VNET_NAME=$(az network vnet list \ -g "${AZURE_RESOURCE_GROUP}" --query '[].name' -o tsv)
次のコマンドを実行して、ピア Pod の NAT ゲートウェイ環境変数を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW="${PEERPOD_NAT_GW:-peerpod-nat-gw}"
$ export PEERPOD_NAT_GW="${PEERPOD_NAT_GW:-peerpod-nat-gw}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export PEERPOD_NAT_GW_IP="${PEERPOD_NAT_PUBLIC_IP:-peerpod-nat-gw-ip}"
$ export PEERPOD_NAT_GW_IP="${PEERPOD_NAT_PUBLIC_IP:-peerpod-nat-gw-ip}"
VNET を設定します。
次のコマンドを実行して、ピア Pod VNet を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet create --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${PEERPOD_VNET_NAME}" \ --address-prefixes "${PEERPOD_VNET_CIDR}"
$ az network vnet create --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${PEERPOD_VNET_NAME}" \ --address-prefixes "${PEERPOD_VNET_CIDR}"
次のコマンドを実行して、ピア Pod VNet のパブリック IP アドレスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}"
$ az network public-ip create -g "${AZURE_RESOURCE_GROUP}" \ -n "${PEERPOD_NAT_GW_IP}" -l "${AZURE_REGION}"
次のコマンドを実行して、ピア Pod VNet の NAT ゲートウェイを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" \ --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"
$ az network nat gateway create -g "${AZURE_RESOURCE_GROUP}" \ -l "${AZURE_REGION}" \ --public-ip-addresses "${PEERPOD_NAT_GW_IP}" \ -n "${PEERPOD_NAT_GW}"
次のコマンドを実行して、ピア Pod VNet にサブネットを作成し、NAT ゲートウェイを接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet subnet create \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" \ --name "${PEERPOD_SUBNET_NAME}" \ --address-prefixes "${PEERPOD_SUBNET_CIDR}" \ --nat-gateway "${PEERPOD_NAT_GW}"
$ az network vnet subnet create \ --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" \ --name "${PEERPOD_SUBNET_NAME}" \ --address-prefixes "${PEERPOD_SUBNET_CIDR}" \ --nat-gateway "${PEERPOD_NAT_GW}"
仮想ネットワークピアリング接続を設定します。
次のコマンドを実行してピアリング接続を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --remote-vnet "${PEERPOD_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic
$ az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --remote-vnet "${PEERPOD_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic
次のコマンドを実行してピアリング接続を同期します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet peering sync -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}"
$ az network vnet peering sync -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}"
次のコマンドを実行してピアリング接続を完了します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-peerpod-vnet-to-azure-vnet \ --vnet-name "${PEERPOD_VNET_NAME}" \ --remote-vnet "${AZURE_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic
$ az network vnet peering create -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-peerpod-vnet-to-azure-vnet \ --vnet-name "${PEERPOD_VNET_NAME}" \ --remote-vnet "${AZURE_VNET_NAME}" --allow-vnet-access \ --allow-forwarded-traffic
検証
次のコマンドを実行して、クラスター VNet からのピアリング接続ステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet peering show -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --query "peeringState" -o tsv
$ az network vnet peering show -g "${AZURE_RESOURCE_GROUP}" \ -n peerpod-azure-vnet-to-peerpod-vnet \ --vnet-name "${AZURE_VNET_NAME}" \ --query "peeringState" -o tsv
これにより、
Connected
が返されるはずです。次のコマンドを実行して、NAT ゲートウェイがピア Pod サブネットに接続されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow az network vnet subnet show --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" --name "${PEERPOD_SUBNET_NAME}" \ --query "natGateway.id" -o tsv
$ az network vnet subnet show --resource-group "${AZURE_RESOURCE_GROUP}" \ --vnet-name "${PEERPOD_VNET_NAME}" --name "${PEERPOD_SUBNET_NAME}" \ --query "natGateway.id" -o tsv
関連情報
- Azure ドキュメント: NAT ゲートウェイの概要
- Azure ドキュメント: VNet ピアリングの概要