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)] を選択します。
[基本] タブで次の設定を構成します。
- [プロジェクトの詳細] で:
- サブスクリプション: この AKS クラスターで使用したい Azure サブスクリプションを選択します。
- リソース グループ: [新規作成] を選択し、myResourceGroup などのリソース グループ名を入力した後、[OK] を選択します。 既存のリソース グループを選択することもできますが、テストまたは評価目的の場合は、これらのリソースを一時的にホストし、運用ワークロードや開発ワークロードに影響を与えないようにリソース グループを作成することをお勧めします。
- [クラスターの詳細] で、次のようにします。
クラスター プリセット構成: [Dev/Test] を選択します。 プリセットの構成の詳細については、Azure portal の「クラスター構成プリセット」を参照してください。
Kubernetes クラスター名: myAKSCluster などのクラスター名を入力します。
リージョン: "米国東部 2" などのリージョンを選択します。
可用性ゾーン: [なし] を選択します。
AKS 価格レベル: [Free] を選択します。
残りの設定は既定値のままにして、[次へ] を選択します。
- [プロジェクトの詳細] で:
[ノード プール] タブで、以下の設定を構成します。
[ノード プールの追加] を選択し、npwin などのノード プール名を入力します。 Windows ノード プールの場合、名前は "6 文字以下" にする必要があります。
モード: [ユーザー] を選択します。
OS SKU: [Windows 2022] を選択します。
可用性ゾーン: [なし] を選択します。
[Azure スポット インスタンスを有効にする] チェック ボックスはオフのままにします。
ノード サイズ: [サイズの選択] を選択します。 [VM サイズの選択] ページで、[D2s_v3] を選択した後、[選択] を選択します。
残りの設定は既定値のままにして、[追加] を選択します。
[確認と作成] を選択して、クラスター構成で検証を実行します。 検証が完了した後、 [作成] を選択します。
AKS クラスターの作成には数分かかります。 デプロイが完了したら、[リソースに移動] を選択するか、AKS クラスター リソース グループを参照して AKS リソースを選択することで、リソースに移動します。
クラスターに接続する
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-11741175-vmss000000 Ready agent 8m17s v1.29.9 aks-agentpool-11741175-vmss000001 Ready agent 8m17s v1.29.9 aksnpwin000000 Ready agent 8m17s v1.29.9 aks-userpool-11741175-vmss000000 Ready agent 8m17s v1.29.9 aks-userpool-11741175-vmss000001 Ready agent 8m17s v1.29.9
アプリケーションをデプロイする
Kubernetes のマニフェスト ファイルでは、どのコンテナー イメージを実行するかなど、クラスターの望ましい状態を定義します。 このクイックスタートでは、Windows Server コンテナー内で ASP.NET サンプル アプリケーションを実行するために必要なすべてのオブジェクトを作成するのにマニフェスト ファイルを使用します。 このマニフェスト ファイルには、ASP.NET サンプル アプリケーションの Kubernetes デプロイと、インターネットからアプリケーションにアクセスするための外部 Kubernetes サービスが含まれています。
ASP.NET サンプル アプリケーションは、.NET Framework のサンプルの一部として提供され、Windows Server コンテナー内で実行されます。 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
ウォッチ プロセスを停止します。Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスして、サンプル アプリが動作していることを確認します。
リソースを削除する
AKS チュートリアルを実行する予定がない場合は、Azure の料金が発生しないようにクラスターを削除する必要があります。
Azure Portalで、リソース グループに移動します。
[リソース グループの削除] を選択します。
削除を確認するためにリソース グループの名前を入力し、[削除] を選択します。
[削除の確認] ダイアログ ボックスで [削除] を選びます。
注意
AKS クラスターはシステム割り当てマネージド ID (このクイックスタートで使用した既定の ID オプション) を使用して作成されました。ID はプラットフォームによって管理され、削除する必要はありません。
次のステップ
このクイックスタートでは、Kubernetes クラスターをデプロイした後、そこへ Windows Server コンテナー内の ASP.NET サンプル アプリケーションをデプロイしました。 このサンプル アプリケーションはデモ専用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。
AKS の詳細を学習し、コードからデプロイまでの完全な例を確認するには、Kubernetes クラスター チュートリアルに進んでください。
Azure Kubernetes Service