Create Cluster
gke.create_cluster
ActionGoogle Cloudconnection required
Calls GKE API v1 POST /projects/{p}/locations/{l}/clusters.
Create a GKE cluster. Returns the operation — the cluster builds asynchronously, so poll gke.get_operation if a later step needs it RUNNING. The fields below cover the common case; cluster_json takes a full Cluster resource and wins over all of them.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- Google Kubernetes Engine
- Secret shape
- {"client_id", "client_secret", "refresh_token"}
- Config it needs
- project_id, location
- Resolved by
- config.connection_id, else node.connection_id
Configuration
17 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
project_id GCP project id (overrides connection). | string | No | — | — | — |
location Zone (zonal cluster) or region (regional cluster). Overrides connection. | string | No | — | — | — |
cluster Name for the new cluster — lowercase letters, digits and hyphens. | string | Yes | — | — | — |
autopilot Create an Autopilot cluster. GKE then manages the nodes, and node_count, machine_type and disk_size_gb are ignored. | boolean | No | — | — | — |
node_count Nodes per zone in the default pool. Defaults to 3. Standard clusters only. | number | No | — | ≥ 0 | — |
machine_type Node machine type, e.g. e2-medium, n2-standard-4. Defaults to e2-medium. | string | No | — | — | — |
disk_size_gb Node boot-disk size in GB (minimum 10). Defaults to 100. | number | No | — | ≥ 1 | — |
network VPC network name. Defaults to the project's default network. | string | No | — | — | — |
subnetwork Subnetwork name in the cluster's region. Optional. | string | No | — | — | — |
node_locations Zones the nodes run in. Defaults to the cluster's own location. | array | No | — | array of string | — |
release_channel RAPID, REGULAR, STABLE or EXTENDED. Leave empty for no channel. | string | No | — | — | — |
initial_version Initial cluster version. Leave empty for the channel or location default. | string | No | — | — | — |
workload_identity Enable Workload Identity (pool <project>.svc.id.goog). Also turns on the cluster's OIDC issuer, which gke.get_jwks and gke.get_openid_config need. | boolean | No | — | — | — |
service_account Service-account email the nodes run as. Optional; the caller needs iam.serviceAccounts.actAs on it. | string | No | — | — | — |
oauth_scopes OAuth scopes for the node service account. Optional. | array | No | — | array of string | — |
labels Resource labels for the cluster. | object | No | — | — | — |
cluster_json A full Cluster resource. Wins over every field above — use it for anything they do not express (private clusters, Workload Identity, IP aliasing…). | object | No | — | — | — |
Output
One shape.
result
| Field | Type | Example |
|---|---|---|
ok | boolean | — |
cluster | string | — |
operation | string | — |
done | boolean | — |
status | string | — |
{
"cluster": "",
"done": false,
"ok": false,
"operation": "",
"status": ""
}See Create Cluster run in a workflow.
In a technical demo we add the Google Kubernetes Engine connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.