スタンドアロン Linux Windows ホスト用のコンテナー ネットワークをデプロイする
Azure CNI プラグインを使うと、スタンドアロン Docker ホストと Kubernetes クラスターに対してコンテナーまたはポッド単位のネットワーク接続を実現できます。 この記事では、スタンドアロンの Windows Docker ホスト用の CNI プラグインをインストールして構成する方法について説明します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
仮想ネットワークと Azure Bastion ホストを作成する
次の手順では、リソース サブネット、Azure Bastion サブネット、Bastion ホストを含む仮想ネットワークを作成します。
ポータルで、[仮想ネットワーク] を検索して選択します。
[仮想ネットワーク] ページで、[+ 作成] を選択します。
[仮想ネットワークの作成] の [基本] タブで、以下の情報を入力するか選択します。
設定 値 プロジェクトの詳細 サブスクリプション サブスクリプションを選択します。 Resource group [新規作成] を選択します。
名前に「test-rg」と入力します。
を選択します。インスタンスの詳細 Name 「vnet-1」と入力します。 リージョン [米国東部 2] を選択します。 [次へ] を選択して、[セキュリティ] タブに進みます。
[Azure Bastion] セクションで、[Azure Bastion の有効化] を選択します。
Bastion では、ユーザーのブラウザーとプライベート IP アドレスを使って、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) 経由で仮想ネットワーク内の VM に接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 詳細については、Azure Bastion に関するページを参照してください。
[Azure Bastion] で、次の情報を入力するか選びます。
設定 値 Azure Bastion ホスト名 「bastion」と入力します。 Azure Bastion のパブリック IP アドレス [Create a public IP address] (パブリック IP アドレスを作成する) を選びます。
[名前] に「public-ip-bastion」と入力します。
を選択します。[次へ] を選択して、[IP アドレス] タブに進みます。
[サブネット] のアドレス空間ボックスで、既定のサブネットを選択します。
[サブネットの編集] で次の情報を入力または選択します。
設定 Value サブネットの目的 既定値の [既定値] のままにします。 名前 「subnet-1」と入力します。 IPv4 IPv4 アドレス範囲 既定値である 10.0.0.0/16 のままにします。 開始アドレス 既定値の 10.0.0.0 のままにします。 サイズ 既定値の [/24 (256 アドレス)] のままにします。 [保存] を選択します。
ウィンドウの下部にある [確認および作成] を選びます。 検証に合格した場合は、[作成] を選択します。
ネットワークと Bastion ホストがデプロイされるまでに数分かかる場合があります。 デプロイが完了するか仮想ネットワークの作成が完了したら、次の手順に進みます。
テスト用の仮想マシンを作成する
次の手順では、仮想ネットワークに vm-1 という名前のテスト仮想マシン (VM) を作成します。
ポータルで、[仮想マシン] を検索して選択します。
[仮想マシン] で [+ 作成]、[Azure 仮想マシン] の順に選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
設定 値 プロジェクトの詳細 サブスクリプション サブスクリプションを選択します。 Resource group test-rg を選択します。 インスタンスの詳細 仮想マシン名 「vm-1」と入力します。 リージョン [米国東部 2] を選択します。 可用性のオプション [インフラストラクチャ冗長は必要ありません] を選択します。 セキュリティの種類 規定値である [標準] のままにします。 Image [Windows Server 2022 Datacenter - x64 Gen2] を選択します。 VMアーキテクチャ 既定値の [x64] のままにします。 サイズ サイズを選択します。 管理者アカウント 認証の種類 [パスワード] を選択します。 ユーザー名 「azureuser」と入力します。 Password パスワードを入力します。 パスワードの確認 パスワードを再入力します。 受信ポートの規則 パブリック受信ポート [なし] を選択します。 ページの上部にある [ネットワーク] タブを選択します。
[ネットワーク] タブで、次の情報を入力または選択します。
設定 値 ネットワーク インターフェイス 仮想ネットワーク [vnet-1] を選択します。 Subnet subnet-1 (10.0.0.0/24) を選択します。 パブリック IP [なし] を選択します。 NIC ネットワーク セキュリティ グループ [Advanced] \(詳細設定) を選択します。 ネットワーク セキュリティ グループを構成する [新規作成] を選択します。
名前として「nsg-1」を入力します。
残りの部分は既定値のままにし、[OK] を選択します。残りの設定は既定値のままにし、[確認と作成] を選択します。
設定を確認し、 [作成] を選択します。
Note
Bastion ホストがある仮想ネットワーク内の仮想マシンには、パブリック IP アドレスが必要ありません。 Bastion がパブリック IP を提供し、VM はプライベート IP を使用してネットワーク内で通信します。 bastion ホストがある仮想ネットワーク内のいずれの VM からも、パブリック IP を削除できます。 詳細については、「パブリック IP アドレスの関連付けを Azure VM から解除する」を参照してください。
Note
パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。
次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。
- パブリック IP アドレスが VM に割り当てられます。
- アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
- Azure NAT Gateway リソースが VM のサブネットに割り当てられている。
フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。
Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する」を参照してください。
IP 構成を追加する
Azure CNI プラグインを使い、仮想マシンの仮想ネットワーク インターフェイスに作成した IP アドレスのプールに基づいて、コンテナーに IP アドレスを割り当てます。 ホスト上のすべてのコンテナーについて、仮想ネットワーク インターフェイス上に IP 構成が存在する必要があります。 サーバー上のコンテナーの数が仮想ネットワーク インターフェイスの IP 構成を上回る場合、コンテナーは起動しますが、IP アドレスがありません。
このセクションでは、前に作成した仮想マシンの仮想ネットワーク インターフェイスに IP 構成を追加します。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
[設定] の [ネットワーク] を選択します。
[ネットワーク インターフェイス:] の横にあるネットワーク インターフェイスの名前を選びます。 ネットワーク インターフェイスには vm-1 と乱数の名前が付けられています。
ネットワーク インターフェイスの [設定] で、 [IP 構成] を選択します。
[IP 構成] で、[名前] の [ipconfig1] を選びます。
ipconfig1 の設定で、プライベート IP アドレスの割り当てを [動的] から [静的] に変更します。
[保存] を選択します。
[IP 構成] に戻ります。
[+ 追加] を選択します。
[IP 構成の追加] に次の情報を入力するか選びます。
設定 値 名前 ipconfig-2 と入力します。 プライベート IP アドレスの設定 配賦 [静的] を選択します。 IP アドレス 「10.0.0.5」と入力します [OK] を選択します。
ipconfig2 がセカンダリ IP 構成として追加されたことを確認します。
手順 1 から 13 を繰り返して、コンテナー ホストにデプロイするコンテナーの数だけ構成を追加します。
Windows で IP アドレスを構成する
Windows 仮想マシンに複数の IP アドレスを割り当てるには、Windows のネットワーク インターフェイスに IP アドレスを追加する必要があります。 このセクションでは、仮想マシンにサインインし、前のセクションで作成した IP 構成を設定します。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
vm-1 の [概要] ページで、[接続]、[Bastion] の順に選びます。
前の手順で仮想マシンをデプロイしたときに作成したユーザー名とパスワードを入力します。
[接続] を選択します。
仮想マシンでネットワーク接続構成を開きます。 [スタート] ->[実行] を選択し、
ncpa.cpl
と入力します。[OK] を選択します。
仮想マシンのネットワーク インターフェイスを選択し、[プロパティ] を選択します。
[Ethernet Properties](イーサネット プロパティ) で [インターネット プロトコル バージョン 4 (TCP/IPv4)] を選択し、[プロパティ] を選択します。
[全般] タブで、次の情報を入力するか選びます。
設定 値 [次の IP アドレスを使う] を選択します。 IP アドレス: 10.0.0.4 と入力します サブネット マスク: 「255.255.255.0」と入力します デフォルト ゲートウェイ 10.0.0.1 と入力します [次の DNS サーバーのアドレスを使う] を選択します。 優先 DNS サーバー: 「168.63.129.16」と入力します この IP は、既定の Azure DNS の DHCP 割り当て IP アドレスです [Advanced...](詳細設定) を選択します。
[IP アドレス] で [追加...] を選択します。
次の情報を入力または選択します。
設定 値 TCP/IP アドレス IP アドレス: 10.0.0.5 と入力します サブネット マスク: 「255.255.255.0」と入力します [追加] を選択します。
以前に作成した追加の IP 構成に対応する IP アドレスをさらに追加するには、[追加] を選択します。
[OK] を選択します。
[OK] を選択します。
[OK] を選択します。
ネットワーク構成が適用されると、Bastion 接続が数秒間切断されます。 数秒待ってから再接続を試みます。 再接続が成功したら続行します。
Docker をインストールする
先ほど作成した仮想マシンに Docker コンテナー エンジンがインストールされ、構成されている必要があります。
仮想ネットワークを使ってデプロイした Azure Bastion ホストで、先ほど作成した仮想マシンにサインインします。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
vm-1 の [概要] ページで、[接続]、[Bastion] の順に選びます。
前の手順で仮想マシンをデプロイしたときに作成したユーザー名とパスワードを入力します。
接続を選択します。
vm-1 で Windows PowerShell を開きます。
次の例では、Docker CE/Moby をインストールします。
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1 .\install-docker-ce.ps1
仮想マシンが再起動して、コンテナー のサポートが Windows にインストールされます。 仮想マシンに再接続すると、Docker のインストールが続行されます。
Windows コンテナーの詳細については、「作業の開始: コンテナー用に Windows を準備する」を参照してください。
仮想マシンに Docker がインストールされたら、この記事の手順を続行します。
CNI プラグインと jq をインストールする
Azure CNI プラグインは GitHub プロジェクトとして管理されており、プロジェクトの GitHub ページからダウンロードできます。 この記事では、仮想マシン内の CNI プラグイン リポジトリをダウンロードし、プラグインをインストールして構成します。
Azure CNI プラグインの詳細については、Microsoft Azure Container Networking に関するページを参照してください。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
vm-1 の [概要] ページで、[接続]、[Bastion] の順に選びます。
前の手順で仮想マシンをデプロイしたときに作成したユーザー名とパスワードを入力します。
[接続] を選択します。
次の例を使用して、仮想マシン内の一時フォルダーに CNI プラグインをダウンロードして抽出します。
Invoke-WebRequest -Uri https://github.com/Azure/azure-container-networking/archive/refs/heads/master.zip -OutFile azure-container-networking.zip Expand-Archive azure-container-networking.zip -DestinationPath azure-container-networking
CNI プラグインをインストールするには、前の手順でダウンロードした CNI プラグイン フォルダーの scripts ディレクトリに変更します。 このインストール スクリプト コマンドには CNI プラグインのバージョン番号が必要です。 この記事の執筆時点では、最新バージョンは
v1.4.39
です。 プラグインの最新バージョン番号または以前のバージョンを取得するには、リリースのページを参照してください。cd .\azure-container-networking\azure-container-networking-master\scripts\ .\Install-CniPlugin.ps1 v1.4.39
CNI プラグインには、プラグイン用の組み込みのネットワーク構成ファイルが付属しています。 次の例を使用して、ファイルをネットワーク構成ディレクトリにコピーします。
Copy-Item -Path "c:\k\azurecni\bin\10-azure.conflist" -Destination "c:\k\azurecni\netconf"
jq をインストールする
Azure CNI プラグインを使用してコンテナーを作成するスクリプトには、jq アプリケーションが必要です。 詳細とダウンロード場所については、jq のダウンロードに関するページを参照してください。
仮想マシンで Web ブラウザーを開き、jq アプリケーションをダウンロードします。
ダウンロードは、アプリケーションの自己完結型実行可能ファイルです。 実行可能ファイル
jq-win64.exe
をC:\Windows
ディレクトリにコピーします。
テスト コンテナーを作成する
CNI プラグインでコンテナーを起動するには、プラグインに付属する特別なスクリプトを使ってコンテナーを作成し、起動する必要があります。 次の例では、CNI プラグイン スクリプトを使用して Windows Server コンテナーを作成します:
cd .\azure-container-networking\azure-container-networking-master\scripts\ .\docker-exec.ps1 vnetdocker1 default mcr.microsoft.com/windows/servercore/iis add
コンテナーのイメージが初めてダウンロードされるまでには数分かかる場合があります。 コンテナーが起動してネットワークを初期化すると、Bastion 接続が切断されます。 数秒待ってから接続を再確立します。
先ほど構成した IP アドレスをコンテナーが受信したことを確認するには、コンテナーに接続し、IP を確認します。
docker exec -it vnetdocker1 powershell
次の例の
ipconfig
コマンドを使い、コンテナーに IP アドレスが割り当てられたことを確認します。ipconfig
コンテナーを終了し、vm-1 への Bastion 接続を閉じます。
作成したリソースを使い終えたら、リソース グループとそのすべてのリソースを削除できます。
Azure portal で、「リソース グループ」を検索して選択します。
[リソース グループ] ページで、test-rg リソース グループを選択します。
[test-rg] ページで、[リソース グループの削除] を選択します。
[削除を確認するために、リソース グループの名前を入力してください] に「test-rg」と入力して、[削除] を選びます。
次のステップ
この記事では、Azure CNI プラグインをインストールし、テスト コンテナーを作成する方法について説明しました。
Azure コンテナー ネットワークと Azure Kubernetes サービスの詳細については、以下を参照してください。