サンプルで Bridge to Kubernetes を使用する
このサンプルでは、Bridge to Kubernetes を使用して、任意の Kubernetes クラスターで簡単な TODO アプリケーションのマイクロサービス バージョンを開発する方法を示します。 Visual Studio Code を使用したこのサンプルは、TodoMVC によって提供されるコードを作成し直したものです。 この例では MiniKube を使用してアプリケーションをホストしますが、これらの手順は任意の Kubernetes クラスターで動作するはずです。
この TODO アプリケーションのサンプルは、永続ストレージを提供するフロントエンドとバックエンドで構成されています。 この拡張サンプルでは、統計コンポーネントを追加し、特に次のいくつかのマイクロサービスにアプリケーションを分割しています。
- フロントエンドで database-api を呼び出し、TODO 項目を永続化および更新する。
- database-api サービスでが Mongo データベースに依存し、TODO 項目を永続化する。
- フロントエンドが RabbitMQ キューに、追加、完了および削除イベントを書き込む。
- 統計ワーカーが RabbitMQ キューからイベントを受け取り、Redis キャッシュを更新する。
- 統計 API が、フロントエンドが表示するキャッシュ済みの統計を公開する。
この拡張 TODO アプリケーションは、全体で相関する 6 つのコンポーネントで構成されています。
前提条件
- MiniKube をインストールする任意の Kubernetes クラスター、または Chocolatey パッケージ マネージャー
- Windows 10 の場合は、Hyper-V
- Kubectl がインストールされていて、選択したコマンド ライン環境のパス上にある
- Bridge to Kubernetes Visual Studio Code 拡張機能
MiniKube のインストール
任意の Kubernetes プロバイダーと Bridge to 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 ノードを右クリックし、 [Use Namespace](名前空間を使用) を選択します。
ターミナル ウィンドウ (Ctrl + ~) で npm install
を実行して依存関係をインストールします。
npm install
次に、server.js
の 17 行目にブレークポイントを設定します。
コマンド パレットを開き (Ctrl + Shift + P キーか、Mac の場合は Cmd + Shift + P キー)、「Bridge to Kubernetes」と入力します。 [Bridge to Kubernetes: Configure](Bridge to Kubernetes: 構成) オプションを選択します。
置き換えるサービス、開発用コンピューターから転送するためのポート、使用する起動タスクを構成するように求められます。
stats-api
サービスを選択します。
サービスを選択した後、ローカル アプリケーションの TCP ポートを入力するように求められます。 この例では、「3001」と入力します。
起動タスクとして [Run Script: dev](スクリプトの実行: 開発) を選択します。
分離して実行するか、または分離しないで実行するオプションがあります。 分離して実行すると、自分の要求だけがローカル プロセスにルーティングされます。他の開発者は影響を受けずにクラスターを使用できます。 分離して実行しない場合、すべてのトラフィックがローカル プロセスにリダイレクトされます。 このオプションの詳細については、「分離して開発するためのルーティング機能の使用」を参照してください。 この例では、分離しないで実行する方法を使用します。
Note
EndpointManager が管理者特権で実行して hosts ファイルを変更することを許可するように、VS Code に求められます。
Bridge to Kubernetes デバッグ プロファイルが正常に構成されました。
左側にあるデバッグ アイコンを選択し、[Run Script: dev with Kubernetes]\(スクリプトの実行: Kubernetes での開発\) を選択します。 [Run Script: dev with Kubernetes](スクリプトの実行: Kubernetes での開発) の横にある開始ボタンをクリックします。
VS Code のステータス バーがオレンジに変わり、Kubernetes 拡張機能に接続されたことが示されたら、開発用コンピューターは接続されています。 開発用コンピューターが接続されると、置き換えている stats-api のトラフィックの、開発用コンピューターに対するリダイレクトが開始されます。
todo-app のフロントエンド エントリ ポイントに移動します。 minikube の場合は、127.0.0.1
を使用します。 アプリのローカル エンドポイント URL にアクセスするには、ステータス バーの [Kubernetes] メニューを開き、エンドポイント エントリを選択します。
stats リンクを選択して、stats-api に要求を行います。
最初にクラスターで開始されたトラフィックが、ローカルで実行されているバージョン (クラスターの外部) にリダイレクトされ、ブレークポイントがトリガーされたことがわかります。
再生を押して、透過的に要求の完了を続行させます。
これは、AKS 以外のクラスターで Bridge to Kubernetes を使用する方法の一例です。 次は、独自のプロジェクトで試してみてください。
クリーンアップ
このサンプルで生成された資産をクリーンアップするには、次を実行します。
kubectl delete namespace todo-app
次のステップ
Bridge to Kubernetes を使用して Azure Kubernetes Service (AKS) にアプリをデプロイすることもできます。 「AKS で Bridge to Kubernetes を使用する」を参照してください