開発環境をカスタマイズする

このページでは、VM タイプ、ホームディスク サイズ、ベースコンテナ イメージなど、Cloud Workstations 環境をカスタマイズできるワークステーション構成パラメータについて説明します。API では、これらのワークステーション構成パラメータをまとめて WorkstationConfig と呼びます。

これらのワークステーション構成パラメータを使用する前に、次の内容を理解しておいてください。


REST リソース: projects.locations.workstationClusters.workstationConfigs

リソース: WorkstationConfig

Cloud Workstations API のワークステーション構成リソース。

ワークステーション構成は、ワークステーションのテンプレートとして機能します。ワークステーション構成は、ワークステーション仮想マシン(VM)インスタンス タイプ、永続ストレージ、コンテナ イメージ定義環境、使用する IDE またはコードエディタなどの詳細を定義します。管理者とプラットフォーム チームは、Identity and Access Management(IAM)ルールを使用して、チームや個々のデベロッパーにアクセス権を付与することもできます。

JSON 表現

{
  "name": string,
  "displayName": string,
  "uid": string,
  "reconciling": boolean,
  "annotations": {
    string: string,
    ...
  },
  "labels": {
    string: string,
    ...
  },
  "createTime": string,
  "updateTime": string,
  "deleteTime": string,
  "etag": string,
  "idleTimeout": string,
  "runningTimeout": string,
  "host": {
    object (Host)
  },
  "persistentDirectories": [
    {
      object (PersistentDirectory)
    }
  ],
  "ephemeralDirectories": [
    {
      object (EphemeralDirectory)
    }
  ],
  "container": {
    object (Container)
  },
  "encryptionKey": {
    object (CustomerEncryptionKey)
  },
  "readinessChecks": [
    {
      object (ReadinessCheck)
    }
  ],
  "replicaZones": [
    string
  ],
  "degraded": boolean,
  "conditions": [
    {
      object (Status)
    }
  ],
  "enableAuditAgent": boolean,
  "disableTcpConnections": boolean
}
フィールド
name

string

ID。このワークステーション構成のフルネーム。

displayName

string

省略できます。ワークステーション構成に使用する人が読める形式の名前。

uid

string

出力のみ。このワークステーション構成に対してシステムによって割り当てられる一意の識別子。

reconciling

boolean

出力のみ。このワークステーション構成が、意図した状態と一致するように現在更新されているかどうかを示します。

annotations

map (key: string, value: string)

省略できます。クライアント指定のアノテーション。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

labels

map (key: string, value: string)

省略できます。ワークステーション構成に適用され、基盤となる Compute Engine リソースにも伝播されるラベル

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

createTime

string (Timestamp format)

出力のみ。このワークステーション構成が作成された時刻。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

updateTime

string (Timestamp format)

出力のみ。このワークステーション構成が最後に更新された時刻。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

deleteTime

string (Timestamp format)

出力のみ。このワークステーション構成が削除(復元可能)された時刻。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

etag

string

省略できます。サーバーによって計算されたチェックサム。続行するにあたってクライアントで最新の値が設定されていることを確認するために、更新リクエストと削除リクエストで送信される場合があります。

idleTimeout

string (Duration format)

省略できます。ワークステーションが最後にユーザー トラフィックを受信した後に自動的にワークステーションを停止するまで待機する秒数。

"0s" は、この構成で作成された Cloud Workstations VM が、アイドル状態でタイムアウトしないことを示します。s によって終了される期間を秒単位で指定します。例: "7200s"(2 時間)。デフォルトは "1200s"(20 分)です。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

runningTimeout

string (Duration format)

省略できます。ワークステーションが自動的にシャットダウンされるまでの秒数。コスト削減のためにワークステーションを毎日シャットダウンして、再起動時にセキュリティ アップデートを適用することをおすすめします。idleTimeout フィールドと runningTimeout フィールドは互いに独立しています。runningTimeout フィールドは、VM がアイドル状態かどうかにかかわらず、指定した時間が経過すると VM をシャットダウンします。

s によって終了される期間を秒単位で指定します。例: "54000s"(15 時間)。デフォルトは "43200s"(12 時間)です。値 "0s" は、この構成を使用するワークステーションがタイムアウトしないことを示します。encryptionKey が設定されている場合は、"0s" より大きく "86400s"(24 時間)未満にする必要があります。

警告: 値 "0s" は、この構成で作成された Cloud Workstations VM に最大実行時間がないことを示します。費用が発生し、セキュリティの更新が取得されないため、この方法はおすすめできません。

s」で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

host

object (Host)

省略できます。ワークステーションのランタイム ホスト。

persistentDirectories[]

object (PersistentDirectory)

省略できます。ワークステーション セッション間で維持されるディレクトリ。

ephemeralDirectories[]

object (EphemeralDirectory)

省略可。ワークステーション セッションをまたいで維持されないエフェメラル ディレクトリ。

container

object (Container)

省略可。このワークステーション構成を使用して、各ワークステーションの起動時に実行されるコンテナ。

encryptionKey

object (CustomerEncryptionKey)

不変。顧客管理の暗号鍵(CMEK)を使用して、このワークステーション構成のリソースを暗号化します。

指定した場合、Compute Engine インスタンスのブートディスクと永続ディスクは、この暗号鍵を使用して暗号化されます。このフィールドが設定されていない場合、生成された鍵を使用してディスクが暗号化されます。顧客管理の暗号鍵は、ディスクのメタデータを保護しません。

顧客管理の暗号鍵をローテーションする場合、ワークステーション インスタンスが停止すると、システムは新しいバージョンの鍵で永続ディスクの再作成を試みます。永続ディスクが再作成されるまでは、必ず古いバージョンの鍵を使用してください。そうしないと、永続ディスクのデータが失われる可能性があります。

暗号鍵が取り消されると、ワークステーション セッションは 7 時間以内に自動的に停止します。

ワークステーション構成の作成後は変更できません。

readinessChecks[]

object (ReadinessCheck)

省略できます。このワークステーション構成を使用してワークステーションを起動する際に行う準備チェック。指定したすべての準備チェックで 200 ステータス コードが返された後にのみ、ワークステーションを実行中としてマークします。

replicaZones[]

string

省略できます。不変。リージョン内の VM リソースとディスク リソースの複製に使用するゾーンを指定します。設定する場合は、ワークステーション クラスタのリージョン内に 2 つのゾーンを指定する必要があります(例: ['us-central1-a', 'us-central1-f'])。このフィールドが空の場合、リージョン内の 2 つのデフォルト ゾーンが使用されます。

ワークステーション構成の作成後は変更できません。

degraded

boolean

出力のみ。このリソースが劣化しているかどうか。この場合、完全な機能を復元するにはユーザーの操作が必要になることがあります。conditions フィールドもご覧ください。

conditions[]

object (Status)

出力のみ。現在のリソースの状態を表すステータス条件。

enableAuditAgent

boolean

省略できます。ワークステーションで Linux auditd ロギングを有効にするかどうか。有効にする場合は、プロジェクトに対して logging.buckets.write 権限を持つサービス アカウントも指定する必要があります。オペレーティング システムの監査ロギングは Cloud Audit Logs とは異なります。

disableTcpConnections

boolean

省略できます。ワークステーションのプレーン TCP 接続のサポートを無効にします。デフォルトでは、サービスは WebSocket リレーを介して TCP 接続をサポートしています。このオプションを true に設定すると、そのリレーが無効になり、SSH などのプレーン TCP 接続を必要とするサービスを使用できなくなります。有効にした場合、すべての通信が HTTPS または WSS を介して行われる必要があります。

ホスト

ワークステーションのランタイム ホスト。

JSON 表現

{

  // Union field config can be only one of the following:
  "gceInstance": {
    object (GceInstance)
  }
  // End of list of possible types for union field config.
}
フィールド
共用体フィールド config。ワークステーションのランタイムに使用されるホストのタイプ。config は次のいずれかになります。
gceInstance

object (GceInstance)

Compute Engine インスタンスをホストとして指定します。

GceInstance

Compute Engine インスタンスを使用するランタイム。

JSON 表現

{
  "machineType": string,
  "serviceAccount": string,
  "serviceAccountScopes": [
    string
  ],
  "tags": [
    string
  ],
  "poolSize": integer,
  "pooledInstances": integer,
  "disablePublicIpAddresses": boolean,
  "enableNestedVirtualization": boolean,
  "shieldedInstanceConfig": {
    object (GceShieldedInstanceConfig)
  },
  "confidentialInstanceConfig": {
    object (GceConfidentialInstanceConfig)
  },
  "bootDiskSizeGb": integer,
  "accelerators": [
    {
      object (Accelerator)
    }
  ],
  "disableSsh": boolean
}
フィールド
machineType

string

省略できます。VM インスタンスに使用するマシンのタイプ(例: "e2-standard-4")。Cloud Workstations がサポートするマシンタイプの詳細については、使用可能なマシンタイプのリストをご覧ください。

serviceAccount

string

省略できます。この構成で作成した Cloud Workstations VM 用のサービス アカウントのメールアドレス。指定する場合は、サービス アカウントが Cloud Logging にログを書き込むことができるように、プロジェクトに対する logging.logEntries.create および monitoring.timeSeries.create の権限があることを確認してください。カスタム コンテナ イメージを使用する場合、指定したイメージを pull するには、サービス アカウントに Artifact Registry 読み取りの権限が必要です。

管理者として、基盤となる VM に ssh を実行できるようにするには、この値を iam.serviceAccounts.actAs 権限を持つサービス アカウントに設定する必要があります。逆に、誰も基盤となる VM に ssh を実行できないようにするには、誰もその権限を持たないサービス アカウントを使用します。

設定されていない場合、VM は Cloud Workstations サービスで提供されているサービス アカウントを使用して実行されます。また、イメージが一般公開されている必要があります。

serviceAccountScopes[]

string

省略できます。serviceAccount に付与するスコープ。指定した場合、この構成のワークステーション ユーザーにはサービス アカウントに対する iam.serviceAccounts.actAs が必要です。

tags[]

string

省略できます。ワークステーションをサポートする Compute Engine VM に追加するネットワーク タグ。このオプションは、このの構成で作成された VM にネットワーク タグを適用します。これらのネットワーク タグを使用すると、ファイアウォール ルールを作成できます。

poolSize

integer

省略できます。新しいユーザーのために新しいワークステーションを迅速に起動できるように、システムがアイドル状態のままにする必要がある VM の数。API のデフォルトは 0 です。

pooledInstances

integer

出力のみ。ワークステーションの起動を高速化するために、プール内で現在利用可能なインスタンスの数。

disablePublicIpAddresses

boolean

省略できます。true に設定すると、VM のパブリック IP アドレスが無効になります。パブリック IP アドレスを無効にする場合は、ネットワークで限定公開の Google アクセスまたは Cloud NAT を設定する必要があります。限定公開の Google アクセスを使用し、Container Registry と Artifact Registry に private.googleapis.com または restricted.googleapis.com を使用している場合、ドメイン *.gcr.io、ドメイン *.pkg.dev に DNS レコードに設定します。デフォルトは false です(VM にはパブリック IP アドレスがあります)。

enableNestedVirtualization

boolean

省略できます。ネストされた仮想化を、このワークステーション構成を使用して作成された Cloud Workstations VM で有効にするかどうか。

ネストされた仮想化では、ワークステーション内で仮想マシン(VM)インスタンスを実行できます。ネストされた仮想化を有効にする前に、次の重要な考慮事項を考慮してください。Cloud Workstations インスタンスには、Compute Engine インスタンスと同じ制限に従います。

  • 組織のポリシー: VM のネストされた仮想化を無効にする制約が組織ポリシーで適用されている場合、プロジェクト、フォルダまたは組織でネストされた VM の作成が制限される場合があります。詳細については、Compute Engine セクションのネストされた仮想化が許可されているかどうかを確認するをご覧ください。
  • パフォーマンス: ネストされた VM では、CPU バウンドのワークロードにおけるパフォーマンスの 10% 以上の低下と、入力/出力バウンドのワークロードにおけるパフォーマンスの 10% 以上の低下が発生する可能性があります。
  • マシンタイプ: ネストされた仮想化は、N1 または N2 マシンシリーズで machineType を指定するワークステーションの構成でのみ有効にできます。
  • GPU: アクセラレータがあるワークステーション構成では、ネストされた仮想化が有効になっていない場合があります。
  • オペレーティング システム: Container-Optimized OS はネストされた仮想化はサポートしていないため、ネストされた仮想化が有効になっている場合、基盤となる Compute Engine VM インスタンスは Ubuntu LTS イメージから起動します。
shieldedInstanceConfig

object (GceShieldedInstanceConfig)

省略可。一連の Compute Engine のシールドされたインスタンス オプション。

confidentialInstanceConfig

object (GceConfidentialInstanceConfig)

省略できます。一連の Compute Engine Confidential VM のインスタンス オプション。

bootDiskSizeGb

integer

省略できます。VM のブートディスクのサイズ(GB)ブートディスクの最小サイズは 30 GB です。デフォルトは 50 GB です。

accelerators[]

object (Accelerator)

省略可。インスタンスに接続されているアクセラレータ カードのタイプと数のリスト。

disableSsh

boolean

省略可。VM への SSH アクセスを無効にするかどうか。

GceShieldedInstanceConfig

一連の Compute Engine のシールドされたインスタンス オプション。

JSON 表現

{
  "enableSecureBoot": boolean,
  "enableVtpm": boolean,
  "enableIntegrityMonitoring": boolean
}
フィールド
enableSecureBoot

boolean

省略できます。インスタンスでセキュアブートが有効になっているかどうか。

enableVtpm

boolean

省略できます。インスタンスで vTPM が有効になっているかどうか。

enableIntegrityMonitoring

boolean

省略できます。インスタンスで整合性モニタリングが有効になっているかどうか。

GceConfidentialInstanceConfig

一連の Compute Engine Confidential VM のインスタンス オプション。

JSON 表現

{
  "enableConfidentialCompute": boolean
}
フィールド
enableConfidentialCompute

boolean

省略できます。インスタンスで Confidential Compute が有効になっているかどうか。

アクセラレータ

インスタンスに接続されたアクセラレータ カード。

JSON 表現

{
  "type": string,
  "count": integer
}
フィールド
type

string

省略可。インスタンスに接続するアクセラレータ リソースのタイプ(例: "nvidia-tesla-p100")。

count

integer

省略可。インスタンスに対して公開されているアクセラレータ カードの数。

PersistentDirectory

ワークステーション セッション間で維持するディレクトリ。

JSON 表現

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GceRegionalPersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
フィールド
mountPath

string

省略できます。実行中のワークステーション内のこのディレクトリのロケーション。

共用体フィールド directory_type。永続ディレクトリの実装方法directory_type は次のいずれかになります。
gcePd

object (GceRegionalPersistentDisk)

Compute Engine 永続ディスクでバックアップされる PersistentDirectory。

GceRegionalPersistentDisk

Compute Engine リージョン永続ディスクでバックアップされる Persistent Directory。persistentDirectories フィールドは繰り返されていますが、含まれるエントリは 1 つだけです。これにより、セッションの開始時に /home でワークステーション VM にマウントされ、セッションが終了すると切断される永続ディスクが作成されます。このフィールドが空の場合、この構成で作成されたワークステーションには永続ホーム ディレクトリがありません。

JSON 表現

{
  "sizeGb": integer,
  "fsType": string,
  "diskType": string,
  "sourceSnapshot": string,
  "reclaimPolicy": enum (ReclaimPolicy)
}
フィールド
sizeGb

integer

省略できます。この構成で作成された各ワークステーションの永続的なホーム ディレクトリの GB 容量。sourceSnapshot が設定されている場合は、空にする必要があります。

有効な値は、1050100200500 または 1000 です。デフォルトは 200 です。200 GB 未満の場合、diskType"pd-balanced" または "pd-ssd" にする必要があります。

fsType

string

省略できます。ディスクのフォーマットが必要なファイル システムのタイプ。ワークステーション イメージは、このファイル システム タイプをサポートしている必要があります。sourceSnapshot が設定されている場合は、空にする必要があります。デフォルトは "ext4" です。

diskType

string

省略できます。ホーム ディレクトリの永続ディスクのタイプを指定します。デフォルトは "pd-standard" です。

sourceSnapshot

string

省略できます。ディスクのソースとして使用するスナップショットの名前。設定する場合は、sizeGbfsType を空にする必要があります。

reclaimPolicy

enum (ReclaimPolicy)

省略できます。ワークステーションの削除時に永続ディスクを削除するかどうか。有効な値は DELETERETAIN です。デフォルトは DELETE です。

ReclaimPolicy

ワークステーションが削除された後のディスクの動作を表す値。

列挙型
RECLAIM_POLICY_UNSPECIFIED 使用禁止。
DELETE ワークステーションを削除するときに永続ディスクを削除します。
RETAIN ワークステーションを削除するときに永続ディスクを保持します。管理者が手動でディスクを削除する必要があります。

EphemeralDirectory

ワークステーション セッションをまたいで維持されないエフェメラル ディレクトリ。ワークステーションの起動オペレーションごとに新しく作成されます。

JSON 表現

{
  "mountPath": string,

  // Union field directory_type can be only one of the following:
  "gcePd": {
    object (GcePersistentDisk)
  }
  // End of list of possible types for union field directory_type.
}
フィールド
mountPath

string

必須。実行中のワークステーション内のこのディレクトリのロケーション。

共用体フィールド directory_type。エフェメラル ディレクトリをどう実装するか。directory_type は次のいずれかになります。
gcePd

object (GcePersistentDisk)

Compute Engine の永続ディスクに基づいた EphemeralDirectory。

GcePersistentDisk

EphemeralDirectory は Compute Engine の永続ディスクに基づきます。

JSON 表現

{
  "diskType": string,
  "sourceSnapshot": string,
  "sourceImage": string,
  "readOnly": boolean
}
フィールド
diskType

string

省略可。使用するディスクのタイプ。デフォルトは "pd-standard" です。

sourceSnapshot

string

省略できます。ディスクのソースとして使用するスナップショットの名前。sourceImage が設定されている場合は、空にする必要があります。readOnly が false の場合は、空にする必要があります。sourceSnapshot を更新すると、ワークステーションが再起動された後にエフェメラル ディレクトリのコンテンツが更新されます。このフィールドは変更可能です。

sourceImage

string

省略可。ディスクのソースとして使用するディスク イメージの名前。sourceSnapshot が設定されている場合は、空にする必要があります。sourceImage を更新すると、ワークステーションが再起動された後にエフェメラル ディレクトリのコンテンツが更新されます。このフィールドは変更可能です。

readOnly

boolean

省略可。ディスクが読み取り専用かどうか。true の場合、ディスクは複数の VM で共有される可能性があり、sourceSnapshot を設定する必要があります。

Container

Docker コンテナ。

JSON 表現

{
  "image": string,
  "command": [
    string
  ],
  "args": [
    string
  ],
  "env": {
    string: string,
    ...
  },
  "workingDir": string,
  "runAsUser": integer
}
フィールド
image

string

省略できます。カスタム環境を定義する Docker コンテナ イメージ。

Cloud Workstations には事前構成されたイメージが数多く用意されていますが、独自のカスタム コンテナ イメージを作成することもできます。非公開イメージを使用する場合は、ワークステーション構成で host.gceInstance.serviceAccount フィールドを指定する必要があります。カスタム コンテナ イメージを使用する場合、指定したイメージを pull するためにサービス アカウントに Artifact Registry 読み取りの権限が必要です。それ以外の場合は、イメージが一般公開されている必要があります。

command[]

string

省略できます。設定されている場合は、イメージで指定されたデフォルトの ENTRYPOINT がオーバーライドされます。

args[]

string

省略できます。エントリポイントに渡される引数。

env

map (key: string, value: string)

省略できます。コンテナのエントリポイントに渡される環境変数。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

workingDir

string

省略できます。設定されている場合は、イメージで指定されたデフォルトの DIR がオーバーライドされます。

runAsUser

integer

省略できます。設定されている場合は、イメージで指定された USER を、指定された uid でオーバーライドします。

CustomerEncryptionKey

関連するワークステーション構成の Compute Engine リソースの顧客管理の暗号鍵(CMEK)。Cloud KMS 暗号鍵の名前とデフォルトのサービス アカウントを指定します。別のサービス アカウントを使用し、Cloud KMS のベスト プラクティスに従うことをおすすめします。

JSON 表現

{
  "kmsKey": string,
  "kmsKeyServiceAccount": string
}
フィールド
kmsKey

string

不変。Google Cloud KMS 暗号鍵の名前。例: "projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"鍵はワークステーション構成と同じリージョンに存在する必要があります。

kmsKeyServiceAccount

string

不変。指定した KMS 鍵で使用するサービス アカウント。別のサービス アカウントを使用し、KMS のベスト プラクティスに従うことをおすすめします。詳細については、職掌分散および gcloud kms keys add-iam-policy-binding --member をご覧ください。

ReadinessCheck

ワークステーションで行う準備チェック。

JSON 表現

{
  "path": string,
  "port": integer
}
フィールド
path

string

省略できます。リクエストを送信するパス。

port

integer

省略できます。リクエストを送信するポート。

方法

create

新しいワークステーション構成を作成します。

delete

指定したワークステーション構成を削除します。

get

リクエストされたワークステーション構成を返します。

getIamPolicy

リソースのアクセス制御ポリシーを取得します。

list

指定されたクラスタ内のすべてのワークステーション構成を返します。

listUsable

呼び出し元が「workstations.workstation.create」権限を持っている、指定されたクラスタ内のすべてのワークステーション構成を返します。

patch

既存のワークステーション構成を更新します。

setIamPolicy

指定したリソースにアクセス制御ポリシーを設定します。

testIamPermissions

指定されたリソースに対して呼び出し元が持っている権限を返します。