Kubernetes アプリケーションの実行

Cloud Code を使用すると、skaffold dev を利用して Kubernetes クラスタでアプリケーションを簡単に実行し、ライブで表示できます。ローカル クラスタ(Minikube や Docker Desktop など)、Google Kubernetes Engine、その他のクラウド プロバイダでアプリケーションを実行できます。

アプリケーションの実行

  1. Cloud Code のステータスバーを使用して [Run on Kubernetes] コマンドを選択します。
  2. アプリケーションに必要な skaffold 構成または cloudcode.kubernetes 起動構成が含まれていない場合は、Cloud Code によりそうした構成を設定できます
  3. 現在の Kubernetes コンテキストを使用してアプリを実行する(または目的のアプリに切り替える)かどうかを確認します。
  4. 選択したコンテキストがリモート クラスタである場合、イメージの push 先となるイメージ レジストリを指定するように求められます。

    次に示すのは、一般的なレジストリの場合にコンテナ イメージの保存場所を指定する方法の例です。

    Docker Hub docker.io/{account}
    非公開の Docker Hub リポジトリを使用している場合は、適切に認証されるようにしてください。
    Google Container Repository(GCR) gcr.io/{project_id}

    Cloud Code により、このイメージ レジストリと Kubernetes マニフェストで指定されたイメージ名が連結され、最終的なイメージ リポジトリ名が生成されます。

    詳細については、イメージ レジストリ取り扱いガイドをご覧ください。

    この選択は cloudcode.kubernetes 起動構成(.vscode/launch.json 内)に保存されます。

  5. 次に、Cloud Code はコンテナをビルドして、レジストリに push し、Kubernetes 構成をクラスタに適用して、ロールアウトを待ちます。

  6. ロールアウトの完了後、Cloud Code は宣言されたすべてのコンテナポートをマシンに自動的にポート転送します。また、ライブ アプリケーションをブラウジングできるように、出力ウィンドウに URL を表示します。

    ポート転送して出力ウィンドウに URL を表示する

  7. デフォルトでは、Cloud Code はファイル(Kubernetes の構成とコード)の変更を継続的に監視し、コンテナを再ビルドして、クラスタに再デプロイすることで、編集はほぼリアルタイムで反映されます。この動作は、起動構成の watch フラグを使用して変更できます。

  8. セッションが完了したら、Cloud Code のステータスバーを使用して、アプリケーションとコンテキスト リソースを監視するための追加のコンテキスト メニュー オプションを使用できるようになります。

    • Open Deployment Logs: Cloud Code ログビューアで特定のデプロイメントのアプリケーション ログを開きます。
    • Open Service URL: 特定サービスのアプリケーション サービス URL をウェブブラウザで開きます。
    • Turn on/off watch mode: 現在のセッションのウォッチモードを切り替えます(デバッグ セッションでは使用できません)。

      Cloud Code のステータスバーから選択できるオプション: 通常の Cloud Code アクションに加えて、Open Logs ログ、Open Service URL、Watch Mode をオンにします

  9. アプリケーションの実行を停止するには、デバッグ ツールバーの停止アイコンをクリックします。

    アプリケーションを終了すると、デプロイされたすべての Kubernetes リソースがクラスタから削除されます。この動作は、起動構成の cleanUp フラグを使用して変更できます。

起動構成のカスタマイズ

アプリケーションの実行方法を設定するには、skaffold.yaml コンテンツをカスタマイズし、.vscode/launch.jsoncloudcode.kubernetes 構成で次のフィールドを指定します。

  • skaffoldConfig: ビルドとデプロイの設定を含む skaffold 構成ファイルを指定します。
  • profile: 使用する skaffold プロファイルを指定します。定義されていない場合は、デフォルトのプロファイルが使用されます。
  • imageRegistry: イメージを push するイメージ レジストリを指定します。
  • watch: ワークスペースの変更を監視し、アプリケーションを再実行します。明示的に false に設定されていない限り、デフォルトでは true です。
  • cleanUp: クラスタにデプロイされた Kubernetes リソースをアプリケーションの終了後に削除します。明示的に false に設定されていない限り、デフォルトでは true です。
  • portForward: クラスタ上の公開 Kubernetes リソースをローカル PC にポート転送します。明示的に false に設定されていない限り、デフォルトでは true です。