スタンドアロン Linux Docker ホスト用のコンテナー ネットワークをデプロイする

Azure CNI プラグインを使うと、スタンドアロン Docker ホストと Kubernetes クラスターに対してコンテナーまたはポッド単位のネットワーク接続を実現できます。 この記事では、スタンドアロンの Linux Docker ホスト用に CNI プラグインをインストールして構成する方法について説明します。

前提条件

仮想ネットワークと Azure Bastion ホストを作成する

次の手順では、リソース サブネット、Azure Bastion サブネット、Bastion ホストを含む仮想ネットワークを作成します。

  1. ポータルで、[仮想ネットワーク] を検索して選択します。

  2. [仮想ネットワーク] ページで、[+ 作成] を選択します。

  3. [仮想ネットワークの作成][基本] タブで、以下の情報を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group [新規作成] を選択します。
    名前に「test-rg」と入力します。

    を選択します。
    インスタンスの詳細
    Name vnet-1」と入力します。
    リージョン [米国東部 2] を選択します。

    Azure portal で仮想ネットワークを作成するための [基本] タブのスクリーンショット。

  4. [次へ] を選択して、[セキュリティ] タブに進みます。

  5. [Azure Bastion] セクションで、[Azure Bastion を有効にする] を選びます。

    Bastion では、ユーザーのブラウザーとプライベート IP アドレスを使って、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) 経由で仮想ネットワーク内の VM に接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 詳細については、Azure Bastion に関するページを参照してください。

    Note

    時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。

  6. [Azure Bastion] で、次の情報を入力するか選びます。

    設定
    Azure Bastion ホスト名 bastion」と入力します。
    Azure Bastion のパブリック IP アドレス [Create a public IP address] (パブリック IP アドレスを作成する) を選びます。
    [名前] に「public-ip-bastion」と入力します。

    を選択します。

    Azure portal で仮想ネットワークを作成する際に Azure Bastion ホストを有効にするためのオプションのスクリーンショット。

  7. [次へ] を選択して、[IP アドレス] タブに進みます。

  8. [サブネット] のアドレス空間ボックスで、既定のサブネットを選択します。

  9. [サブネットの編集] で次の情報を入力または選択します。

    設定 Value
    サブネットの目的 既定値の [既定値] のままにします。
    名前 subnet-1」と入力します。
    IPv4
    IPv4 アドレス範囲 既定値である 10.0.0.0/16 のままにします。
    開始アドレス 既定値の 10.0.0.0 のままにします。
    サイズ 既定値の [/24 (256 アドレス)] のままにします。

    サブネットの構成の詳細のスクリーンショット。

  10. [保存] を選択します。

  11. ウィンドウの下部にある [確認および作成] を選びます。 検証に合格した場合は、[作成] を選択します。

Bastion ホストがデプロイされるまでに数分かかります。 Bastion ホストがデプロイされている間、手順を続行できます。

テスト用の仮想マシンを作成する

次の手順では、仮想ネットワークに vm-1 という名前のテスト仮想マシン (VM) を作成します。

  1. ポータルで、[仮想マシン] を検索して選択します。

  2. [仮想マシン][+ 作成][Azure 仮想マシン] の順に選択します。

  3. [仮想マシンの作成][基本] タブで、次の情報を入力または選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group test-rg を選択します。
    インスタンスの詳細
    仮想マシン名 vm-1」と入力します。
    リージョン [米国東部 2] を選択します。
    可用性のオプション [インフラストラクチャ冗長は必要ありません] を選択します。
    セキュリティの種類 規定値である [標準] のままにします。
    Image [Ubuntu Server 22.04 LTS - x64 Gen2] を選びます。
    VMアーキテクチャ 既定値の [x64] のままにします。
    サイズ サイズを選択します。
    管理者アカウント
    認証の種類 [パスワード] を選択します。
    ユーザー名 azureuser」と入力します。
    Password パスワードを入力します。
    パスワードの確認 パスワードを再入力します。
    受信ポートの規則
    パブリック受信ポート [なし] を選択します。
  4. ページの上部にある [ネットワーク] タブを選択します。

  5. [ネットワーク] タブで、次の情報を入力または選択します。

    設定
    ネットワーク インターフェイス
    仮想ネットワーク [vnet-1] を選択します。
    Subnet subnet-1 (10.0.0.0/24) を選択します。
    パブリック IP [なし] を選択します。
    NIC ネットワーク セキュリティ グループ [Advanced] \(詳細設定) を選択します。
    ネットワーク セキュリティ グループを構成する [新規作成] を選択します。
    名前として「nsg-1」を入力します。
    残りの部分は既定値のままにし、[OK] を選択します。
  6. 残りの設定は既定値のままにし、[確認と作成] を選択します。

  7. 設定を確認し、 [作成] を選択します。

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 構成を追加します。

  1. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。

  2. vm-1 を選択します。

  3. [設定][ネットワーク] を選択します。

  4. [ネットワーク インターフェイス:] の横にあるネットワーク インターフェイスの名前を選びます。 ネットワーク インターフェイスには vm-1 と乱数の名前が付けられています。

  5. ネットワーク インターフェイスの [設定] で、 [IP 構成] を選択します。

  6. [IP 構成] で、[名前][ipconfig1] を選びます。

  7. ipconfig1 の設定で、プライベート IP アドレスの割り当てを [動的] から [静的] に変更します。

  8. [保存] を選択します。

  9. [IP 構成] に戻ります。

  10. [+ 追加] を選択します。

  11. [IP 構成の追加] に次の情報を入力するか選びます。

    設定
    名前 ipconfig-2 と入力します。
    プライベート IP アドレスの設定
    配賦 [静的] を選択します。
    IP アドレス 10.0.0.5」と入力します
  12. [OK] を選択します。

  13. ipconfig-2 セカンダリ IP 構成として追加されていることを確認します。

前の手順を繰り返して、コンテナー ホストにデプロイするコンテナーと同じ数の構成を追加します。

Docker をインストールする

先ほど作成した仮想マシンに Docker コンテナー エンジンがインストールされ、構成されている必要があります。

仮想ネットワークを使ってデプロイした Azure Bastion ホストで、先ほど作成した仮想マシンにサインインします。

  1. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。

  2. vm-1 を選択します。

  3. vm-1[概要] ページで、[接続][Bastion] の順に選びます。

  4. 前の手順で仮想マシンをデプロイしたときに作成したユーザー名とパスワードを入力します。

  5. [接続] を選択します。

Ubuntu コンテナー ホストへの Docker のインストール手順については、「Install Docker Engine on Ubuntu」(Ubuntu に Docker Engine をインストールする) を参照してください。

仮想マシンに Docker がインストールされたら、Linux のインストール後の手順を実行します。 Linux のインストール後の手順については、「Docker Engine post-installation steps」(Docker Engine のインストール後の手順) を参照してください。

仮想マシンに Docker がインストールされたら、この記事の手順を続行します。

CNI プラグインのインストールとテスト コンテナーの作成

Azure CNI プラグインは GitHub プロジェクトとして管理されており、プロジェクトの GitHub ページからダウンロードできます。 この記事では、仮想マシン内の git を使用してプラグインのリポジトリを複製し、プラグインをインストールして構成します。

Azure CNI プラグインの詳細については、Microsoft Azure Container Networking に関するページを参照してください。

  1. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。

  2. vm-1 を選択します。

  3. vm-1[概要] ページで、[接続][Bastion] の順に選びます。

  4. 前の手順で仮想マシンをデプロイしたときに作成したユーザー名とパスワードを入力します。

  5. [接続] を選択します。

  6. CNI プラグインのインストール スクリプトには、アプリケーション jq が必要です。次の例を参考にしてアプリケーションをインストールしてください。

    sudo apt-get update
    sudo apt-get install jq
    
  7. 次に、CNI プラグインのリポジトリを複製します。 次の例を参考にしてリポジトリをクローンします。

    git clone https://github.com/Azure/azure-container-networking.git
    
  8. アクセス許可を構成し、CNI プラグインをインストールします。 このインストール スクリプト コマンドには CNI プラグインのバージョン番号が必要です。 この記事の執筆時点では、最新バージョンは v1.4.39 です。 プラグインの最新バージョン番号または以前のバージョンを取得するには、リリースのページを参照してください。

    cd ./azure-container-networking/scripts
    chmod u+x install-cni-plugin.sh
    sudo ./install-cni-plugin.sh v1.4.39
    chmod u+x docker-run.sh
    
  9. CNI プラグインでコンテナーを起動するには、プラグインに付属する特別なスクリプトを使ってコンテナーを作成し、起動する必要があります。 次の例では、CNI プラグイン スクリプトを使用して Alpine コンテナーを作成します:

    sudo ./docker-run.sh vnetdocker1 default alpine
    
  10. 先ほど構成した IP アドレスをコンテナーが受信したことを確認するには、コンテナーに接続し、IP を確認します。

    sudo docker exec -it vnetdocker1 /bin/sh
    
  11. 次の例の ifconfig コマンドを使い、コンテナーに IP アドレスが割り当てられたことを確認します。

    ifconfig
    

    テスト コンテナーの Bash プロンプトに表示された ifconfig の出力のスクリーンショット。

リソースをクリーンアップする

作成したリソースの使用を終えたら、リソース グループとそのすべてのリソースを削除できます。

  1. Azure portal で、「リソース グループ」を検索して選択します。

  2. [リソース グループ] ページで、test-rg リソース グループを選択します。

  3. [test-rg] ページで、[リソース グループの削除] を選択します。

  4. [削除を確認するために、リソース グループの名前を入力してください] に「test-rg」と入力して、[削除] を選びます。

次のステップ

この記事では、Azure CNI プラグインをインストールし、テスト コンテナーを作成する方法について説明しました。

Azure コンテナー ネットワークと Azure Kubernetes サービスの詳細については、以下を参照してください。