次の方法で共有


Azure portal を使用して Azure Kubernetes Service (AKS) クラスター上に Windows Server コンテナーをデプロイする

Azure Kubernetes Service (AKS) は、クラスターをすばやくデプロイおよび管理することができる、マネージド Kubernetes サービスです。 この記事では、Azure portal を使用して Windows Server コンテナーを実行する AKS クラスターをデプロイします。 また、Windows Server コンテナー内の ASP.NET サンプル アプリケーションをクラスターにデプロイします。

Note

AKS クラスターの迅速なプロビジョニングを開始するため、この記事には、評価のみを目的とした既定の設定でクラスターをデプロイする手順が含まれています。 運用環境に対応したクラスターをデプロイする前に、ベースライン参照アーキテクチャを理解して、ビジネス要件にどの程度合致しているかを検討することをお勧めします。

開始する前に

このクイックスタートは、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、「Azure Kubernetes Services (AKS) における Kubernetes の中心概念」を参照してください。

AKS クラスターを作成する

  1. Azure portal にサインインします。

  2. Azure portal のホーム ページで [リソースの作成] を選択します。

  3. [カテゴリ] セクションで、[コンテナー]>[Azure Kubernetes Service (AKS)] を選択します。

  4. [基本] タブで次のオプションを構成します。

    • [プロジェクトの詳細] で:
      • Azure のサブスクリプションを選択します
      • Azure リソース グループを作成します (myResourceGroup など)。 既存のリソース グループを選択することもできますが、テストまたは評価目的の場合は、これらのリソースを一時的にホストし、運用ワークロードや開発ワークロードに影響を与えないようにリソース グループを作成することをお勧めします。
    • [クラスターの詳細] で、次のようにします。
      • [クラスターのプリセット構成][Production Standard] に設定します。 プリセットの構成の詳細については、Azure portal の「クラスター構成プリセット」を参照してください。

        Note

        クラスターを作成するときに [Compare presets] (プリセットの比較) を選択し、別のオプションを選択することで、プリセットの構成を変更できます。 AKS クラスターの作成 - ポータルのプリセット オプションのスクリーンショット。

      • Kubernetes クラスター名 (たとえば、myAKSCluster) を入力します。

      • AKS クラスターの [リージョン] を選択します。

      • [可用性ゾーン] 設定を [なし] のままにします。

      • [AKS 価格レベル]の設定を [Standard] のままにします。

      • Kubernetes バージョンは既定値を選択したままにします。

      • [Automatic upgrade] (自動アップグレード) 設定は推奨値の [Enabled with patch] (パッチで有効にする) に設定したままにします。

      • [認証と認可] 設定は、[Kubernetes RBAC を使用したローカル アカウント] に設定したままにします。

        Azure portal で AKS クラスターを構成する方法を示すスクリーンショット。

  5. [次へ] を選択します。 [ノード プール] タブで、新しいノード プールを追加します。

    • [ノード プールの追加] を選択します。

    • npwin などのノード プール名を入力します。 Windows ノード プールの場合、名前は 6 文字以下にする必要があります。

    • [モード][ユーザー] を選択します。

    • OS SKU の場合は、Windows を選択します。

    • [可用性ゾーン] 設定を [なし] のままにします。

    • [Azure スポット インスタンスを有効にする] チェック ボックスはオフのままにします。

    • [ノード サイズ] で、[サイズの選択] を選択します。 [VM サイズの選択] ページで、[D2s_v3] を選択してから、[選択] ボタンを選択します。

    • [スケーリング方法] 設定を [自動スケーリング] に設定したままにします。

    • [Minimum node count] (最小ノード数)[Maximum node count] (最大ノード数) のフィールドを既定の設定のままにします。

      Windows Server を実行するノード プールを作成する方法を示すスクリーンショット。

  6. 他のタブのすべての設定を既定値に設定したままにします。

  7. [確認と作成] を選択して、クラスター構成で検証を実行します。 検証が完了したら、[作成] を選択して AKS クラスターを作成します。

AKS クラスターの作成には数分かかります。 デプロイが完了したら、次のいずれかの方法でリソースに移動します。

  • [リソースに移動] を選択します。
  • AKS クラスター リソース グループを参照し、AKS リソースを選択します。 この例では、myResourceGroup を参照し、リソース myAKSCluster を選択します。

クラスターに接続する

Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使用します。 Azure Cloud Shell を使用している場合、kubectl は既にインストールされています。 Cloud Shell について初めて学ぶ場合は、「Azure Cloud Shell の概要」を確認してください。

  1. Azure portal ページの上部にある >_ ボタンを選択して、Cloud Shell を開きます。

  2. az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように kubectl を構成します。 次のコマンドを使用すると、資格情報がダウンロードされ、それを使用するように Kubernetes CLI が構成されます。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. クラスターへの接続を確認するには、クラスター ノードの一覧を返す kubectl get nodes コマンドを使用します。

    kubectl get nodes
    

    次の出力例は、クラスター内のすべてのノードを示しています。 すべてのノードの状態が [準備完了] であることを確認します。

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-agentpool-41946322-vmss000001   Ready    agent   28h   v1.27.7
    aks-agentpool-41946322-vmss000002   Ready    agent   28h   v1.27.7
    aks-npwin-41946322-vmss000000       Ready    agent   28h   v1.27.7
    aks-userpool-41946322-vmss000001    Ready    agent   28h   v1.27.7
    aks-userpool-41946322-vmss000002    Ready    agent   28h   v1.27.7
    

アプリケーションをデプロイする

Kubernetes のマニフェスト ファイルでは、どのコンテナー イメージを実行するかなど、クラスターの望ましい状態を定義します。 このクイックスタートでは、Windows Server コンテナー内で ASP.NET サンプル アプリケーションを実行するために必要なすべてのオブジェクトを作成するのにマニフェスト ファイルを使用します。 このマニフェスト ファイルには、ASP.NET サンプル アプリケーションの Kubernetes デプロイと、インターネットからアプリケーションにアクセスするための外部 Kubernetes サービスが含まれています。

ASP.NET サンプル アプリケーションは、.NET Framework のサンプルの一部として提供され、Windows Server コンテナー内で実行されます。 AKS では、Windows Server コンテナーは Windows Server 2019 以降のイメージをベースにしている必要があります。 Kubernetes マニフェスト ファイルではまた、ノード セレクターを定義する必要があり、この定義では、Windows Server コンテナーを実行できるノード上でご利用の ASP.NET サンプル アプリケーションのポッドを実行するように AKS クラスターに指示します。

  1. sample.yaml という名前のファイルを作成し、以下の YAML 定義を貼り付けます。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      replicas: 1
      template:
        metadata:
          name: sample
          labels:
            app: sample
        spec:
          nodeSelector:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            ports:
              - containerPort: 80
      selector:
        matchLabels:
          app: sample
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 80
      selector:
        app: sample
    

    YAML マニフェスト ファイルの内訳については、「デプロイと YAML マニフェスト」を参照してください。

    YAML ファイルをローカルに作成して保存する場合は、[ファイルのアップロード/ダウンロード] ボタンを選択し、ローカル ファイル システムからファイルを選択することで、CloudShell の既定のディレクトリにマニフェスト ファイルをアップロードできます。

  2. kubectl apply コマンドを使用してアプリケーションをデプロイし、ご利用の YAML マニフェストの名前を指定します。

    kubectl apply -f sample.yaml
    

    次の出力例は、デプロイおよびサービスが正常に作成されたことを示しています。

    deployment.apps/sample created
    service/sample created
    

アプリケーションをテストする

アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。 場合によっては、サービスのプロビジョニングに数分以上かかることがあります。 プロビジョニングには最大 10 分かかります。

  1. kubectl get pods コマンドを使って、デプロイされたポッドの状態を確認します。 続行する前に、すべてのポッドを Running の状態にします。

    kubectl get pods
    
  2. kubectl get service コマンドと --watch 引数を使用して、進行状況を監視します。

    kubectl get service sample --watch
    

    最初に、サンプル サービスの EXTERNAL-IP が "保留中" として表示されます。

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    sample             LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    

    EXTERNAL-IP アドレスが "保留中" から実際のパブリック IP アドレスに変わったら、CTRL-C を使用して kubectl ウォッチ プロセスを停止します。 次のサンプル出力は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。

    sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  3. Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスして、サンプル アプリが動作していることを確認します。

    ASP.NET サンプル アプリケーションを参照しているスクリーンショット。

リソースを削除する

AKS チュートリアルを実行する予定がない場合は、Azure の料金が発生しないようにクラスターを削除する必要があります。

  1. Azure Portalで、リソース グループに移動します。

  2. [リソース グループの削除] を選択します。

  3. 削除を確認するためにリソース グループの名前を入力し、[削除] を選択します。

  4. [削除の確認] ダイアログ ボックスで [削除] を選びます。

    注意

    AKS クラスターはシステム割り当てマネージド ID (このクイックスタートで使用した既定の ID オプション) を使用して作成されました。ID はプラットフォームによって管理され、削除する必要はありません。

次のステップ

このクイックスタートでは、Kubernetes クラスターをデプロイした後、そこへ Windows Server コンテナー内の ASP.NET サンプル アプリケーションをデプロイしました。 このサンプル アプリケーションはデモ専用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。

AKS の詳細を学習し、コードからデプロイまでの完全な例を確認するには、Kubernetes クラスター チュートリアルに進んでください。