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 の中心概念」を参照してください。
- Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
- Cloud Shell について初めて学ぶ場合は、「Azure Cloud Shell の概要」を確認してください。
- クラスターの作成に使用している ID に、適切な最小限のアクセス許可が与えられていることを確認します。 AKS のアクセスと ID の詳細については、「Azure Kubernetes Service (AKS) でのアクセスと ID オプション」を参照してください。
AKS クラスターを作成する
Azure portal にサインインします。
Azure portal のホーム ページで [リソースの作成] を選択します。
[カテゴリ] セクションで、[コンテナー]>[Azure Kubernetes Service (AKS)] を選択します。
[基本] タブで次のオプションを構成します。
- [プロジェクトの詳細] で:
- Azure のサブスクリプションを選択します
- Azure リソース グループを作成します (myResourceGroup など)。 既存のリソース グループを選択することもできますが、テストまたは評価目的の場合は、これらのリソースを一時的にホストし、運用ワークロードや開発ワークロードに影響を与えないようにリソース グループを作成することをお勧めします。
- [クラスターの詳細] で、次のようにします。
[クラスターのプリセット構成] を [Production Standard] に設定します。 プリセットの構成の詳細については、Azure portal の「クラスター構成プリセット」を参照してください。
Kubernetes クラスター名 (たとえば、myAKSCluster) を入力します。
AKS クラスターの [リージョン] を選択します。
[可用性ゾーン] 設定を [なし] のままにします。
[AKS 価格レベル]の設定を [Standard] のままにします。
Kubernetes バージョンは既定値を選択したままにします。
[Automatic upgrade] (自動アップグレード) 設定は推奨値の [Enabled with patch] (パッチで有効にする) に設定したままにします。
[認証と認可] 設定は、[Kubernetes RBAC を使用したローカル アカウント] に設定したままにします。
- [プロジェクトの詳細] で:
[次へ] を選択します。 [ノード プール] タブで、新しいノード プールを追加します。
[ノード プールの追加] を選択します。
npwin などのノード プール名を入力します。 Windows ノード プールの場合、名前は 6 文字以下にする必要があります。
[モード] で [ユーザー] を選択します。
OS SKU の場合は、Windows を選択します。
[可用性ゾーン] 設定を [なし] のままにします。
[Azure スポット インスタンスを有効にする] チェック ボックスはオフのままにします。
[ノード サイズ] で、[サイズの選択] を選択します。 [VM サイズの選択] ページで、[D2s_v3] を選択してから、[選択] ボタンを選択します。
[スケーリング方法] 設定を [自動スケーリング] に設定したままにします。
[Minimum node count] (最小ノード数) と [Maximum node count] (最大ノード数) のフィールドを既定の設定のままにします。
他のタブのすべての設定を既定値に設定したままにします。
[確認と作成] を選択して、クラスター構成で検証を実行します。 検証が完了したら、[作成] を選択して AKS クラスターを作成します。
AKS クラスターの作成には数分かかります。 デプロイが完了したら、次のいずれかの方法でリソースに移動します。
- [リソースに移動] を選択します。
- AKS クラスター リソース グループを参照し、AKS リソースを選択します。 この例では、myResourceGroup を参照し、リソース myAKSCluster を選択します。
クラスターに接続する
Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使用します。 Azure Cloud Shell を使用している場合、kubectl
は既にインストールされています。 Cloud Shell について初めて学ぶ場合は、「Azure Cloud Shell の概要」を確認してください。
Azure portal ページの上部にある
>_
ボタンを選択して、Cloud Shell を開きます。az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように
kubectl
を構成します。 次のコマンドを使用すると、資格情報がダウンロードされ、それを使用するように Kubernetes CLI が構成されます。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
クラスターへの接続を確認するには、クラスター ノードの一覧を返す
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 クラスターに指示します。
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 の既定のディレクトリにマニフェスト ファイルをアップロードできます。
kubectl apply コマンドを使用してアプリケーションをデプロイし、ご利用の YAML マニフェストの名前を指定します。
kubectl apply -f sample.yaml
次の出力例は、デプロイおよびサービスが正常に作成されたことを示しています。
deployment.apps/sample created service/sample created
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。 場合によっては、サービスのプロビジョニングに数分以上かかることがあります。 プロビジョニングには最大 10 分かかります。
kubectl get pods コマンドを使って、デプロイされたポッドの状態を確認します。 続行する前に、すべてのポッドを
Running
の状態にします。kubectl get pods
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
Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスして、サンプル アプリが動作していることを確認します。
リソースを削除する
AKS チュートリアルを実行する予定がない場合は、Azure の料金が発生しないようにクラスターを削除する必要があります。
Azure Portalで、リソース グループに移動します。
[リソース グループの削除] を選択します。
削除を確認するためにリソース グループの名前を入力し、[削除] を選択します。
[削除の確認] ダイアログ ボックスで [削除] を選びます。
注意
AKS クラスターはシステム割り当てマネージド ID (このクイックスタートで使用した既定の ID オプション) を使用して作成されました。ID はプラットフォームによって管理され、削除する必要はありません。
次のステップ
このクイックスタートでは、Kubernetes クラスターをデプロイした後、そこへ Windows Server コンテナー内の ASP.NET サンプル アプリケーションをデプロイしました。 このサンプル アプリケーションはデモ専用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。
AKS の詳細を学習し、コードからデプロイまでの完全な例を確認するには、Kubernetes クラスター チュートリアルに進んでください。
Azure Kubernetes Service