Cloud Workstationsを徹底解説!

記事タイトルとURLをコピーする

G-gen の堂原です。Google Cloud (旧称 GCP) のマネージドなリモート開発環境である Cloud Workstations を解説します。

概要

Cloud Workstations とは

Cloud Workstations は Google Cloud において、マネージドなリモート開発環境を提供するサービスです。

Cloud Workstations では、使用するコンテナイメージやマシンタイプなどを定義した構成設定を事前に用意し、その設定に基づいて必要な数だけ開発環境を作成します。開発者は IAM で許可された開発環境にブラウザやローカルの IDE を用いて接続することができます。

利用イメージ

Cloud Workstations を使うと、例えばブラウザから下図のような IDE を起動できます。Visual Studio Code を使われている方は馴染み深い画面ではないでしょうか。

ブラウザで起動した IDE

メリット

Cloud Workstations を開発環境として利用することで、以下のようなメリットがあります。

  • 一貫した開発環境を共有でき、開発者ごとでライブラリの有無やバージョンに差が生じることがなくなる。
  • ローカルに開発環境を準備することなく、必要なときにすぐに環境を用意できる。
  • VPC 内に Compute Engine VM インスタンスとして作成されるため、セキュアな環境が構築できる。

コンポーネント

概要

Cloud Workstations は主に 3 つのコンポーネント Workstation clusterWorkstation configuration 及び Workstation から構成されており、下図のような構成となっています。

Cloud Workstations の構成

Workstation cluster

Workstation cluster は、Workstation configuration と Workstation をグルーピングするコンポーネントです。

Workstation cluster は VPC とリージョン、すなわちサブネットを指定して作成します。

パブリック IP アドレスでクラスタに接続できるパブリッククラスタと、プライベート IP アドレスでしか接続できないプライベートクラスタの 2 種類存在します。

クラスタ毎に Controller と Gateway が存在しており、ユーザはこれらを通して Workstation に接続します。

Workstation configuration

Workstation configuration は、簡単に言うと Workstation (後述) のテンプレートです。Workstation を構成する以下のような設定を定義します。

  • コンテナイメージ
    • 環境変数や ENTRYPOINT の設定も可能
  • マシンタイプ
  • 永続ディスク
  • サービスアカウント
    • このサービスアカウントは Workstation 起動時に使用されるもので、開発環境から各 Google Cloud のサービスにアクセスする際は改めて認証設定が必要です。

Workstation

Workstation は、Workstation configuration を基に作成される実際の開発環境です。実体は Compute Engine VM インスタンスとその中にデプロイされたコンテナで、起動中は Compute Engine のコンソール画面にて Workstation を構成しているインスタンスが確認できます。

インスタンスは起動時に、Workstation configuration で指定されたコンテナイメージを取得してコンテナを起動し、IDE やプログラム言語の設定・ライブラリはそのコンテナの中に存在するかたちとなります。

Workstation はいつでも起動・停止が可能で、停止するとインスタンスは削除されますが、作業データ自体は /home にマウントされた永続ディスクに保存されます。 Workstation が削除される際は同時に永続ディスクも削除されますが、設定で永続ディスクのみ残しておくことも可能です。

料金

種類

Cloud Workstations においては、大きく分けて 4 種類の料金が発生します。

  • Compute Engine VM インスタンス
  • 永続ディスク
  • Workstation 管理費
  • クラスタ料金

料金表は以下の公式ページを参照ください。

Compute Engine VM インスタンス 及び 永続ディスク

Compute Engine VM インスタンス及び 永続ディスクの料金は、各サービスの本来の料金に基づいて計算されます。

Workstation が停止中の間はインスタンスは作成されないので、インスタンスの料金は発生しません。

一方、永続ディスクは作業データの保存のため、Workstation が停止中の間も削除はされず残り続けます。

Workstation 管理費用

Workstation 管理費用は起動中の Workstation の vCPU の数に対して発生します。

2023 年 6 月現在では、1 vCPU につき 0.05 USD ですので、例えば e2-standard-2 (2 vCPU) を 8 時間起動したとすると料金は 0.8 USD となります。

0.05 [USD] * 2 [vCPU] * 8 [時間] = 0.8 [USD]

クラスタ料金

Workstation の状態に関わらず、クラスタ毎に毎時の料金が発生します。

コンテナイメージ

概要

Cloud Workstations においては、必要な IDE やプログラムの設定・ライブラリをコンテナイメージとし、このコンテナイメージをデプロイすることで開発環境を構築します。

いくつかコンテナイメージが予め用意されており、そのイメージをそのまま使用することができます。

あるいはベースイメージをもとにカスタムのコンテナイメージを作成し、使用することもできます。 この場合、カスタムのコンテナイメージは Container Registry または Artifact Registry にプッシュしておく必要があります。

IDE

提供されている IDE には大きく分けて以下の 2 種類があります。 いずれの IDE にも、拡張機能として Cloud Code がプリインストールされています。

Code-OSS で構築されたベースエディタ

Visual Studio Code で有名な Code-OSS で構築されたベースエディタには、以下の方法で接続することが可能です。

JetBrains IDE ベースのエディタ

IntelliJ IDEA や PyCharm など、各プログラム言語用に構成されたコンテナイメージが用意されています。

接続には JetBrains Gateway を用いることになります。

Google Cloud サービスとの連携

概要

Cloud Workstations の workstation からは、以下のような他の Google Cloud サービスとの連携が可能です。

  • Cloud Source Repositories で管理しているリポジトリをクローン
  • Cloud Storage や BigQuery からデータを取得

これらの他サービスには、API に対する認証・認可が必要です。Workstation configuration ではサービスアカウントを指定しますが、このサービスアカウントはあくまで Workstation の起動に用いられるもので、他の Google Cloud サービスへの認証・認可には利用できません。 これはインスタンスにアタッチされたサービスアカウントの認証情報が、インスタンス内にデプロイされているコンテナの中までは伝搬されないためです。

そのため他の Google Cloud サービスと連携をする場合は、Workstation に接続後、権限付与された Google アカウントで認証をする必要があります。

認証情報は基本的にホームディレクトリ配下に保存され、また Workstation の /home には永続ディスクがマウントされることから、同じ Workstation を使用する限りは認証は一度行えば大丈夫です。

例 : Cloud Source Repositories で管理しているリポジトリをクローン

以下は、Cloud Source Repositories で管理しているリポジトリを Workstation にクローンする手順です。 リポジトリは予め作成済みとします。

  1. Workstation にアクセスする
  2. Cloud Source Repositories への接続に使用する Google アカウントに権限を付与
  3. ターミナルを起動し Google アカウントで認証

     gcloud auth login --no-launch-browser
    
  4. リポジトリのクローンを作成

     gcloud source repos clone ${Gitリポジトリ名} --project=${Gitリポジトリが存在するプロジェクトのID}
    

/home 配下にクローンするのならば、本手順も一度実施すれば大丈夫で、次回 Workstation を起動した際も環境は維持されます。

ネットワーク

プライベートクラスタ

クラスタをプライベートクラスタとして設定すると、パブリック IP アドレスを用いた Workstation への接続が不可能になり、Private Service Connect を設定した VPC からのみ接続可能となります。

オンプレから接続する場合は、Cloud VPN や Cloud Interconnect を用いることになります。

注意点として、本設定は Cloud Workstations 経由での接続を管理するものであり、Workstation を構成する Compute Engine VM インスタンスへの直接の接続や、Workstation から外部への通信を制御するものではありません。

Workstation のパブリック IP アドレス

各 Workstation がパブリック IP アドレスを有するかどうかの設定が可能です。

パブリック IP アドレスを付与しない場合は、Container Registry または Artifact Registry にアクセスさせるために、Private Google Access または Cloud NAT を設定する必要があります。

起動・停止オプション

Quick start workstations

Workstation configuration 毎に、指定した数だけを Workstation を高速に起動することができるオプションです。

通常、停止中の Workstation は起動に数分の時間が必要です。 ところがこの設定をしておけば、早い場合は 10 秒ほどで起動状態とすることが可能です。

ただしこの設定で指定した数だけ、常時 Workstation が起動しているときと同等の料金が発生します。 仕組みとして、指定した数だけ常に Compute Engine VM インスタンスが起動しているためとなります。 つまり利便性とコストのトレードオフとなります。

また、現在起動している Workstation の数に関係なく常に指定した数分のインスタンスが待機しています。

例えば Quick start workstations で 2 台と指定し、更に 3 台の Workstation が起動している場合は、5 台分の Workstation の料金が発生します。 もちろん、4 台目の Workstation を起動する時は待機していたインスタンスが使用され(高速に起動)、追加で 1 台のインスタンスが待機用として作成されます。

Auto Sleep

指定した時間の間、Workstation にアクセスがなかった場合、その Workstation を自動的に停止中にするオプションです。

本オプションを設定しておくことで、停止忘れによる余分な料金発生を抑制することができます。

セキュリティ

IAM

Workstation configuration または Workstation 単位で、Workstation にアクセスできるユーザを管理することができます。

これによって開発者毎に適切な開発環境のみを提供することができ、管理が容易となります。

ファイアウォールルール

Workstation への接続はクラスタに紐付いている Controller 及び Gateway を用いて行われることから、各 Workstation に対するインバウンドの通信をファイアウォールルールで許可する必要がなくなります。

そのため、直接 Compute Engine VM インスタンスへの SSH 接続は制限することがベストプラクティスとなります。

Workstation のセキュリティオプション

Workstation の実体が Compute Engine VM インスタンスであることから、以下のような Compute Engine のセキュリティオプションを利用することができます。

これらのオプションについては以下の記事で紹介しています。

blog.g-gen.co.jp

堂原 竜希(記事一覧)

クラウドソリューション部データアナリティクス課。2023年4月より、G-genにジョイン。

Google Cloud Partner Top Engineer 2023, 2024に選出 (2024年はRookie of the yearにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。