Q. GCW(Google Cloud Workstations)とは?
- Google Cloud上で提供される開発環境サービス
- 開発者にとっては自身のPCで面倒なセットアップを行う手間なく、ブラウザを開くだけで開発環境(IDE)にアクセスできる
- 管理者にとっては、プロジェクトに合わせたツールや設定を含むコンテナイメージを選択(あるいは準備)することで、チーム全員に標準化された安全な開発環境を簡単に提供できる
Q. GCWを構築するには?
基本的にはWorkstations管理者が「クラスタ」と「ワークステーション構成」を作成し、案内を受けた開発者それぞれが「ワークステーション」を作成し起動するという手順になる。いずれもCloudコンソール上のGUIでぽちぽち設定もできるが、ここではgcloud CLI(またはCloudShell)でひとつずつ作成してみる
事前準備
まずはWorkstations APIを有効化
gcloud services enable workstations.googleapis.com
次に初期化とログインを実行
gcloud init
gcloud auth login
この2つは同じプロジェクトに属するGCEから操作する場合やCloudShellの場合には通常不要だが、別のプロジェクトを指定する場合には下記のようにセットする
gcloud config set project {PROJECT_ID}
{PROJECT_ID}
をあとから確認したい場合はgcloud config get-value project
クラスタ(cluster)
ワークステーション全体の管理基盤。必須オプションはリージョンのみなのでひとまず作成
gcloud workstations clusters create my-cluster
--region=asia-northeast1
VPCネットワーク設定等を細かい設定はgcloud workstations clusters create。
作成には時間がかかるので気長に
作成時点から課金が発生するため検証時にはこまめに削除すること。create
をdelete
に変えると指定のクラスタを、紐づいているワークステーション構成・ワークステーションごと削除できる
ワークステーション構成(config)
個々の開発環境(ワークステーション)の仕様定義。開発チーム全員に配るPCを想定し、マシンタイプやイメージを指定
gcloud workstations configs create my-config
--cluster=my-cluster
--region=asia-northeast1
--machine-type=e2-standard-4
--container-predefined-image=codeoss
上記のmachine-type
、container-predefined-image
はそのままでよいなら省略可
公式の事前構築済みイメージはいくつか選択できるが、標準の「codeoss」はCode-OSSほか主要な言語(Java, Python, NodeJS, Go、Ruby等)やツール(Git、Docker Compose等)が最初から利用でき、基本的な開発にはこれで十分。ここからお決まりのフレームワーク、例えばGradleも揃えておきたいといったケース等では、Dockerfileを使った独自のカスタムイメージを準備する(説明は別記事を予定)
そのほか、自動停止時間や永続ディスク(後述)等の細かい設定はgcloud workstations configs create
ここでIAMポリシー、つまり開発者のアクセス権を設定しておく
gcloud workstations configs add-iam-policy-binding my-config
--cluster=my-cluster
--region=asia-northeast1
--member="{MEMBER}"
--role="roles/workstations.user"
{MEMBER}
には「user:{メールアドレス}」あるいは「group:{メールアドレス}」のように入れること。詳細はgcloud workstations set-iam-policy
ワークステーション(workstation)
開発者が実際にコーディングを行う個別の開発環境(実態はGCEのUbuntu仮想マシン)。ここからは開発者それぞれがCloudコンソールを触るか、以下コマンドを実行
gcloud workstations create my-workstation
--cluster=my-cluster
--config=my-config
--region=asia-northeast1
細かい設定はgcloud workstations create
その後はcreate
をstart
/stop
に置き換えて起動・停止。起動後はさらにdescribe
に置き換えてホスト名の情報を確認。https://80-{HOST_NAME}/
からCode-OSS画面にアクセスできる
Q. 開発環境のデータはどこに保持される?
各ワークステーションの/homeディレクトリ……としてマウントされた永続ディスク(Persistent Disk)に保持される。home内のファイルはワークステーションの停止後も保管されるが、削除されると一緒に削除される(ワークステーション構成の設定で残るよう変更も可)
マウント後、標準ではsudo権限をもつユーザuser(/home/user
)を作成する。その後の処理をカスタムイメージに仕込みたい場合は、Dockerfile内ではなくエントリーポイントとして動作させる。その書き方については別記事を予定
Q. Webアプリのデバッグや公開はどうなる?
Code-OSSにビルドインされたGCW専用の拡張機能がよしなにやってくれる……
具体的には、ポート別にプロセスの動作を検知し、アクセス権を保ったまま見られる状態にしてくれる様子。ワークステーションで開発したアプリを公開したい場合には別のGCE等にデプロイするように