Azure Portal を使用して Docker コンテナーのホスティング ソリューションをデプロイする

Azure コンテナー サービスでは、人気のオープン ソースのコンテナー クラスタリングやオーケストレーション ソリューションを短期間でデプロイできます。 このドキュメントでは、Azure Portal または Azure Resource Manager クイックスタート テンプレートを使用して Azure Container Service クラスターをデプロイする手順について説明します。

Azure CLI 2.0 または Azure Container Service API を使用して、Azure Container Service クラスターをデプロイすることもできます。

背景については、Azure Container Service の概要に関するページをご覧ください。

前提条件

  • Azure サブスクリプション: お持ちでない場合は、無料試用版にサインアップしてください。 大規模なクラスターでは、従量課金制のサブスクリプションまたはその他の購入オプションを検討してください。

    注意

    Azure サブスクリプションの使用状況とリソース クォータ (コア クォータなど) によって、デプロイするクラスターのサイズが制限される場合があります。 クォータを増やすためのリクエストは、オンライン カスタマー サポートに申請 (無料) してください。

  • SSH RSA 公開キー: ポータルまたはいずれかの Azure クイックスタート テンプレートを通じてデプロイする場合は、Azure Container Service 仮想マシンに対する認証のための公開キーを指定する必要があります。 Secure Shell (SSH) RSA キーを作成するには、OS X と Linux または Windows のガイダンスを参照してください。

  • サービス プリンシパル クライアント ID とシークレット (Kubernetes のみ): Azure Active Directory サービス プリンシパルの作成の詳細とガイダンスについては、Kubernetes クラスターのサービス プリンシパルに関するページを参照してください。

Azure Portal を使用してクラスターを作成する

  1. Azure Portal にサインインし、[新規] を選択して、Azure Marketplace で Azure Container Service を検索します。

    Marketplace の Azure Container Service

  2. [Azure Container Service][作成] の順にクリックします。

  3. [基本] ブレードで、次の情報を入力します。

    • [Orchestrator]: クラスターにデプロイするコンテナー オーケストレーターのいずれかを選択します。
      • [DC/OS]: DC/OS クラスターをデプロイします。
      • [Swarm]: Docker Swarm クラスターをデプロイします。
      • [Kubernetes]: Kubernetes クラスターをデプロイします。
    • [サブスクリプション]: Azure サブスクリプションを選択します。
    • [リソース グループ]: デプロイの新しいリソース グループの名前を入力します。
    • [場所]: Azure コンテナー サービスのデプロイの Azure リージョンを選択します。 利用できるかどうかについては、「リージョン別の利用可能な製品」を参照してください。

      [基本設定]

      準備が完了したら、 [OK] をクリックします。

  4. [Master configuration (マスター構成)] ブレードで、クラスターの Linux マスター ノードに対する次の設定を入力します (一部の設定はオーケストレーターに固有です)。

    • [Master DNS name (マスター DNS 名)]: マスターの一意の完全修飾ドメイン名 (FQDN) を作成するときに使用されるプレフィックス。 マスター FQDN は、prefixmgmt.location.cloudapp.azure.com という形式です。
    • [ユーザー名]: クラスターにある各 Linux 仮想マシンのアカウントのユーザー名。
    • [SSH RSA public key (SSH RSA 公開キー)]: Linux 仮想マシンに対する認証に使用される公開キーを追加します。 このキーに改行を含めないことと、ssh-rsa プレフィックスを付けることが重要です。 username@domain ポストフィックスは省略可能です。 キーは、ssh-rsa AAAAB3Nz...<...>...UcyupgH azureuser@linuxvm のようになります。
    • [サービス プリンシパル]: Kubernetes オーケストレーターを選択した場合は、Azure Active Directory のサービス プリンシパルのクライアント ID (appID とも呼ばれます) とサービス プリンシパルのクライアント シークレット (パスワード) を入力する必要があります。 詳細については、Kubernetes クラスターのサービス プリンシパルに関するページを参照してください。
    • [Master count (マスター数)]: クラスターのマスター数。
    • [VM diagnostics (VM 診断)]: 一部のオーケストレーターでは、マスターで VM 診断を有効にできます。

      マスター構成

      準備が完了したら、 [OK] をクリックします。

  5. [エージェント構成] ブレードで、次の情報を入力します。

    • [Agent count (エージェント数)]: Docker Swarm と Kubernetes の場合、この値はエージェント スケール セットのエージェントの初期数になります。 DC/OS の場合は、プライベート スケール セットのエージェントの初期数です。 また、事前に決められた数のエージェントを含むパブリック スケール セットが、DC/OS 用に作成されます。 このパブリック スケール セットのエージェント数は、クラスター内のマスター数によって決まります (1 マスターに 1 パブリック エージェント、3 または 5 マスターに 2 パブリック エージェント)。
    • [Agent virtual machine size (エージェント仮想マシン サイズ)]: エージェント仮想マシンのサイズ。
    • [オペレーティング システム]: 現在、この設定は Kubernetes オーケストレーターを選択した場合にのみに使用できます。 エージェントで実行するオペレーティング システムとして、Linux ディストリビューションまたは Windows Server のいずれかを選択します。 この設定によって、Linux または Windows のどちらのコンテナー アプリをクラスターで実行できるかが決まります。

      注意

      Kubernetes クラスターの場合、Windows コンテナーのサポートはプレビュー段階です。 DC/OS および Swarm クラスターについては、現在 Linux エージェントのみが Azure Container Service でサポートされています。

    • [エージェントの資格情報]: Windows オペレーティング システムを選択した場合は、エージェント VM に対する管理者のユーザー名パスワードを入力します。

      エージェントの構成

      準備が完了したら、 [OK] をクリックします。

  6. サービスの検証が完了したら、[OK] をクリックします。

    検証

  7. 使用条件を確認します。 デプロイ プロセスを開始するには、[作成] をクリックします。

    デプロイを Azure ポータルに固定した場合、デプロイの状態を確認できます。

    [デプロイ ステータス]

デプロイが完了するまで、数分間かかります。 その後、Azure Container Service クラスターを利用できるようになります。

クイックスタート テンプレートを使用してクラスターを作成する

Azure クイックスタート テンプレートは、Azure Container Service でクラスターをデプロイするために使用できます。 提供されたクイック スタート テンプレートを変更して、Azure の追加または高度な構成を含めることができます。 Azure クイックスタート テンプレートを使用して Azure Container Service クラスターを作成するには、Azure サブスクリプションが必要です。 お持ちでない場合は、無料試用版にサインアップしてください。

テンプレートと Azure CLI 2.0 を使用してクラスターをデプロイするには、以下の手順に従ってください (インストールとセットアップの手順を参照)。

注意

Windows システムの場合は、同様の手順で、Azure PowerShell を使用してテンプレートをデプロイすることができます。 このセクションの後の方の手順を参照してください。 ポータルまたはその他の方法でテンプレートをデプロイすることもできます。

  1. DC/OS、Docker Swarm、または Kubernetes のクラスターをデプロイするには、GitHub から使用可能なクイックスタート テンプレートのいずれかを選択します。 一覧の一部を次に示します。 既定のオーケストレーターの選択を除き、DC/OS と Swarm のテンプレートは同じです。

  2. Azure アカウントにログイン (az login) し、Azure CLI が Azure サブスクリプションに接続されていることを確認します。 次のコマンドを使用して、既定のサブスクリプションを確認できます。

    az account show
    

    複数のサブスクリプションがあり、別の既定のサブスクリプションを設定する必要がある場合は、az account set --subscription を実行し、サブスクリプション ID または名前を指定します。

  3. ベスト プラクティスとしては、デプロイ用の新しいリソース グループを使用することをお勧めします。 リソース グループを作成するには、次のように az group create コマンドを使用し、リソース グループの名前と場所を指定します。

    az group create --name "RESOURCE_GROUP" --location "LOCATION"
    
  4. 必要なテンプレート パラメーターが含まれている JSON ファイルを作成します。 azuredeploy.parameters.json という名前のパラメーター ファイルをダウンロードします。このファイルは、GitHub の Azure Container Service テンプレート azuredeploy.json に付属しています。 クラスターの必須パラメーター値を入力します。

    たとえば、DC/OS テンプレートを使用するには、dnsNamePrefixsshRSAPublicKey のパラメーター値を指定します。 他のパラメーターについては、azuredeploy.json とオプションの説明を参照してください。

  5. 次のコマンドでデプロイ パラメーター ファイルを渡して、Container Service クラスターを作成します。このコマンドで、以下のものを指定します。

    • RESOURCE_GROUP は、前の手順で作成したリソース グループの名前です。
    • DEPLOYMENT_NAME (省略可能) は、デプロイに付ける名前です。
    • TEMPLATE_URI は、デプロイ ファイル azuredeploy.json の場所です。 この URI は、GitHub UI へのポインターではなく、Raw ファイルである必要があります。 この URI を調べるには、GitHub で azuredeploy.json ファイルを選択し、[Raw] ボタンをクリックします。

      az group deployment create -g RESOURCE_GROUP -n DEPLOYMENT_NAME --template-uri TEMPLATE_URI --parameters @azuredeploy.parameters.json
      

      コマンド ラインで JSON 形式の文字列としてパラメーターを指定することもできます。 次のようなコマンドを使用します。

      az group deployment create -g RESOURCE_GROUP -n DEPLOYMENT_NAME --template-uri TEMPLATE_URI --parameters "{ \"param1\": {\"value1\"} … }"
      
      注意

      デプロイが完了するまで、数分間かかります。

同等の PowerShell コマンド

PowerShell を使用して Azure Container Service クラスター テンプレートをデプロイすることもできます。 このドキュメントはバージョン 1.0 の Azure PowerShell モジュールに基づいています。

  1. DC/OS、Docker Swarm、または Kubernetes のクラスターをデプロイするには、GitHub から使用可能なクイックスタート テンプレートのいずれかを選択します。 一覧の一部を次に示します。 既定のオーケストレーターの選択を除き、DC/OS と Swarm のテンプレートは同じです。

  2. Azure サブスクリプションでクラスターを作成する前に、PowerShell セッションが Azure にサインインしていることを確認します。 そのためには、 Get-AzureRMSubscription コマンドを使用します。

    Get-AzureRmSubscription
    
  3. Azure にサインインする必要がある場合、 Login-AzureRMAccount コマンドを使用します。

    Login-AzureRmAccount
    
  4. ベスト プラクティスとしては、デプロイ用の新しいリソース グループを使用することをお勧めします。 リソース グループを作成するには、New-AzureRmResourceGroup コマンドを使用し、リソース グループの名前とターゲット リージョンを指定します。

    New-AzureRmResourceGroup -Name GROUP_NAME -Location REGION
    
  5. リソース グループを作成したら、次のコマンドでクラスターを作成できます。 目的のテンプレートの URI は -TemplateUri パラメーターで指定されます。 このコマンドを実行すると、PowerShell からデプロイのパラメーター値の入力が求められます。

    New-AzureRmResourceGroupDeployment -Name DEPLOYMENT_NAME -ResourceGroupName RESOURCE_GROUP_NAME -TemplateUri TEMPLATE_URI
    

テンプレート パラメーターを指定する

PowerShell に慣れている場合は、マイナス記号 (-) を入力して Tab キーを押すことで、コマンドレットで利用可能なパラメーターを順番に表示できることをご存じのことと思われます。 この機能は、テンプレートで定義するパラメーターでも同様に使用できます。 テンプレート名を入力すると、コマンドレットがすぐにテンプレートをフェッチし、パラメーターを解析して、テンプレート パラメーターをコマンドに動的に追加します。 これにより、テンプレート パラメーターの値の指定が簡単になります。 また、必須のパラメーター値を忘れた場合は、PowerShell から値を求められます。

パラメーターが含まれている完全なコマンドを次に示します。 リソースの名前には独自の値を指定します。

New-AzureRmResourceGroupDeployment -ResourceGroupName RESOURCE_GROUP_NAME-TemplateURI TEMPLATE_URI -adminuser value1 -adminpassword value2 ....

次のステップ

これでクラスターが機能します。接続と管理の詳細については、次のドキュメントを参照してください。