リモート開発を使用して Kubernetes アプリをデプロイする

このページでは、Cloud Shell のリモート開発環境を使用して Cloud Code for VS Code を使用する方法について説明します。

このクイックスタートでは、ボタンをクリックすることで、設定を省略してプロジェクトのクローンをリモート開発ワークスペースに作成します。さらに、クラスタを作成し、作成したクラスタで Kubernetes アプリを実行して実行中のコードをデバッグします。また動作中のアプリケーションのログを表示し、実行中のコンテナにターミナルを接続します。

始める前に

サポート リソースを設定して、このクイックスタートで使用する Google Cloud のリモート開発環境である Cloud Shell にアクセスするには、VS Code 内で次の手順を行います。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Visual Studio Code がマシンにまだインストールされていない場合は、インストールします。
  7. Remote - SSH Visual Studio Code 拡張機能をインストールします。
  8. Git をインストールします。 サンプルをマシンにコピーするには Git が必要です。
  9. Cloud Code プラグインをインストールします(まだインストールしていない場合)。

Cloud Code の起動

Cloud Shell 内のリモート開発環境に接続された Visual Studio Code を開くと、その環境には Kubernetes アプリケーションの開発に必要なすべてのツールが用意されています。

  1. リモート開発ワークスペースで作業を開始するには、クローン プロジェクトで使用する言語を選択し、[Open with Cloud Code] ボタンをクリックします。

    VS Code が起動し、リモート開発ワークスペースにプロジェクトのクローンが作成されます。

  2. 必要なものをまだ準備していない場合は、インストールするように求められます。

GKE クラスタを作成する

標準の Google Kubernetes Engine(GKE)クラスタを作成するには、次の手順に沿って操作します。

  1. [Cloud Code] をクリックし、[Kubernetes] セクションを展開します。

  2. 追加 [KubeConfig にクラスタを追加] をクリックしてから、[クイック選択] メニューで [Google Kubernetes Engine] をクリックします。

  3. container.googleapis.com を有効にするように求められたら、[Yes] を選択します。

  4. [+ 新しい GKE クラスタを作成する] をクリックします。

  5. クラスタタイプとして [スタンダード] を選択します。

  6. [開く] をクリックして、Cloud Code が Google Cloud コンソールを開くようにします。

  7. Google Cloud コンソールで、作成したプロジェクトを使用して、ゾーンを us-central1-a に設定し、クラスタ名を my-first-cluster に設定します。

  8. [CREATE] をクリックします。クラスタの作成には数分かかります。

  9. クラスタが作成されたら、[クイックピック] メニューで、更新 [更新] をクリックします。

  10. 新しいクラスタの名前がリストに表示されたら、クラスタ名をクリックします。新しいクラスタが構成に追加され、アクティブなコンテキストとして構成されます。

アプリを実行して表示する

設定がすべて完了したら、アプリケーションを実行して、公開できます。Cloud Code がファイル システムの変更を監視するため、ほぼリアルタイムでアプリを編集して再実行できます。

アプリケーションを実行するには、次の手順に沿って操作します。

  1. Cloud Code のステータスバーで、アクティブなプロジェクト名をクリックします。

    ステータスバーのアクティブなプロジェクト名

  2. 表示されたクイック選択メニューで、[Run on Kubernetes] を選択します。

  3. 現在のクラスタ コンテキストを使用するか、別のクラスタ コンテキストに切り替えるかを確認します。

  4. プロンプトが表示されたら、イメージの push 先となるイメージ レジストリを選択します。gcr.io/PROJECT_ID を使用して新しいイメージ レジストリを作成する場合は、イメージ レジストリがクラスタと同じプロジェクト内にあることを確認してください。

    実行中のアプリケーションの進捗状況を追跡できる出力ウィンドウが表示されます。また、ターミナル出力に実行中の Pod から取得したログのライブ ストリームも表示されます。

  5. アプリケーションが Kubernetes で実行されると、出力ウィンドウに IP アドレスが表示されます。このリンクされた IP アドレスを使用してアプリケーションにアクセスするには、Ctrl/Cmd キーを押しながらアドレスをクリックします。

トラブルシューティングのヒント

既存のクラスタを使用している場合に、クラスタをアクティブとして設定し、クラスタの認証情報を取得するには、次の手順に従います。

  1. [Cloud Code] をクリックし、[Kubernetes] セクションを展開します。

  2. クラスタ名を右クリックし、[Set as Active Cluster] をクリックします。

アプリのデバッグ

アプリケーションをデバッグするには、次の手順に沿って操作します。

  1. Cloud Code のステータスバーで、アクティブなプロジェクト名をクリックします。

    ステータスバーのアクティブなプロジェクト名

  2. 表示されたクイック選択メニューで、[Debug on Kubernetes] を選択します。

  3. プロンプトが表示されたら、ローカルでアプリケーションを実行およびデバッグするための認証情報を認証します

  4. プロンプトが表示されたら、現在のクラスタ コンテキストを使用するか、または優先するコンテキストに切り替えるかを確認します。

    Cloud Code は .vscode/launch.json ファイルの cloudcode.kubernetes 構成を使用してアプリケーションを実行し、アプリケーションにデバッガ セッションをアタッチします。

    Cloud Code はコンテナをビルドしてレジストリに push し、Kubernetes 構成をクラスタに適用して、ライブ アプリケーションの閲覧に使用できる IP アドレスを返します。

  5. デバッガ セッションが接続される前に、デバッグするプログラムが存在するリモート コンテナでディレクトリを確認または入力するか、Esc キーを押してコンテナのデバッグをスキップするよう求められます。

  6. 9 行目にブレークポイントを追加するには、src/app.js を開き、エディタの空白をクリックします。

    赤い塗りつぶしの円はアクティブなブレークポイントを示し、灰色で白抜きの円は無効なブレークポイントを示します。ブレークポイントを細かく制御するには、VS Code のデバッグビューの [BREAKPOINTS] セクションを使用します。

    デバッグビューの左側のパネルにある [BREAKPOINTS] セクションでブレークポイントの追加、削除、無効化を行う

    新しいリクエストをアプリケーションに送信すると、デバッガは最初のアクティブなブレークポイントで一時停止します。

    次のサンプルでは、[Variables] セクションの [Local] で、Hello, world!res._contentLength; の値が 13 になっていることに注意してください。

    ブレークポイントと変数でアプリを一時停止し、スコープ内の値が入力されたコールスタック セクション

  7. 8 行目の Hello, goodbye! に送信される文字列を編集し、[Debug on Kubernetes] アクションを再起動します。

    アプリを再ビルドして再デプロイしたら、res._contentLength の更新された値をメモします。

    更新された値が含まれるブレークポイントで一時停止したアプリ

デバッグのセッションを開始すると、[Development sessions] ペインに構造化ロギングビューが表示されます。タスクが開始されると、タスクが回転する半円の progress_activity とともに表示されます。

タスクが成功すると、手順の横にチェックマーク check_circle が表示されます。

手順の詳細を表示するには、[開発セッション] ペインで手順をクリックします。[出力] ペインに、ロギング出力の手順が表示されます。

コンテナでターミナルを開く

コンテナでターミナルを開くには、次の手順に沿って操作します。

  1. [Cloud Code] をクリックし、[Kubernetes] セクションを展開します。

  2. 次のセクションを展開します。

    • 優先クラスタのセクション
    • [Namespaces] セクション、優先する名前空間のセクション
    • [Pods] セクションと、優先する Pod のセクション
    • [Containers] セクション

      Cloud Code Pod

  3. ターミナルを開くコンテナを右クリックし、[Get Terminal] をクリックします。

    ターミナルが起動し、実行中のコンテナ内のシェルにアクセスできるようになります。

クリーンアップ

アプリケーションを中止すると、実行中にデプロイされたすべての Kubernetes リソースは自動で削除されます。

このクイックスタートで使用した他のリソースについてアカウントに課金されないようにするには、プロジェクトを再利用する場合、プロジェクトを削除するか、作成したクラスタを削除してください。

クラスタを削除するには:

  1. [Cloud Code] をクリックし、[Kubernetes] エクスプローラを展開します。
  2. ポインタをクラスタ名に合わせて、open_in_new [Google Cloud コンソールで開く] をクリックします。
  3. [削除] をクリックし、[削除] をクリックします。

プロジェクト(およびクラスタを含む関連リソース)を削除するには、次のようにします。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ