チュートリアル:アプリケーションを minikube クラスターにデプロイする
Kubernetes をローカルで実行すると、プロトタイプ作成、デプロイのテスト、Kubernetes のワークフロー学習などに特に役立ちます。 RubyMine で利用できる Docker および Kubernetes サポートを使うと、クラスターの起動、リソースのデプロイ、アプリケーションの確認を IDE 内で行うことができます。
始める前に
開始する前に、以下がインストールされ設定されていることを確認してください:
必要なプラグインを有効化
このチュートリアルで使用する機能は、以下のプラグインに依存しています:
このプラグインは、RubyMine にデフォルトでバンドルされ、有効化されています。 関連機能が利用できない場合は、プラグインが無効化されていないか確認してください。
Ctrl+Alt+S を押して設定を開き、 を選択します。
インストール済み タブを開き、必要なプラグインを探して、プラグイン名の横のチェックボックスを選択して有効化します。
Rails アプリケーションを作成する
Rails アプリケーションを最初から作成するには、次の手順に従ってください:
RubyMine を実行し、 'ようこそ' 画面で 新規プロジェクト をクリックします。

新規プロジェクト ダイアログで、左ペインの Rails グループの アプリケーション と プロジェクトタイプ グループの Ruby on Rails を選択します。
次の設定を指定します。

名前: プロジェクトの名前を指定します(この場合は rails-helloworld)。
ロケーション: プロジェクトを作成するディレクトリへのパスを指定します。 デフォルトでは、RubyMine はプロジェクトと同じ名前のディレクトリを作成します。
インタープリター: プロジェクトで使用する Ruby インタープリターを選択します。
Rails バージョン: プロジェクトで使用する Rails バージョンを選択してください。 選択したインタープリターに Rails または gem がインストールされていない場合、または必要な Rails バージョンが見つからない場合は、フィールドで
をクリックしてください。 RubyMine が利用可能なすべての Rails バージョンをダウンロードするまで待ち、ドロップダウンから必要なバージョンを選択してください。 OK をクリックして続行してください。

選択したバージョンがまだインストールされていない場合、RubyMine はプロジェクトの作成時にそれをインストールします。
追加オプション: 追加オプション フィールドでのプロジェクト作成用に追加の Rails オプションを提供します。
例:
rails newコマンドを追加するために通常使用する 引数(英語)を指定できます:--skip-testsはテストファイルの作成をスキップし、--skip-action-mailerは Action Mailer ファイルをスキップし、--skip-action-cableは Action Cable ファイルをスキップします。使用中の Rails バージョンと互換性のある Rails オプションの完全なリストを取得するには、
rails new --helpコマンドを実行します。
作成 をクリックして、 新規プロジェクト ダイアログを閉じます。
RubyMine は新しい Rails アプリケーションを作成し、 Gemfile に記載されている gem の依存関係をインストールし、プロジェクトの package.json ファイルに記載されている JavaScript 依存関係をインストールします。 このプロセスは、実行ツールウィンドウで確認できます。

すべての依存関係をインストールすると、左側のプロジェクトツールウィンドウ(Alt+1 )にプロジェクト構造が表示されます。 右側で、RubyMine が自動的にメインプロジェクトファイルをエディターで開きます。

オペレーティングシステムに Git がインストールされている場合、新しい Rails アプリケーションを生成すると、Git リポジトリも初期化されます。 RubyMine でバージョン管理システムを操作する方法は、 バージョン管理 セクションで確認できます。
これで、機能する Rails アプリケーションができました。 実際の動作を確認するには、Web サーバーを起動する必要があります。 これを行うには、次の手順を実行します。
右上隅の 実行 アイコンをクリックします。
RubyMine はアプリケーションを実行するための準備プロセスを表示します。

http://127.0.0.1:3000 をブラウザーで開いて、Rails のデフォルト情報ページを表示してください。

アプリケーションをコンテナ化する
このステップでは、ビルド済みアプリケーションを Docker イメージとしてパッケージ化します。 Kubernetes は後でこのイメージをポッド内のコンテナとして実行します。
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 内のガターで
をクリックし、 新規実行構成 を選択します。
実行構成の編集 ダイアログで、 イメージタグ フィールドに
rails-minikube-appを、 コンテナー名 フィールドにrails-minikubeを指定します。 次に、 実行 をクリックします。
RubyMine は Dockerfile 実行構成 を作成し、Dockerfile からイメージをビルドした後、そのイメージを元にコンテナを実行します。 全体のプロセスを見るには、 サービス ツールウィンドウの ログ タブを開いてください。
Minikube に接続
アプリケーションを含む Docker イメージができたので、それをデプロイするためにローカル Kubernetes クラスターを起動する必要があります。 minikube を使って、RubyMine からローカルのシングルノード Kubernetes クラスターを直接実行します。
Docker ドライバーで minikube を起動する
ターミナル ツールウィンドウを開きます: に移動するか Alt+F12 を押します。
次のコマンドを実行してローカル Kubernetes クラスターを起動し、minikube に Docker を仮想化ドライバーとして使うよう指示してください:
minikube start --driver=docker次のコマンドでクラスターが正常に実行されているかを確認します:
minikube status
Docker ドライバーを使うと、minikube クラスターは Docker コンテナー内で実行され、ローカル開発に適した軽量な環境を提供します。
minikube クラスターを RubyMine に追加
Servicesツールウィンドウを開く: に移動するか、 Alt+8 を押します。
Kubernetes ノードを選択し、 クラスターの追加 ボタンをクリックし、コンテキストメニューから デフォルトディレクトリから を選択します。

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

追加したクラスターは サービス ツールウィンドウで利用できるようになります。
サービス ツールウィンドウで minikube クラスターを右クリックし、 クラスターを接続する を選択します。

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

新規 Kubernetes リソース ダイアログで デプロイ ファイルタイプを選択し、マニフェスト名を指定して Enter を押します。

プロンプトが表示されたら、ファイルを Git に追加することに同意してください。
生成されたファイルの内容を以下のコードに置き換えます:
apiVersion: apps/v1 kind: Deployment metadata: name: rails-minikube labels: app: rails-minikube spec: replicas: 1 selector: matchLabels: app: rails-minikube template: metadata: name: rails-minikube labels: app: rails-minikube spec: containers: - name: rails-minikube image: rails-minikube-app imagePullPolicy: IfNotPresent ports: - containerPort: 3000 protocol: TCP restartPolicy: Alwaysフローティングツールバーで現在のクラスターと名前空間を選択し、
適用 をクリックしてローカルクラスターに変更を反映します。
サービスマニフェストの作成
プロジェクト ツールウィンドウ(Alt+1 )で、プロジェクト名を右クリックして を選択します。

新規 Kubernetes リソース ダイアログで サービス ファイルタイプを選択し、マニフェスト名を指定して Enter を押します。
プロンプトが表示されたら、ファイルを Git に追加することに同意してください。
生成されたファイルの内容を以下のコードに置き換えます:
apiVersion: v1 kind: Service metadata: name: rails-minikube spec: selector: app: rails-minikube ports: - protocol: TCP port: 3000 targetPort: 3000 type: NodePortフローティングツールバーで現在のクラスターと名前空間を選択し、
適用 をクリックしてローカルクラスターに変更を反映します。
アプリケーションにアクセスする
エディターでファイルを開きます。
- containerPort: 8080プロパティの横にある ポートの転送 インレイヒントをクリックします。ポートの転送 ダイアログでデフォルト値のまま、 進む をクリックします。
ファイル内で ブラウザーで開く インレイヒントをクリックします。
minikube と RubyMine を使用して Rails アプリケーションをローカルの Kubernetes クラスターにデプロイする方法を学びました。 この方法は、リモートクラスターを必要とせずに Kubernetes で素早くローカルテストや検証を行うことを可能にします。
次のステップ
これらのトピックから Kubernetes の扱い方を学んでください: