リモート開発を使用した Kubernetes アプリの実行

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

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

始める前に

このクイックスタートで使用する Google Cloud のリモート開発環境である Cloud Shell にアクセスするには、GCP プロジェクトを作成して課金を有効にする必要があります。

また、お使いの PC に次のソフトウェアがインストールされている必要があります。

Cloud Code の起動

Visual Studio Code と Remote - SSH 拡張機能をインストールしたら、下の [Cloud Code で開く] ボタンをクリックして、Cloud Shell でリモート開発環境に接続された Visual Studio Code を開きます。この環境には、Kubernetes アプリケーションの開発に必要なすべてのツールが用意されています。

[Cloud Code で開く] ボタンをクリックすると、VS Code が起動し、リモート開発ワークスペースにプロジェクトのクローンが自動的に作成されます。必要なものをまだ準備していない場合は、この時点でインストールするように求められます。

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

Google Kubernetes Engine クラスタの作成

Standard GKE クラスタを作成するには、次の手順を行います。

  1. Cloud Code ビューを使用して、左側の VS Code アクティビティ バーにあるアイコン Kubernetes Explorer のアイコン をクリックし、Google Kubernetes Engine Explorer に移動します。
  2. [Click here to log in to Google Cloud SDK] をクリックして、Cloud SDK で認証を行います。
  3. Google Kubernetes Engine Explorer パネルのヘッダーで、[+] ボタン(マウスオーバーで使用可能)をクリックして新しい GKE クラスタを作成します。
  4. デフォルトのプロジェクトにクラスタを作成していることを確認します。
  5. [クラスタを作成] ウィザードのフィールドに入力し、[クラスタを作成] をクリックします。

    この例では、プロジェクト ID はデフォルトのプロジェクト ID ボタンで設定され、ゾーンは us-central1-a に設定され、クラスタ名は my-first-cluster として定義されています。

    クラスタの作成には数分かかります。クラスタが作成されると、GKE Explorer ビュー Kubernetes Explorer のアイコン に表示されます。

    GKE Explorer を使用して新しいクラスタを作成する

アプリを実行する

構成のドライランを実行する

アプリの構成の有効性を確認する方法は次のとおりです。

  1. IDE で検証する構成ファイルを開きます(Hello World アプリの場合は、kubernetes-manifests フォルダの下に構成ファイルがあります)。
  2. コマンド パレット([Manage] メニュー 管理アイコン からアクセス)から [Cloud Code: Dry-run current config for server-side validation]、または [Cloud Code: Dry-run current config for client-side validation] を使用します。

    これにより、kubectl apply -f dry-run=server(または、クライアント オプションの場合は kubectl apply -f dry-run=client)が実行され、有効な検証(構成ファイルが有効でない場合はエラー メッセージ)がトースト通知として表示されます。

    コマンド パレットから表示されたドライランのコマンドと、サーバー側の検証のドライランの現在の構成ファイルが選択されました

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

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

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

  1. Cloud Code のステータスバーを使用して、[Run on Kubernetes] を選択します。
  2. 現在のクラスタ コンテキストを使用するか、別のクラスタ コンテキストに切り替えるかを確認します。
  3. プロンプトが表示されたら、イメージの push 先となるイメージ レジストリを選択します。

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

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

    Hello World アプリの実行

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

既存のクラスタを使用している場合、クラスタの認証情報を取得してクラスタを kubectl に追加するには、次のコマンドを実行します。

 gcloud container clusters get-credentials ${CLUSTER} --zone=${ZONE}
 

または、次のように GKE Explorer を使用してクラスタをアクティブとして設定し、クラスタの認証情報を取得することもできます。

  1. GKE Explorer(Cloud Code ビュー Kubernetes Explorer のアイコン の下の [Kubernetes Explorer] からアクセスできるパネル)に移動します。
  2. クラスタを右クリックし、[Set as Active Cluster] をクリックします。

アプリのデバッグ

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

  1. Cloud Code のステータスバーを使用して、[Debug on Kubernetes] を選択します。
  2. プロンプトが表示されたら、現在のクラスタ コンテキストを使用するか、または優先するコンテキストに切り替えるかを確認します。

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

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

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

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

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

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

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

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

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

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

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

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

ログの表示

実行中のアプリケーションのターミナル出力で実行中の Pod のログをライブで確認するだけでなく、Cloud Code に付属しているログビューアでログを表示することもできます。

ログを表示するには、次の手順に沿って操作します。

  1. コマンド パレット(Ctrl / Cmd + Shift + P キーを押すか、歯車アイコン 管理アイコン が付いた [Manage] メニューからアクセス)を使用して、「Cloud Code: View Logs」と入力し、ログビューアを起動します。
  2. ログビューアの検索ボックスのデプロイ フィールドを使い、実行中のアプリ(この場合は nodejs-hello-world)を検索してログを表示します。

    ログビューアの検索ボックス内の [Deployment] フィールドを「nodejs-hello-world」に設定してログを表示する

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

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

  1. Kubernetes Explorer に移動します。
  2. クラスタを選択して、その下にある [Pods] セクションから接続する Pod を選択します。
  3. 指定した Pod の下で、[コンテナ] セクションを展開します。
  4. ターミナルを開くコンテナを右クリックし、[Get Terminal] をクリックします。

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

    指定したポッドをターミナルに表示

クリーンアップ

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

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

Google Cloud を使用していてクラスタのみを削除する場合は、次の方法で削除できます。

  • Cloud Code ビュー Kubernetes Explorer のアイコン の Kubernetes Explorer で、Google Kubernetes Engine Explorer ペインから削除するクラスタを右クリックし、[クラスタを削除] をクリックします。

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

  1. Cloud Console の [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. このクイックスタート用に作成したプロジェクトを選択し、横にあるゴミ箱アイコンをクリックして削除します。

    プロジェクトがシャットダウンし、プロジェクト削除のスケジュールが決定されます。

次のステップ