🐕

【Google Cloud】手を動かして学ぶCloud Workstations

に公開

この記事で伝えたいこと(ポイント)

  • Cloud Workstationsの概要を学べるよ
  • Cloud Workstationsを使ってハンズオンをしているよ

はじめに

この記事ではGoogle Cloudが提供するCloud Workstationsをハンズオンで学習していく内容となっています。
主な内容としてはセットアップや使い方を中心に書きます。(忘れやすいことなど)
誤りなどがあれば修正していく想定です。

Cloud Workstationsとは

Cloud WorkstationsはGoogle Cloudが提供する開発環境を提供するサービスです。
いわゆるCloud IDE(Integrated Development Environment)です。
Google Cloud上で開発環境を構築してコードの編集やデバッグ、ビルド、デプロイなどを実行できます。

Cloud Workstationsの仕組み

Cloud Workstationsの仕組みとしてはCode-OSSが使われています。
※デフォルトで起動される環境ではCode-OSSをベースにしたエディタが起動されます。

参考:microsoft/vscode: Visual Studio Code

なお、Cloud Workstationsはコンテナイメージで動作しています。そのための事前構築イメージが用意されています。
事前構成済みのベースイメージ

Cloud Workstationsの料金

料金については公式ドキュメントにあるので細かいことは省略しますが、主に以下のような料金がかかります。

  • Cloud Workstationsの利用料金
  • コントロールプレーン料金
  • 永続ディスクストレージ料金
  • その他の費用

参考:料金 | Cloud Workstations | Google Cloud

基本的にCloud Workstationsの料金は使用した時間に応じて課金されるということを覚えておきましょう。

なぜCloud Workstationsを使うのか

Cloud Workstationsを使う理由としては以下のような理由が考えられます。

  • 開発環境をローカル環境上に構築する必要がないため、自由に開発環境を構築できる
  • 開発環境がクラウド上にあり、許可されたユーザーがアクセスできるため、セキュリティを担保しながらチームでの共同作業が容易になる
  • 開発環境をいつでも簡単にリセットできるため、環境の不整合を防げる

ですが、一方でインターネット接続が必要なため、オフラインでの作業ができないというデメリットもあります。
また、Cloud WorkstationsはGoogle Cloudのサービスであるため、Google Cloudのアカウントが必要です。

補足:他のCloud IDE(GitHub Codespaces)

Cloud Workstations以外にもさまざまなCloud IDEがあります。
代表的なサービスとしてはGitHub Codespacesがあります。

GitHub CodespacesはGitHubが提供するCloud IDEで、GitHub上のリポジトリを直接編集できます。
※このzenn.devのリポジトリもGitHub上にあるのでCodespacesで編集しています。

Cloud WorkstationsとGitHub Codespacesの違いとしては、Cloud WorkstationsはGoogle Cloud上で動作するため、Google Cloudのサービスと連携しやすいという点があります。もちろん、GitHub CodespacesもGoogle Cloudのサービスと連携できますが、Cloud Workstationsの方が連携しやすいです。

Cloud Workstationsの構成要素

Cloud Workstationsは以下のような構成要素で構成されています。

  • クラスター
  • ワークステーションの構成
  • ワークステーション

クラスター、ワークステーションの構成、ワークステーションの順番に作成する必要があります。

ハンズオン

ここからは実際にCloud Workstationsを使ってみます。
おおまかな流れとしては以下のとおりです。

  • クラスターを作成する
  • ワークステーションの構成を作成する
  • ワークステーションを作成する
  • 環境を起動する
  • Visual Studio CodeのRemote SSH拡張機能を使って環境に接続する

Google Cloud ConsoleからCloud Workstationsの画面を開く

Cloud Workstationsの画面を開くにはGoogle Cloud ConsoleからCloud Workstationsの画面を開きます。

まずはGoogle Cloud Consoleにログインします。

Google Cloud コンソール

検索ボックスに「Cloud Workstations」と入力して、Cloud Workstationsの画面を開きます。

console_workstations.png

クラスターを作成する

次にクラスターを作成します。クラスターはCloud Workstationsの基盤となる部分です。
クラスターを作成するには、Cloud Workstationsのクラスタ管理画面から作成をクリックします。

create_cluster.png

クラスターを作成する場合は以下の情報を設定します。

  • クラスター名
  • リージョン
  • ネットワーク
  • ゲートウェイ

app-dev-clusterという名前のクラスターをasia-northeast1に作成します。

cluster_config1.png

ネットワークを設定します。今回はdefaultのVPCネットワークを使用しますが、必要に応じてカスタムVPCネットワークを作成して使用することもできます。
また、ゲートウェイについては今回はパブリックゲートウェイを使用しますが、必要に応じてプライベートゲートウェイを使用することもできます。

cluster_config2.png

最後に作成をクリックしてクラスターを作成します。クラスターの作成には時間がかかります。しばらく待ちましょう。

ワークステーションの構成を作成する

クラスターの作成が完了したら、次にワークステーションの構成を作成します。
ワークステーションの構成はCloud Workstationsの環境を定義する部分です。
ワークステーションの構成をクリックします。

works_config.png

ワークステーションの構成を作成するには、作成をクリックします。

create_works_config.png

ワークステーションの構成を作成する場合は以下の情報を設定します。

  • ワークステーションの構成名
  • クラスター
  • クイックスタートの選択
  • クイックスタートのプールサイズ

app-dev-configという名前でワークステーションの構成を作成します。
クラスターは先ほど作成したapp-dev-clusterを選択します。
それ以外にもマシン設定、環境設定、ユーザと権限を設定することができますが、今回はデフォルトのままで問題ありません。

create_ws_config.png

デフォルトの設定値は以下のとおりです。

  • マシン設定

    • マシンタイプ:e2-standard-4
    • GPUなし
  • ゾーン

    • asia-northeast1-a
    • asia-northeast1-c
  • 費用の削減

    • 自動スリープ
      • 2時間操作がなかった場合
    • 自動シャットダウン
      • 12時間
  • 許可するポート

    • ポート範囲1
      • 22
    • ポート範囲2
      • 80
    • ポート範囲3
      • 1024-65535
  • 詳細オプション

    • 無効
      • パブリック IP アドレスを無効にする
      • ネストされた仮想化を有効にする
      • Confidential VMs サービス
      • セキュアブートを有効にする
      • vTPM を有効にする
      • 整合性モニタリングを有効にする
    • 有効
      • SSHを無効にする
  • 暗号化

    • Google が管理する暗号鍵
  • 環境設定

    • ベースイメージのコードエディタ
    • サービスアカウント
      • デフォルトのCompute Engineサービスアカウント
    • 永続ディスクの設定
      • 空の永続ディスクを新規作成する
        • Balanced
        • 200GB
        • Delete
      • 無効
        • エフェメラル ディスクをアタッチする
  • コンテナの詳細オプション

    • 空白のまま
      • 作業ディレクトリ
      • ユーザとして実行
      • コマンド
    • 設定なし
      • 引数
      • 環境変数

ワークステーションを作成する

次に作成済のワークステーションの構成を使ってワークステーションを作成します。
ワークステーションをクリックします。

workstations.png

ワークステーションを作成するには、ワークステーションを作成をクリックします。

create_works_btn.png

今回はapp-dev-workstationという名前のワークステーションを作成します。

名前と表示名にapp-dev-workstationを入力します。構成には先ほど作成したapp-dev-configを選択します。
入力が完了したら作成をクリックします。

create_workstation.png

ワークステーションの作成には時間がかかります。しばらく待ちましょう。

環境を起動する

ワークステーションの作成が完了したら、環境を起動します。
start_env.png

起動には時間がかかります。しばらく待ちましょう。

ワークステーションの作成が完了すると、ステータスが稼働中になります。
works_running.png

tcpトンネルを作成して環境に接続する

gcloudコマンドでtcpトンネルを作成済のワークステーションに作成します。
今回は環境変数を使った方法で接続します。まずは環境変数を設定します。
設定する環境変数は以下のとおりです。

  • GOOGLE_CLOUD_PROJECT
  • GOOGLE_CLOUD_LOCATION

gcloudの初期設定が完了している場合は以下のコマンドを実行することで環境変数を設定できます。
ターミナルを起動して、以下のコマンドを実行します。

export GOOGLE_CLOUD_LOCATION=asia-northeast1
export GOOGLE_CLOUD_PROJECT=`gcloud config list --format 'value(core.project)'`

次にgcloudコマンドを使ってCloud Workstationsに接続します。
gcloudコマンドを使ってCloud Workstationsに接続するには、以下のコマンドを実行します。

gcloud workstations ssh \
  --project=$GOOGLE_CLOUD_PROJECT \
  --cluster=app-dev-cluster \
  --config=app-dev-config \
  --region=$GOOGLE_CLOUD_LOCATION \
  app-dev-workstation

実行結果

Picking local unused port [63393].
Listening on port [63393].
Warning: Permanently added '[localhost]:63393' (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.6.72+ x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
user@app-dev-workstation:~$ 

次にgcloudコマンドを使ってtcpトンネルを作成します。
gcloudコマンドを使ってtcpトンネルを作成するには、以下のコマンドを実行します。

gcloud workstations start-tcp-tunnel \
  --project=$GOOGLE_CLOUD_PROJECT \
  --cluster=app-dev-cluster \
  --config=app-dev-config \
  --local-host-port=:63576 \
  --region=$GOOGLE_CLOUD_LOCATION \
  app-dev-workstation 22

実行結果

Listening on port [63576].

tcpトンネルが作成されるとリモートホストは63576ポートで待機します。この状態を維持したまま、次の手順に進みます。

Visual Studio CodeのRemote SSH拡張機能を使って環境に接続する

次にVisual Studio CodeのRemote SSH拡張機能を使ってCloud Workstationsに接続します。
※Remote SSH拡張機能をインストールしていない場合は、インストールしてください。

Remote SSH拡張機能を使ってCloud Workstationsに接続します。

具体的な手順はCloud Workstations ホストに接続するを参考にしてください。

接続の際はuser@localhost:63576を指定して接続します。

user@localhost:63576

接続が完了すると、VSCodeを経由してCloud Workstationsに接続されます。

まとめ

Cloud Workstationsについて学ぶことができました。
Cloud WorkstationsはGoogle Cloudが提供するCloud IDEで、開発環境をクラウド上に構築できます。
Cloud Workstationsを使うことで、開発環境をローカル環境上に構築する必要がなくなり、自由に開発環境を構築できるようになります。

また、Gemini Code Assistと統合されているため、Geminiを活用した開発が可能です。

Discussion