🖥

Google Cloud の Cloud Workstations (プレビュー)を使ってみよう

2023/01/06に公開

本記事は Google Cloud Japan Advent Calendar 2022 の 「今から始める Google Cloud 編」 の25日目の記事です。

はじめに

Cloud Workstations は Google Cloud 上でコンピュートリソースが管理されるリモート開発環境です。クライアント端末から、ブラウザ、 IDE、SSH などを経由して Google Cloud 上の開発環境へ接続します。

https://cloud.google.com/workstations?hl=ja

この記事では、まずは使ってみるところまでの最低限必要な情報を紹介します。

なにがうれしいのか

二者の観点から整理するとすっきりします。上長やチームリーダーといった「管理者」と、エンジニアといった「開発者」の二者です。

  1. 管理者
    • 環境のインフラを管理できる
    • 安全なイメージ上で開発してもらう
    • さらに VPC Service Controls を構成することで、データ流出のリスク軽減も可能になる
  2. 開発者
    • 必要なときすぐに環境が手に入る
    • どこからでもアクセスできる
    • 事前に設定することができるので、初期設定が不要になる
    • チーム間で一貫した設定を共有できる

概念

まずはシンプルに使ってみるうえで、最低限、先に理解しておくべき概念は以下の 3 つです。このあと作成する順番で簡単に説明します。

  1. クラスタ (Cluster)
    • ワークステーションを構成する、Compute Engine VM、永続ディスク、接続用の IAM、Private Service Connect といったリソース一式です。
    • リージョンと VPC ネットワークごとに作成します。
  2. 構成 (Configuration)
    • ワークステーションの構成を管理します。ここでマシンタイプやイメージを設定します。
    • コンテナイメージや拡張機能を指定するので、フロントエンド開発用、バックエンド開発用、といった単位で、環境別に作成することになるかと思います。
  3. ワークステーション (Workstation)
    • 開発をするマシン単位で作成します。実体は Compute Engine のインスタンスです。
    • 利用しない時間は停止して、使用料をおさえることができます。

より詳しいアーキテクチャを理解したい場合、以下のドキュメントが参考になります。
https://cloud.google.com/workstations/docs/architecture?hl=ja

使ってみよう

事前準備

  1. Google Cloud Console を開きます。これから利用するプロジェクトが選択されているか確認してください。
  2. 恒例の事前準備からですが、Cloud Workstations の API を有効にします

クラスタ (Cluster) を作成する

  1. Cloud Console から Cloud Workstations のページを開きます。
  2. 左メニュー [クラスタ] より、クラスタページに移動し、[CREATE CLUSTER] ボタンをクリックします。
  3. クラスタ情報を入力します。これらはあとから変更できません。
    • クラスタの [名前] を入力します。例:cluster-asia-east1
      次に入力する、リージョン名と Gateway type を表す public or private を含めておくと、後ほど識別しやすいです。
    • クラスタの [リージョン] を選択します。2022/12 時点ではまだ日本リージョンは選択できませんので、地理的に最も近い asia-east1 (台湾) を選択します。
    • [Advanced network settings] の折りたたみアイコンをクリックします。
  4. ネットワークに関わる設定を確認します。ここは全てデフォルトのままで構いません。項目だけ見ていきます。
    • [ネットワーク] は、デフォルトでは空欄になっています。このまま作成すると default ネットワークにクラスタが作成されます。
    • [Gateway type] は、Public gateway か、Private gateway かを選択します。デフォルトの Public gateway のまま作成します。
      (補足)Private gateway を選択すると、プライベート クラスタを作成します。詳細は、VPC Service Control と プライベート ゲートウェイ のドキュメントを参照ください。
    • [作成] ボタンをクリックします。
  5. クラスタ一覧画面で、RECONCILING の状態で作成中のアイコンが表示されます。画面の説明文のとおり、20分ほどかかります。作成完了まで待ちましょう。

構成 (Configuration) を作成する

この構成は Cloud Workstations のなかで最も重要な設定項目と言っても過言ではありません。これをチーム単位で一貫して管理することで、新しいメンバーがチームにジョインした場合でも、すぐにこの構成の権限を与えて、新メンバーは自分のワークステーションを作成することができます。
また、多くの項目は、作成したあとから変更することができます。利用しながら調整してもよいでしょう。利用するクラスタ、ディスクサイズ、は後から変更できません。

  1. 左メニュー [構成] より、構成ページに移動し、 [CREATE CONFIGURATION] ボタンをクリックします。
  2. [Basic information] では、以下を入力します。
    • 構成の [名前] を入力します。
    • 先ほど作成したクラスタを選択します。
    • Quick start するかどうか、コスト重視で Disabled にしておきます。Enabled にすると、起動が早くなるぶん、暖機運転しているインスタンスの料金がかかります。
  3. [Machine configuration] は、すべてデフォルトのままで構いません。
    • [マシンタイプ] は、デフォルト e2-standard-4 のまま進めます。
    • [Auto-sleep] は、デフォルト 2 hours のまま進めます。短くすることでコスト削減を見込めます。
    • [Advanced options] は、変更せずに、このまま進めます。
    • [続行] ボタンをクリックします。
  4. [Environment customization] では、以下を入力します。
    • Storage settings で、[Disk type] に Balanced、[Disk size] に 10 GB を選択します。デフォルトのままで問題ありませんが、小さいサイズを選択することでコスト削減を見込めます。
    • [作成] ボタンをクリックします。
  5. 作成完了すると、ステータスが Ready になります。通常は新しいメンバーにこの構成へのアクセス権限を付与するといった運用をします。 その場合は、[ADD USERS] から行います。今回は構成を作った私自身がこのあとワークステーションを作成しますのでこのまま進めます。

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

ここまではチームで共通の構成を扱っていましたが、ここからは各自の開発者が行うステップです。ワークステーションの作成は、ここまで作成した構成を選択するだけで非常にシンプルです。

  1. 左メニュー [ワークステーション] より、ワークステーションページに移動し、 [CREATE WORKSTATION] ボタンをクリックします。
  2. ワークステーションの [名前] を入力し、先ほど作成した構成を選択し、[作成] ボタンをクリックします。
  3. ワークステーションを起動します。[START] をクリックします。
  4. 起動したらステータスが [RUNNING] になります。それでは接続しましょう。[LAUNCH] をクリックします。
  5. すると別タブが開いて、ブラウザ上でコードエディタが開きます。
    • 最初は Get Started 画面が開きます。いくつかカスタマイズ方法を確認したら、[Mark Done] でOKです。
    • 左上の三本線メニューから、コードエディタのメニュー、[File]、[Edit] などを開くことができます。Terminal を開いて gcloud コマンドが初期インストールされていることを確認できます。
      gcloud -v 
      
    • 左側アイコンを見ると、Cloud Code 拡張機能が初期インストールされていることを確認できます。
  6. 次にブラウザからではなく、SSH 接続してみます。Cloud Console 画面に戻り、[LAUNCH] ボタンの右隣にある折りたたみアイコンをクリックして展開すると、接続メニューが選択できます。
    • [Connect to port 80] は上記のブラウザで開く挙動と同じです。
    • [Connect using SSH] は、TCP トンネリングするコマンドと、SSH コマンドの 2 つを各環境にあわせて表示してくれます。
  7. [Connect using SSH] をクリックすると、以下のようなダイアログが表示されます。表示されているコマンドをコピー&ペーストで実行していきましょう。
    • gcloud alpha workstations start-tcp-tunnel ... のコマンドは、gcloud コマンドで認証していればどこからでも TCP トンネルで接続することができます。(補足:執筆時点で、gcloud alpha ... ではなく gcloud beta ... でも実行可能です。)
    • ssh -p 2222 \ ... のコマンドは、トンネル接続した端末から続けて SSH 接続します。
    • なお、トンネルを接続したあとであれば、例えば VS Code の Remote SSH 機能でも接続できます。

本格的に利用するためには (Next Step)

今回はシンプルな環境を構築するための最小限の情報を紹介しましたが、最後に、実際のプロジェクトで利用する場合に必要になる情報をいくつか紹介します。

今回は既存で用意されているベースエディターのイメージを使いました。通常のプロジェクトであればコンテナイメージをカスマイズして、チームにあった環境を用意することになるでしょう。

https://cloud.google.com/workstations/docs/customize-container-images?hl=ja

またチームによっては、IntelliJ などの JetBrains 社の IDE を使っていることもあるかと思います。JetBrains IDE から Cloud Workstations へリモート接続する機能がサポートされています。

https://cloud.google.com/workstations/docs/develop-remotely-with-jetbrains-ides?hl=ja

今回はデフォルト構成で作成しましたが、よりセキュアに構築するためのプラクティスがガイドされています。パブリック IP アドレスを無効にする、カスタムイメージをビルドするためのパイプラインを作成する、といったあたりは重要なポイントです。ぜひ参考にしてみてください。

https://cloud.google.com/workstations/docs/set-up-security-best-practices?hl=ja

参考情報

https://www.youtube.com/watch?v=C6Dpmujxp9Q

  • VPC Service Controls とプライベート ゲートウェイを構成する

https://cloud.google.com/workstations/docs/configure-vpc-service-controls-private-gateway?hl=ja

Google Cloud Japan

Discussion