Cloud Code for VS Code を使用して Kubernetes アプリをデプロイする

このページでは、Cloud Code をすぐに使い始める方法について説明します。

「Hello World」サンプル アプリケーションを使用して新しい Kubernetes アプリケーションを設定します。クラスタを作成し、そこでアプリを実行してコードをデバッグします。動作中のアプリケーションのログの表示や、実行中のコンテナへのターミナルの接続について取り上げます。

始める前に

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Google Kubernetes Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Google Kubernetes Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  10. Git をインストールします。 サンプルをマシンにコピーするには Git が必要です。
  11. Docker をインストールします。サンプルコードをビルドするには、Docker が必要です。ローカル ユーザー アカウントでコンテナをビルドできることを確認します。
  12. Cloud Code プラグインをインストールします(まだインストールしていない場合)。
  13. 必要なロール

    このクイックスタートを完了するために必要な権限を取得するには、プロジェクトに対する Kubernetes Engine 管理者 roles/container.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

アプリケーションを作成する

  1. コマンド パレットを開き(Ctrl/Cmd+Shift+P を押下するか、[表示] > [コマンド パレット] をクリック)、その後、Cloud Code: New Application を実行します。

  2. [Kubernetes Application] を選択します。

  3. お好みの言語の Hello World アプリを選択します。

    たとえば、Node.js: Hello World を選択すると、スターターの Node.js Hello World アプリが作成されます。

  4. 新しいアプリケーションを保存します。

    アプリケーションが作成されたことを確認する通知が表示され、アプリケーションの新しいウィンドウが開きます。

GKE クラスタを作成する

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

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

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

  3. コンテナ API を有効にするように求められたら、[はい] を選択します。

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

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

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

  7. Google Cloud コンソールで、選択したプロジェクトが、上記で作成または選択したプロジェクトであることを確認します。

  8. クラスタ名を my-first-cluster に設定します。

  9. ロケーション タイプとして [Zonal] を選択し、ゾーンを us-central1-a に設定します。

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

  11. クラスタが作成されたら、[KubeConfig にクラスタを追加] をもう一度クリックし、作成したクラスタをリストから選択します。

  12. 新しいクラスタが構成に追加され、アクティブなコンテキストとして構成されます。

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

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

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

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

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

  2. 表示されたクイック選択メニューで、[Kubernetes 上で実行する] を選択します。もう一度プロンプトが表示されたら、[Run on Kubernetes] を選択します。

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

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

  5. アプリケーションが Kubernetes で実行されたら、[開発セッション] セクションの [Run on Kubernetes] タスクの [ステータス] エントリをクリックします。ウィンドウが開き、アプリケーションの URL を含む [出力] タブが表示されます。この URL を開くには、Ctrl キー(macOS では Command キー)を押しながらアドレスをクリックします。

    Google Cloud コンソールのワークロードの概要でアプリケーションを確認することもできます。実行中のアプリケーションの詳細(外部 IP アドレスやポート番号など)を表示するには、リスト内のアプリケーション名をクリックします。

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

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

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

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

アプリのデバッグ

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

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

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

  2. 表示されたクイック選択メニューで、[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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ