チュートリアル:アプリケーションを minikube クラスターにデプロイする
Kubernetes をローカルで実行することは、プロトタイプの作成、デプロイのテスト、Kubernetes ワークフローの学習に特に役立ちます。 WebStorm で利用可能な Docker と Kubernetes のサポートを使用すると、IDE を離れることなくクラスターの起動、リソースのデプロイ、アプリケーションのインスペクトが可能です。
始める前に
始める前に、以下のものがインストールされ、設定されていることを確認してください:
必要なプラグインを有効化する
このチュートリアルで使用する機能は、以下のプラグインに依存しています:
このプラグインは WebStorm にデフォルトでバンドルされ、有効化されています。 該当機能が利用できない場合は、プラグインを無効化していないことを確認してください。
Ctrl+Alt+S を押して設定を開き、 を選択します。
インストール済み タブで、 Kubernetes プラグインの横のチェックボックスが選択されていることを確認してください。
サンプルプロジェクトを作成する
シンプルな Node.js Express アプリケーションから始めましょう。 このアプリケーションは、 hello_express.js ファイルで構成され、 Hello World! を返し、コンソールに Example app listening on port 3000! を出力します。
Node.js で空のプロジェクトを作成する
Welcome 画面で 新規プロジェクト をクリックするか、メインメニューから を選択してください。
開いたダイアログで、左側のペインで Node.js を選択します。
アプリケーションの場所と名前(例:
hello_world_docker)を指定します。使用するローカル Node.js ランタイムを指定します。 推奨インストールを承認するか、リストから別のものを選択するか、まだマシンに Node.js がインストールされていない場合は ダウンロード をクリックしてください。 詳しくは 新しい Node.js アプリケーションを作成するを参照してください。

作成 をクリックしてください。
アプリケーションを実装する
アプリケーション用に別のフォルダーを作成しましょう。これにより、後でローカルフォルダーをコンテナー内のフォルダーにマッピングしやすくなります。
そのためには、 プロジェクト ツールウィンドウ Alt+1 を開き、プロジェクトフォルダーを右クリックし、コンテキストメニューから を選択し、 を選択します。 表示されるポップアップダイアログで、フォルダー名(例: app )を指定します。

ここで、アプリケーションのコードを配置するための JavaScript ファイルを作成します。

表示されるポップアップダイアログで、ファイル名 (例: hello_express.js ) を指定します。

新しく作成された hello_express.js ファイルをエディターで開き、次のコードを入力します。
const express = require('express'); const app = express(); app.get('/', function(req, res) { res.send('Hello World!') }); app.listen(3000,function() { console.log('Example app listening on port 3000!') });ご想像のとおり、
express参照は解決されておらず、エラーとしてハイライト表示されています。 ただし、参照にマウスオーバーすると、WebStorm がクイックフィックスを提案します:
「エクスプレス」をインストールする リンクをクリックすると、 package.json ファイルに
expressが追加され、インストールされます。
アプリケーションをローカルで実行する
アプリケーションをローカルで実行して、期待どおりに動作するか確認してみましょう。
hello_express.js ファイルを開き、エディタータブ内の任意の場所を右クリックし、コンテキストメニューから を選択します。

実行 ツールウィンドウが開き、
Example app listening on port 3000!が表示されます。http://localhost:3000でブラウザーを開くと、予想どおりページに Hello World! が表示されます。
アプリケーションをコンテナ化する
このステップでは、アプリケーションを Docker イメージとしてパッケージ化します。 Kubernetes はこのイメージを後で Pod 内のコンテナーとして実行します。
Dockerfile を作成する
プロジェクトフォルダーのコンテキストメニューから、 を選択し、次に を選択します。

新しく作成された Dockerfile を開き、次のコードを入力します。
FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./app/ ./app/ CMD ["node","./app/hello_express.js"]この Dockerfile には、 Docker Hub(英語) の
node:22イメージに基づいてイメージを構築するための手順が含まれています。このイメージからコンテナーを実行すると、Docker はコンテナー内の /app/ ディレクトリの内容を /tmp/app/ ディレクトリにコピーします(この例では、 /app/ ディレクトリに hello_express.js ファイルが含まれています)。 package.json ファイルは /tmp/ にコピーされます。
次に、Docker は現在の作業ディレクトリを /tmp に設定し、
node ./app/hello_express.jsを実行します。 その結果、コンテナーログにはExample app listening on port 3000!が表示されます。
Docker イメージをビルドする
プロジェクト ビューから、エディターで Dockerfile を開きます。
ファイルを編集します:
変更
ENV RAILS_ENV="production" \ BUNDLE_DEPLOYMENT="1" \ BUNDLE_PATH="/usr/local/bundle" \ BUNDLE_WITHOUT="development"to
ENV RAILS_ENV="development" \ BUNDLE_PATH="/usr/local/bundle"変更
EXPOSE 80 CMD ["./bin/thrust", "./bin/rails", "server"]to
EXPOSE 3000 CMD ["./bin/rails", "server", "-b", "0.0.0.0", "-p", "3000"]
Dockerfile 内のガターで、
をクリックし、 新規実行構成 を選択します。

実行構成の編集 ダイアログで、 イメージタグ フィールドに
hello-world-docker-appを、 コンテナー名 フィールドにhello-world-dockerを指定します。 次に、 実行 をクリックします。
WebStorm は Dockerfile 実行構成 を作成し、Dockerfile からイメージをビルドし、そのイメージに基づいてコンテナーを実行します。 プロセス全体を確認するには、 サービス ツールウィンドウの ビルドログ タブを開いてください。

Minikube に接続
アプリケーションを含む Docker イメージが用意できたため、次はそれをデプロイするローカル Kubernetes クラスタを起動する必要があります。 minikube を使用して、WebStorm から直接ローカルのシングルノード Kubernetes クラスターを実行します。
Docker ドライバーで minikube を起動する
ターミナル ツールウィンドウを開くには、 に移動するか Alt+F12 を押します。
ローカルの Kubernetes クラスターを起動し、minikube に Docker を仮想化ドライバーとして使用するよう指示するには、次のコマンドを実行します:
minikube start --driver=dockerクラスターが起動し稼働していることを確認するには、以下のコマンドを使用します:
minikube status
Docker ドライバーを使用すると、minikube クラスターが Docker コンテナー内で実行され、ローカル開発に適した軽量な環境が提供されます。
Minikube クラスターを WebStorm に追加
サービスツールウィンドウを開くには、 に移動するか、 Alt+8 を押します。
Kubernetes ノードを選択し、 クラスターの追加 ボタンをクリックしてから、コンテキストメニューから デフォルトディレクトリから を選択します。

クラスターを追加 ダイアログで minikube を選択し、 クラスターを追加 をクリックします。

追加されたクラスターは、 サービス ツールウィンドウで使用可能になります。
サービス ツールウィンドウで minikube クラスタを右クリックし、 クラスターの接続 を選択します。

この時点で、WebStorm は実行中の minikube クラスターに接続されており、その Kubernetes リソースを表示できます。 サービス ツールウィンドウから、名前空間、ノード、その他のクラスターオブジェクトを直接調べることができます。
アプリケーションのデプロイ
チュートリアルの前半で、 アプリケーションイメージをローカルですでにビルドしました。 しかし、minikube クラスターはローカルの Docker デーモンからイメージに自動的にアクセスすることはできません。 イメージを minikube にロードして利用できるようにする必要があります。
Docker イメージを minikube にロードする
ターミナル ツールウィンドウを開くには、 に移動するか Alt+F12 を押します。
minikube でコンテナーイメージをビルドするには、次のコマンドを実行してください:
minikube image load <image tag>where <image tag> は、 実行/デバッグ構成 as described above で指定された値です。 この例の場合には次のようになります:
minikube image load hello-world-docker-apphello-world-docker-appイメージがクラスターで利用可能であることを確認するには、次のコマンドを実行してください:minikube image ls | grep hello-world-docker-app出力には
docker.io/library/hello-world-docker-app:latestが表示されるはずです。
minikube でイメージが利用可能になったので、次は Kubernetes でそれをどのように実行するかを記述します。 Kubernetes マニフェストを 2 つ作成します:
コンテナーを Pod 内で実行できるようにする Deployment
アプリを公開し、マシンからアクセスできるようにする Service
Deployment マニフェストの作成
プロジェクト ツールウィンドウ(Alt+1 )でプロジェクト名を右クリックし、 を選択します。

新規 Kubernetes リソース ダイアログで デプロイ ファイルタイプを選択し、マニフェスト名に
hello-world-docker-deploymentを指定して Enter を押します。
指示が表示されたら、ファイルを Git に追加することに同意してください。
生成されたファイルの内容を次のコードに置き換えてください:
apiVersion: apps/v1 kind: Deployment metadata: name: hello-world-docker labels: app: hello-world-docker spec: replicas: 1 selector: matchLabels: app: hello-world-docker template: metadata: name: hello-world-docker labels: app: hello-world-docker spec: containers: - name: hello-world-docker image: hello-world-docker-app imagePullPolicy: IfNotPresent ports: - containerPort: 3000 protocol: TCP restartPolicy: Alwaysフローティングツールバーで現在のクラスターと名前空間を選択し、
適用 をクリックして変更をローカルクラスターに適用します。

Service マニフェストの作成
プロジェクト ツールウィンドウ(Alt+1 )でプロジェクト名を右クリックし、 を選択します。

新規 Kubernetes リソース ダイアログで サービス ファイルタイプを選択し、マニフェスト名に
hello-world-docker-serviceを指定して Enter を押します。
指示が表示されたら、ファイルを Git に追加することに同意してください。
生成されたファイルの内容を次のコードに置き換えてください:
apiVersion: v1 kind: Service metadata: name: hello-world-docker spec: selector: app: hello-world-docker ports: - protocol: TCP port: 3000 targetPort: 3000 type: NodePortフローティングツールバーで現在のクラスターと名前空間を選択し、
適用 をクリックして変更をローカルクラスターに適用します。
アプリケーションにアクセスする
エディターで hello-world-docker-deployment.yaml ファイルを開きます。
- containerPort: 3000プロパティの横にある ポートの転送 インレイヒントをクリックします。
ポートの転送 ダイアログではデフォルト値のまま、 進む をクリックします。
hello-world-docker-deployment.yaml ファイルで ブラウザーで開く インレイヒントをクリックします。

WebStorm はデフォルトのブラウザーにリダイレクトし、ローカルの minikube クラスターでデプロイしたばかりのアプリケーションを確認できます。

minikube と WebStorm を使って Node.js Express アプリケーションをローカルの Kubernetes クラスターにデプロイする方法を学びました。 この方法により、リモートクラスタを用意せずに Kubernetes のローカルテストや実験が素早く行えます。
次のステップ
以下のトピックから Kubernetes の操作方法を学びましょう: