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

この記事では、コンテナー化されたアプリケーションを Kubernetes クラスターにデプロイする方法について説明します。

前提条件

開始するには、 単一コンピューターの Kubernetes または 完全な Kubernetes クラスターを設定します。

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

手順 1: マニフェスト ファイルを更新する

この記事では、Microsoft の azure-vote-front イメージに基づくフロントエンドとバックエンドで構成される単純な投票アプリであるサンプル アプリケーションを使用します。 このアプリケーションのコンテナー イメージは、Azure Container Registry (ACR) でホストされます。 デプロイ マニフェストについては、GitHub リポジトリ パッケージの linux-sample.yaml を参照してください。 YAML では、タグを nodeSelectorLinux として指定しました。

手順 2: アプリケーションをデプロイする

ご利用になるアプリケーションをデプロイするには、kubectl apply コマンドを使用します。 このコマンドは、マニフェスト ファイルを解析し、定義されている Kubernetes オブジェクトを作成します。 次の例に示すように、YAML マニフェスト ファイルを指定します。

kubectl apply -f  https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml

手順 3: ポッドを確認する

ポッドが 実行 状態になるまで数分待ちます。

kubectl get pods -o wide

実行中の Linux ポッドを示すスクリーンショット。

手順 4: サービスを確認する

進行状況を監視するには、 パラメーターを指定して kubectl get services コマンドを --watch 使用します。

kubectl get services

実行中の Linux サービスを示すスクリーンショット。

最初は、 EXTERNAL-IP サービスの が azure-vote-front として pending表示されます。 アドレスが EXTERNAL-IP から pending 実際のパブリック IP アドレスに変更された場合は、サービスに割り当てられた IP アドレスを使用できます。

重要

単一マシン クラスターで、 を指定せずに Kubernetes クラスターを -ServiceIPRangeSizeデプロイした場合、ワークロード サービスに IP が割り当てられず、外部 IP アドレスがありません。 この場合は、Linux VM の IP アドレス (Get-AksEdgeNodeAddr) を見つけます。

Get-AksEdgeNodeAddr -NodeType Linux

VM の IP アドレス ( 192.168.1.12:30432 など) に外部ポートを追加できるようになりました。

手順 5: アプリケーションをテストする

アプリケーションが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。

実行中の Linux アプリを示すスクリーンショット。

アプリケーションが読み込まれない場合は、イメージ レジストリの承認の問題が原因である可能性があります。 コンテナーのステータスを表示するには、kubectl get pods コマンドを使用します。 コンテナー イメージを取得できない場合は、「Azure Kubernetes ServiceからAzure Container Registryで認証する」を参照してください。

手順 6: アプリケーションを削除する

クリーンするには、次のコマンドを使用してすべてのリソースを削除します。

kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml

クラスターにサンプル Windows アプリケーションをデプロイする

この例では、Microsoft のサンプル イメージに基づいて、アプリケーション ASP.NET サンプルを実行します。 win-sample.yaml を参照してください。 YAML は、タグを nodeSelector Windows として指定 します

手順 1: YAML マニフェストの名前を指定してアプリケーションをデプロイする

PowerShell ウィンドウの YAML のディレクトリにいることを確認し、次のコマンドを実行します。

kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml

手順 2: サンプル ポッドが実行されていることを確認する

インターネット接続によっては、ポッドが実行中の状態に達するまでに時間がかかる場合があります。 ASP.NET イメージは大きいです。

kubectl get pods -o wide

実行中の Windows ポッドを示すスクリーンショット。

手順 3: サンプル サービスが実行されていることを確認する

kubectl get services

実行中の Windows サービスを示すスクリーンショット。

このサンプルは NodePort 型のサービスとしてデプロイされるため、アプリケーションが実行されている Kubernetes ノードの IP アドレスを取得し、 NodePort のポートを追加できます。 次 Get-AksEdgeNodeAddrのコマンドを使用して、Kubernetes ノードの IP を取得します。

Get-AksEdgeNodeAddr -NodeType Windows

Windows クラスター情報を示す Screesnhot。

手順 4: 実行中の Windows サンプルを確認する

Web ブラウザーを開き、 NodePort を見つけてサービスにアクセスします。

実行中の Windows アプリを示すスクリーンショット。

手順 5: クリーン

クリーンするには、次のコマンドを使用してすべてのリソースを削除します。

kubectl delete -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample.yaml

独自のアプリケーションのデプロイ

前の手順では、サンプル アプリケーションをデプロイする方法を示しました。 独自のアプリケーションをデプロイするには、次の操作を行います。

  • アプリケーションをコンテナー イメージにパッケージ化し、イメージをAzure Container Registryまたは任意のコンテナー レジストリにアップロードします。 アプリケーションのコンテナー イメージを作成するには、次の手順を確認します

  • AKS Edge Essentialsでは、混合 OS クラスターが有効になります。 対応する OS を使用して、ポッドがノードでスケジュールされていることを確認します。 デプロイ ファイルに を追加 nodeSelector します。 このオプションは、特定のオペレーティング システム (OS) のノードでポッドを実行するように Kubernetes に指示します。 クラスターが単一 OS の場合は、この手順をスキップできます。ただし、ベスト プラクティスとして、各デプロイ ファイルにノード セレクターのラベルを付けます。

    nodeSelector:
        "kubernetes.io/os": linux
    
    nodeSelector:
        "kubernetes.io/os": windows
    

次の手順