0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CLIで構築するCloud Workstations

Posted at

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
作成には時間がかかるので気長に

作成時点から課金が発生するため検証時にはこまめに削除すること。createdeleteに変えると指定のクラスタを、紐づいているワークステーション構成・ワークステーションごと削除できる

ワークステーション構成(config)

個々の開発環境(ワークステーション)の仕様定義。開発チーム全員に配るPCを想定し、マシンタイプやイメージを指定

gcloud workstations configs create my-config
	--cluster=my-cluster
	--region=asia-northeast1
	--machine-type=e2-standard-4
    --container-predefined-image=codeoss

上記のmachine-typecontainer-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

その後はcreatestart/stopに置き換えて起動・停止。起動後はさらにdescribeに置き換えてホスト名の情報を確認。https://80-{HOST_NAME}/からCode-OSS画面にアクセスできる

Q. 開発環境のデータはどこに保持される?

各ワークステーションの/homeディレクトリ……としてマウントされた永続ディスク(Persistent Disk)に保持される。home内のファイルはワークステーションの停止後も保管されるが、削除されると一緒に削除される(ワークステーション構成の設定で残るよう変更も可)

マウント後、標準ではsudo権限をもつユーザuser(/home/user)を作成する。その後の処理をカスタムイメージに仕込みたい場合は、Dockerfile内ではなくエントリーポイントとして動作させる。その書き方については別記事を予定

Q. Webアプリのデバッグや公開はどうなる?

Code-OSSにビルドインされたGCW専用の拡張機能がよしなにやってくれる……

gcw_port_preview.png

具体的には、ポート別にプロセスの動作を検知し、アクセス権を保ったまま見られる状態にしてくれる様子。ワークステーションで開発したアプリを公開したい場合には別のGCE等にデプロイするように

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?