AKS で Bridge to Kubernetes を使用する

このチュートリアルでは、特定の AKS サンプル マイクロサービス Web アプリを使用して、Bridge to Kubernetes を使用して Azure Kubernetes Service (AKS) クラスターの一部である単一のポッドでローカルでデバッグする方法について説明します。

開始する前に

このガイドでは、Todo アプリ サンプル アプリケーションを使用して、ご利用の開発用コンピューターを、AKS で実行中の Kubernetes クラスターに接続する方法を示します。 Kubernetes クラスターで実行している独自のアプリケーションが既にある場合は、Kubernetes を使用した開発に関する記事を参照してください。 ローカルで実行している MiniKube など、別のクラスターを使用している場合は、「サンプルで Bridge to Kubernetes を使用する」を参照してください。

前提条件

Kubernetes クラスターを作成する

サポートされているリージョンに AKS クラスターを作成します。 次のコマンドを実行すると、MyResourceGroup という名前のリソース グループと、MyAKS という名前の AKS クラスターが作成されます。

az group create \
    --name MyResourceGroup \
        --location eastus
az aks create \
    --resource-group MyResourceGroup \
    --name MyAKS \
    --location eastus \
    --node-count 3 \
    --generate-ssh-keys

サンプル アプリケーションをインストールする

コードをダウンロードし、依存関係をインストールする

git clone https://github.com/hsubramanianaks/b2k-samples
cd b2k-samples/todo-app
npm install stats-api\

ご利用のクラスターに接続し、アプリをデプロイする

開発用コンピューターで、Kubernetes CLI をダウンロードして構成し、 az aks get-credentialsを使用して Kubernetes クラスターに接続します。

az aks get-credentials --resource-group MyResourceGroup --name MyAKS
kubectl create namespace todo-app
kubectl config set-context --current --namespace=todo-app
kubectl apply -f deployment.yaml --namespace todo-app

アプリを実行する

以前使用していたのと同じターミナルで、次のコマンドを実行し、フロントエンド サービスの IP を [外部 IP] 列の下にコピーします。

kubectl get services

アプリを試すには、URL を開きます: {your external IP from above command goes here}.nip.io

stats-api サービスをデバッグする

以前に使用していたのと同じターミナルで、次のコマンドを入力して VS Code で stats-api を開きます。

code ./stats-api

まず、server.js の 17 行目にブレークポイントを配置します。

次に、MyAKS クラスターの todo-app 名前空間が既定として設定されていることを確認します (横に * がある場合)。 既定として設定されていない場合は、todo-app ノードを右クリックし、[名前空間の使用] を選択します。

Bridge to Kubernetes 名前空間を示すスクリーンショット。

次に、次のようにブリッジを構成します。コマンド パレットを開き (Ctrl+Shift+P キーか、Mac の場合は Cmd+Shift+P キー)、「Bridge to Kubernetes」と入力します。 [Bridge to Kubernetes: Configure](Bridge to Kubernetes: 構成) オプションを選択します。

Bridge to Kubernetes の

置き換えるサービス、開発用コンピューターから転送するためのポート、使用する起動タスクを構成するように求められます。

stats-api サービスを選択します。

重要

リダイレクトできるのは、ポッドが 1 つのサービスだけです。

サービスを選択した後、ローカル アプリケーションの TCP ポートを入力するように求められます。 この例では、「3001」と入力します。

起動タスクとして [Run Script: dev](スクリプトの実行: 開発) を選択します。

分離して実行するか、または分離しないで実行するオプションがあります。 分離して実行すると、自分の要求だけがローカル プロセスにルーティングされます。他の開発者は影響を受けずにクラスターを使用できます。 分離して実行しない場合、すべてのトラフィックがローカル プロセスにリダイレクトされます。 このオプションの詳細については、「分離して開発するためのルーティング機能の使用」を参照してください。 この例では、分離しないで続行します。 分離を選択した場合、task.json には、ご利用のマシンに要求をルーティングするのに必要であるプレフィックスが含められます。

注意

以降の起動では、この設定を行わなくてもデバッグ アイコンをクリックするだけで、サービス名、ポート、起動タスクの確認、分離して実行するかどうかの確認を行うメッセージが表示されます。 これらの値は .vscode/tasks.json に保存されます。 これらの設定を後で変更するには、コマンド パレットを開き (Ctrl+Shift+P キーか、Mac の場合は Cmd+Shift+P キー)、コマンド Bridge to Kubernetes: Configure を実行します。

Bridge to Kubernetes デバッグ プロファイルが正常に構成されました。

デバッグを開始するには、左側にあるデバッグ アイコンを選択し、[スクリプトの実行: Kubernetes での開発] を選択します。 [Run Script: dev with Kubernetes](スクリプトの実行: Kubernetes での開発) の横にある開始ボタンをクリックします。

Note

EndpointManager が管理者特権で実行して hosts ファイルを変更することを許可するように求められます。

VS Code のステータス バーがオレンジに変わり、Kubernetes 拡張機能に接続されたことが示されたら、開発用コンピューターは接続されています。 開発用コンピューターが接続されると、置き換えている stats-api のトラフィックの、開発用コンピューターに対するリダイレクトが開始されます。

前に見つけた外部 IP、{your external IP from get services command}.nip.io を使用して、アプリケーションのフロントエンドのエントリ ポイントに移動します。 分離モードを選択した場合は、{your prefix - can be found in task.json}.{your external IP from get services command}.nip.io を使用する必要があることに注意してください。

stats リンクを選択して、stats-api に要求を行います。

実行中の Web サイトの選択 - ステータス リンクの選択を示すスクリーンショット。

最初にクラスターで開始されたトラフィックが、ローカルで実行されているバージョン (クラスターの外部) にリダイレクトされ、ブレークポイントがトリガーされたことがわかります。

再生を押して、透過的に要求の完了を続行させます。

クリーンアップ

デバッガーを停止すると、クラスターに対するすべての変更が元に戻されます。 分離をオンにして実行していた場合は、ルーティング マネージャー ポッドがそこに残され、次回のデバッガーの起動が迅速に行われます。

将来のデバッグのために AKS クラスターをオンのままにしておくことも、次のコマンドを使用してそれを削除することもできます。

az aks delete --name MyAKS --resource-group MyResourceGroup

次のステップ

Bridge to Kubernetes の詳細については、「Bridge to Kubernetes のしくみ」を参照してください。