アプリケーションの実行と開発

これで準備はすべて整い、アプリケーションの通常実行を決定するか、または IDE で開発のイテレーション サイクルを開始して、ソースと依存関係に加えた変更をライブ アプリケーションに反映できます。このページでは、ゲストブック サンプルアプリを使用して、Kubernetes 環境での実行と開発について説明します。

実行アクションの選択

実行する前に

アプリケーションを実行する前に、アプリが目的の Kubernetes コンテキストにデプロイされるように設定されていることを確認します。これは、これは、[Run] タブの、[Deployment 設定] セクションにある構成で指定できます。

現在のコンテキストを切り替える場合は、Kubernetes Explorer を使います。右側のサイドバー パネルか、[ツール] > [Cloud コード] > [Kubernetes] > [View Cluster Explorer] で表示できます。

イメージの再ビルドを行わずに、特定の種類のファイルの変更をすばやく取得することで、開発ループを最適化するには、ファイルの同期とホットリロードを有効にします。

Kubernetes での継続的な開発

Develop on Kubernetes の実行ターゲットは、Kubernetes クラスタ上で開発サイクルを開始します。開発サイクルが開始されると、Skaffold を使用して Cloud Code でプロジェクト用のイメージを作成し、タグ付けして構成済みのリポジトリに push し、kubectl を使用してプロジェクトの Kubernetes マニフェストをデプロイします。

  1. [Develop on Kubernetes] アクションの実行アイコン をクリックして、[構成を編集] をクリックします。
  2. 利用可能な構成オプションを使用してデプロイをカスタマイズします。
  3. Apple M シリーズのシリコンで開発を行なって Google Kubernetes Engine にデプロイする場合は、x86 アーキテクチャで実行可能なイメージをビルドする必要があります。Cloud Build を使用して x86 イメージをビルドするには、[Build/Deploy] タブをクリックして、デプロイ プロファイルとして cloudbuild を選択します。Cloud Build を使用してアプリケーションをビルドする場合のコストについては、Cloud Build の料金をご覧ください。
  4. 変更を保存した後に Cloud Code によってアプリケーションが自動的に再デプロイされるようにするには、[Watch mode - rebuild and redeploy] で [On file save] を選択します。新しい Kubernetes アプリケーションには、デフォルトで [On demand] が選択されています。ウォッチモードの詳細については、ウォッチモードをご覧ください。
  5. アプリケーションが Skaffold モジュールを使用するように構成されている場合は、特定のモジュールのみをビルドまたはデプロイするように選択できます。
  6. 構成に問題がなければ、[OK] をクリックして、[アクションの実行アイコン 実行] をクリックします。

Kubernetes クラスタの開発サイクルの開始

Skaffold モジュールの選択

このセクションでは、Skaffold プロジェクトをモジュールに分割し、アプリケーションの一部分を個別に開発、デバッグする方法を説明します。

IntelliJ で Skaffold モジュールを選択するには、次の手順を実行します。

  1. 最新の Insiders ビルドをインストールします。
  2. [Run] > [Edit configurations] に移動し、[Build/Deploy] タブを開きます。
  3. skaffold.yaml を選択します。
  4. 次のいずれかを選択します。
    • すべての依存関係を使用してビルドおよびデプロイする
    • (モジュールが利用可能な場合に)ビルドおよびデプロイして、任意のモジュールを選択する。
モジュール一覧が表示された [Build/Deploy] タブ。

選択は、以降のデプロイで保持されます。モジュールのサブセットを選択すると、Cloud Code は、システム全体ではなく、モジュールのサブセットをデプロイすることに関する警告を表示します。

デプロイしたアプリをプレビューする

  1. 目的の実行アクションの [実行] ボタンをクリックします。受信アプリケーション ログは、[ログ] タブの出力ウィンドウで確認できます。

    デプロイが開始されると、デプロイされたアプリケーション用の転送ポートのリストが表示されます。

  2. デプロイが成功すると、新しいサービス URL が利用可能であることが通知されます。[サービス URL] タブをクリックして URL を表示し、URL リンクをクリックしてブラウザを実行して実行中のアプリケーションを開きます。

    [サービス URL] タブでポート転送サービスを表示する

    別の方法としては、[イベントログ] を開き、リンクをクリックして、ブラウザで実行中のアプリケーションを開くこともできます。

ログの表示

アプリケーションの開発中および実行中に、ターミナル出力内で実行中の Pod から出力されるログのライブ ストリームを表示できます。また、Kubernetes Explorer に移動すると、特定の Pod のログを表示することもできます。

特定の Pod のログを表示する手順は次のとおりです。

  1. Kubernetes Explorer に移動します。右側のサイドパネルからアクセスできます。また、[Tools] > [Cloud Code] > [Kubernetes] > [View Cluster Explorer] でアクセスすることもできます。

    右側のタスクバーのタブを使用して Kubernetes Explorer パネルを開く

  2. ログを表示する Pod を選択します。

  3. Pod を右クリックして [ログのストリーム] をクリックします。また、Pod で実行されている個々のコンテナのログをストリーミングすることもできます。

    Kubernetes Explorer Console にログが表示されます。

    右クリック メニューを使用してポッドのログをストリーミングし、Kubernetes Explorer Console にログを出力する

Kubernetes で開発する際の新機能の追加

「Develop on Kubernetes」で開発の反復サイクルを開始し、プロジェクトに機能を追加している場合、デプロイを停止して削除することなく、Kubernetes クラスタにこれらの変更がどのようにデプロイされるかを確認し、手動でイメージのビルドとタグ付けを行うか、クラスタを更新します。

ゲストブック アプリに従っている場合:

  1. src/main/java/cloudcode/guestbook/frontend から「FrontendController.java」ファイルを開き、この新しいエンドポイントを FrontendController クラスに追加します。

     @RequestMapping("/greeting")
     @ResponseBody
     public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return String.format("Hello from Kubernetes with IntelliJ, %s!", name);
     }
     ```
    
  2. 新しいアノテーションである RequestMappingResponseBody に必要なインポートを追加します。

  3. 変更を保存するか(Ctrl または Cmd+S)、[ビルド] > [プロジェクトのビルド] メニューを使用してプロジェクトをビルドします。

    コンソール ウィンドウでは、進行状況とデプロイのログを確認できます。 変更が反映されたら、新しいエンドポイント URL の localhost:8080/greeting にアクセスして更新を確認します。

    新規作成したエンドポイントのブラウザでの表示

  4. 継続的な開発セッションを終了するには、[停止] ボタンをクリックします。

    プラグインによって、開発セッションに使用されたすべての Kubernetes リソースが削除されます。

シークレットの保管

API キー、パスワード、証明書などの潜在的なセンシティブ データがコードに含まれている場合は、シークレットとして保管することをおすすめします。Cloud Code を使用すると、シークレットをシークレット マネージャーに安全に保管し、必要に応じてプログラムで取得できます。Cloud Code でシークレットを作成および管理する方法の詳細については、シークレット マネージャー ガイドをご覧ください。

リソースの詳細の表示

Kubernetes リソースのステータスを追跡するには、右側のサイドパネルからアクセスできる Kubernetes エクスプローラを使用します。または、[Tools] > [Cloud Code] > [Kubernetes] > [View Cluster Explorer] を使用して Kubernetes Explorer にアクセスすることもできます。

右側のタスクバーのタブを使用して開いた Kubernetes Explorer パネル

Kubernetes Explorer を使用すると、クラスタ、ノード、ワークロードなどに関する情報にアクセスできるだけでなく、アクティブなコンテキストの設定、ログのストリーミングと表示リソースの説明の検索ができます。

Kubernetes Explorer でリソースのラベルを右クリックして [Describe] をクリックすると、デプロイされたリソースの詳細を表示できます。

[Describe] オプションは、Kubernetes Explorer パネル内で適切なリソースを右クリックして [Describe] を選択すると使用できます。

構成

[Develop on Kubernetes] 実行構成を使用する場合は、利用可能な設定を構成して Deployment をカスタマイズできます。プルダウンから [Run Configuration] を選択し、[構成を編集] を選択して、構成オプションにアクセスします。

Skaffold のオプション

  • Skaffold configuration - 「skaffold.yaml」構成ファイルを選択します。 プロジェクトに「skaffold.yaml」があれば、自動的に検出されます。
  • Deployment profile - 「skaffold.yaml」ファイルに構成されている利用可能なオプションからプロファイルを選択します。
  • Environment variables - Skaffold デプロイ プロセスに渡す追加の環境変数を構成できます。Skaffold フラグは、このフィールドで使用する環境変数としても構成できます。利用可能な Skaffold の環境変数の包括的は一覧については、Skaffold CLI リファレンス ドキュメントをご覧ください。
  • Verbosity - 出力の詳細レベルを tracedebuginfowarnerrorfatal に設定できます。デフォルトの詳細レベルは warn です。

Kubernetes のオプション

  • Deployment Context - アプリケーションのデプロイに使用される Kubernetes コンテキストを表します。デプロイ コンテキストが指定されていない場合、デフォルトの動作は、現在のシステム コンテキスト(ある場合)にデプロイされます。

    現在のコンテキストにデプロイしない場合は、[Run/Debug] の [Deployment] セクションで以下を選択できます。

    • minikube クラスタにローカルでデプロイ - Cloud Code 管理の minikube クラスタを起動してアプリを実行し、デプロイが停止するとクラスタを停止します。minikube クラスタがすでに実行されている場合、Cloud Code は既存の minikube クラスタをデプロイに使用します。
    • [Switch context and deploy to] - 現在のコンテキストをデプロイ時にシステムの指定コンテキストに変更します。

      Cloud Code Kubernetes 構成の Kubernetes デプロイ コンテキストの選択。

  • Delete deployments when finished - プロセスが終了すると Kubernetes デプロイを削除します。これはデフォルトの動作です。あるいは、この設定を切り替えて、デプロイが削除されないようにすることもできます。

コンテナ イメージ ストレージ オプション

詳細については、コンテナ イメージの保存に関するガイドをご覧ください。

ビルド設定

Cloud Code は、Docker、Jib、Buildpacks のアーティファクト タイプをサポートしています。優先するビルダーとそれに関係する設定の設定方法については、コンテナ イメージのビルド設定の構成ガイドをご覧ください。

サポートの利用

IntelliJ IDE でフィードバックを送信するか、問題を報告するには、[Tools] > [Cloud Code] > [Help / About] > [Submit feedback or report an issue] を選択します。ここから、GitHub で問題を報告したり、Stack Overflow で質問したりできます。

また、Google Cloud Slack コミュニティの 1 つである、#cloud-code チャンネルにも参加できます。