次の方法で共有


サンプルで Bridge to Kubernetes を使用する

手記

Bridge to Kubernetes は、2025 年 4 月 30 日に廃止されます。 提供終了とオープンソースの代替方法の詳細については、GitHub の問題を参照してください。

このサンプルでは、Bridge to Kubernetes を使用して、任意の Kubernetes クラスターで単純な TODO アプリケーションのマイクロサービス バージョンを開発する方法を示します。 このサンプルは、Visual Studio Code を使用して、TodoMVCによって提供されるコードから調整されています。 この例では、MiniKube を使用してアプリケーションをホストしますが、これらの手順は任意の Kubernetes クラスターで動作する必要があります。

TODO アプリケーション のサンプルは、フロントエンドと、永続的なストレージを提供するバックエンドで構成されています。 この拡張サンプルでは、統計コンポーネントを追加し、アプリケーションを多数のマイクロサービスに分割します。具体的には次のとおりです。

  • フロントエンドはデータベース API を呼び出して TODO 項目を永続化および更新します。
  • database-api サービスは、TODO 項目を保持するために Mongo データベースに依存します。
  • フロントエンドは、RabbitMQ キューにイベントの追加、完了、および削除を書き込みます。
  • 統計ワーカーは RabbitMQ キューからイベントを受信し、Redis キャッシュを更新します。
  • 統計 API は、表示するフロントエンドのキャッシュされた統計を公開します。

全体として、この拡張 TODO アプリケーションは、相互に関連する 6 つのコンポーネントで構成されます。

前提 条件

MiniKube のインストール

Bridge to Kubernetes で任意の Kubernetes プロバイダーを使用できます。 この記事では、MiniKube を使用します。 MiniKube は、ローカル コンピューターで Kubernetes をホストできる軽量の Kubernetes プロバイダーです。 のインストール手順に従って、Windows 10、Linux、または macOS に MiniKube をインストールします。

Windows 10 で最適な結果を得るには、Hyper-V VM マネージャーを使用し、仮想スイッチを作成する必要があります。

インストールが完了したら、MiniKube を起動し、Hyper-V を使用するように指定し、プライマリ仮想スイッチの名前を指定します。 このコマンドは、管理者特権でコマンド プロンプトから実行する必要があります。

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

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

Bridge to Kubernetes リポジトリをクローンし、現在の作業フォルダーを todo-app にしてコマンド ウィンドウを開きます。

サンプルの名前空間を作成します。

kubectl create namespace todo-app

次に、配置マニフェストを適用します。

kubectl apply -n todo-app -f deployment.yaml

これは、LoadBalancer型のサービスを使用してフロントエンドを公開する単純なデプロイです。 すべてのポッドが実行され、frontend サービスの外部 IP が使用可能になるまで待ちます。

MiniKube でテストする場合は、minikube tunnel を使用して外部 IP を解決する必要があります。

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

外部 IP とローカル ポート (PORT(S) 列の最初の番号) を使用して、アプリケーションを参照します。

http://{external-ip}:{local-port}

ブラウザーで実行中のアプリをテストします。 todo アイテムを追加、完了、削除すると、統計ページが予想されるメトリックで更新されます。

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

これで、Bridge to Kubernetes 拡張機能を使用して、Kubernetes クラスターからのトラフィックをローカルで実行されているバージョンの stats-api にリダイレクトする方法を示すことができます。

cd stats-api/

VS Code で stats-api のソース コードを開きます。

code .

VS Code が起動したら、VS Code の左側のサイドバーから Kubernetes ペインを開き、MiniKube クラスター内の todo-app 名前空間を選択します。 todo-app ノードを右クリックし、[名前空間を使用] を選択します。

名前空間の を選択する

ターミナル ウィンドウで npm install を実行して依存関係をインストールします (Ctrl + ~)。

npm install

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

コマンド パレットを開き(Macの場合は Ctrl+Shift+P または Cmd+Shift+P) を開き、「Bridge to Kubernetes」と入力します。 [Bridge to Kubernetes: 構成] オプションを選択します。

Bridge to Kubernetes: コマンド を構成する

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

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

接続するサービスを選択

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

ポート番号を入力

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

デバッガー起動タスク を選択する

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

分離 を選択する

手記

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

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

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

デバッグ起動プロファイルの選択

VS Code ステータス バーがオレンジ色になり、Kubernetes 拡張機能に接続済みであることが示されると、開発用コンピューターが接続されます。 開発用コンピューターが接続されると、置き換える stats-api の開発用コンピューターへのトラフィックのリダイレクトが開始されます。

Bridge to Kubernetes を使用したデバッグ

todo-app のフロントエンド エントリ ポイントに移動します。 minikube の場合は、127.0.0.1を使用します。 アプリのローカル エンドポイント URL にアクセスするには、ステータス バーの Kubernetes メニューを開き、エンドポイント エントリを選択します。

[stats] リンクを選んで、stats-api に要求を行います。

実行中の Web サイト - 状態リンクを選択

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

再生を選んで、引き続き要求を透過的に完了させます。

この例は、AKS 以外のクラスターで Bridge to Kubernetes を使用する方法の 1 つの図にすぎません。 次は自分のプロジェクトで試してみてください。

クリーンアップする

このサンプルによって生成された資産をクリーンアップするには、次を実行します。

kubectl delete namespace todo-app

次の手順

Bridge to Kubernetes を使用して Azure Kubernetes Service (AKS) にアプリをデプロイすることもできます。 AKS で Bridge to Kubernetes を使用する を参照してください