---
title: "POST /v1/{+parent}/vmwareClusters"
method: POST
path: "/v1/{+parent}/vmwareClusters"
tags: ["projects"]
---

# POST /v1/{+parent}/vmwareClusters

`POST /v1/{+parent}/vmwareClusters`

Creates a new VMware user cluster in a given project and location.

## Path parameters

- `parent` string, required

## Query parameters

- `allowPreflightFailure` boolean
- `skipValidations` string[]
- `validateOnly` boolean
- `vmwareClusterId` string

## Request body

- VmwareCluster — Resource that represents a VMware user cluster. ##
  - `description` string — A human readable description of this VMware user cluster.
  - `onPremVersion` string — Required. The Anthos clusters on the VMware version for your user cluster.
  - `storage` VmwareStorageConfig — Specifies vSphere CSI components deployment config in the VMware user cluster.
    - `vsphereCsiDisabled` boolean — Whether or not to deploy vSphere CSI components in the VMware user cluster. Enabled by default.
  - `uid` string — Output only. The unique identifier of the VMware user cluster.
  - `fleet` Fleet — Fleet related configuration. Fleets are a Google Cloud concept for logically organizing clusters, letting you use and manage multi-cluster capabilities and apply consistent policies across your systems. See [Anthos Fleets](`https://cloud.google.com/anthos/multicluster-management/fleets`) for more details on Anthos multi-cluster capabilities using Fleets. ##
    - `membership` string — Output only. The name of the managed fleet Membership resource associated to this cluster. Membership names are formatted as `projects//locations//memberships/`.
  - `enableAdvancedCluster` boolean — Enable advanced cluster.
  - `antiAffinityGroups` VmwareAAGConfig — Specifies anti affinity group config for the VMware user cluster.
    - `aagConfigDisabled` boolean — Spread nodes across at least three physical hosts (requires at least three hosts). Enabled by default.
  - `autoRepairConfig` VmwareAutoRepairConfig — Specifies config to enable/disable auto repair. The cluster-health-controller is deployed only if Enabled is true.
    - `enabled` boolean — Whether auto repair is enabled.
  - `upgradePolicy` VmwareClusterUpgradePolicy — VmwareClusterUpgradePolicy defines the cluster upgrade policy.
    - `controlPlaneOnly` boolean — Controls whether the upgrade applies to the control plane only.
  - `adminClusterMembership` string — Required. The admin cluster this VMware user cluster belongs to. This is the full resource name of the admin cluster's fleet membership. In the future, references to other resource types might be allowed if admin clusters are modeled as their own resources.
  - `reconciling` boolean — Output only. If set, there are currently changes in flight to the VMware user cluster.
  - `annotations` object — Annotations on the VMware user cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
  - `vmTrackingEnabled` boolean — Enable VM tracking.
  - `name` string — Immutable. The VMware user cluster resource name.
  - `vcenter` VmwareVCenterConfig — Represents configuration for the VMware VCenter for the user cluster.
    - `folder` string — The name of the vCenter folder for the user cluster.
    - `cluster` string — The name of the vCenter cluster for the user cluster.
    - `storagePolicyName` string — The name of the vCenter storage policy for the user cluster.
    - `resourcePool` string — The name of the vCenter resource pool for the user cluster.
    - `datastore` string — The name of the vCenter datastore for the user cluster.
    - `datacenter` string — The name of the vCenter datacenter for the user cluster.
    - `caCertData` string — Contains the vCenter CA certificate public key for SSL verification.
    - `address` string — Output only. The vCenter IP address.
  - `localName` string — Output only. The object name of the VMware OnPremUserCluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster name and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs.
  - `endpoint` string — Output only. The DNS name of VMware user cluster's API server.
  - `updateTime` string, google-datetime — Output only. The time at which VMware user cluster was last updated.
  - `networkConfig` VmwareNetworkConfig — Specifies network config for the VMware user cluster.
    - `controlPlaneV2Config` VmwareControlPlaneV2Config — Specifies control plane V2 config.
      - `controlPlaneIpBlock` VmwareIpBlock — Represents a collection of IP addresses to assign to nodes.
        - `netmask` string — The netmask used by the VMware user cluster.
        - `gateway` string — The network gateway used by the VMware user cluster.
        - `ips` VmwareHostIp[] — The node's network configurations used by the VMware user cluster.
          - `hostname` string — Hostname of the machine. VM's name will be used if this field is empty.
          - `ip` string — IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).
    - `vcenterNetwork` string — vcenter_network specifies vCenter network name. Inherited from the admin cluster.
    - `hostConfig` VmwareHostConfig — Represents the common parameters for all the hosts irrespective of their IP address.
      - `dnsServers` string[] — DNS servers.
      - `ntpServers` string[] — NTP servers.
      - `dnsSearchDomains` string[] — DNS search domains.
    - `serviceAddressCidrBlocks` string[] — Required. All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation.
    - `podAddressCidrBlocks` string[] — Required. All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. Only a single range is supported. This field cannot be changed after creation.
    - `dhcpIpConfig` VmwareDhcpIpConfig — Represents the network configuration required for the VMware user clusters with DHCP IP configurations.
      - `enabled` boolean — enabled is a flag to mark if DHCP IP allocation is used for VMware user clusters.
    - `staticIpConfig` VmwareStaticIpConfig — Represents the network configuration required for the VMware user clusters with Static IP configurations.
      - `ipBlocks` VmwareIpBlock[] — Represents the configuration values for static IP allocation to nodes.
        - `netmask` string — The netmask used by the VMware user cluster.
        - `gateway` string — The network gateway used by the VMware user cluster.
        - `ips` VmwareHostIp[] — The node's network configurations used by the VMware user cluster.
          - `hostname` string — Hostname of the machine. VM's name will be used if this field is empty.
          - `ip` string — IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).
  - `state` 'STATE_UNSPECIFIED' | 'PROVISIONING' | 'RUNNING' | 'RECONCILING' | 'STOPPING' | 'ERROR' | 'DEGRADED' — Output only. The current state of VMware user cluster.
  - `adminClusterName` string — Output only. The resource name of the VMware admin cluster hosting this user cluster.
  - `etag` string — This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.
  - `dataplaneV2` VmwareDataplaneV2Config — Contains configurations for Dataplane V2, which is optimized dataplane for Kubernetes networking. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dataplane-v2
    - `forwardMode` string — Configure ForwardMode for Dataplane v2.
    - `advancedNetworking` boolean — Enable advanced networking which requires dataplane_v2_enabled to be set true.
    - `windowsDataplaneV2Enabled` boolean — Enable Dataplane V2 for clusters with Windows nodes.
    - `dataplaneV2Enabled` boolean — Enables Dataplane V2.
  - `enableControlPlaneV2` boolean — Enable control plane V2. Default to false.
  - `binaryAuthorization` BinaryAuthorization — Configuration for Binary Authorization.
    - `evaluationMode` 'EVALUATION_MODE_UNSPECIFIED' | 'DISABLED' | 'PROJECT_SINGLETON_POLICY_ENFORCE' — Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.
  - `loadBalancer` VmwareLoadBalancerConfig — Specifies the locad balancer config for the VMware user cluster.
    - `f5Config` VmwareF5BigIpConfig — Represents configuration parameters for an F5 BIG-IP load balancer.
      - `partition` string — The preexisting partition to be used by the load balancer. This partition is usually created for the admin cluster for example: 'my-f5-admin-partition'.
      - `snatPool` string — The pool name. Only necessary, if using SNAT.
      - `address` string — The load balancer's IP address.
    - `vipConfig` VmwareVipConfig — Specifies the VIP config for the VMware user cluster load balancer.
      - `ingressVip` string — The VIP which you previously set aside for ingress traffic into this cluster.
      - `controlPlaneVip` string — The VIP which you previously set aside for the Kubernetes API of this cluster.
    - `metalLbConfig` VmwareMetalLbConfig — Represents configuration parameters for the MetalLB load balancer.
      - `addressPools` VmwareAddressPool[] — Required. AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools.
        - `pool` string — Required. The name of the address pool.
        - `addresses` string[] — Required. The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5).
        - `avoidBuggyIps` boolean — If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses.
        - `manualAssign` boolean — If true, prevent IP addresses from being automatically assigned.
    - `seesawConfig` VmwareSeesawConfig — VmwareSeesawConfig represents configuration parameters for an already existing Seesaw load balancer. IMPORTANT: Please note that the Anthos On-Prem API will not generate or update Seesaw configurations it can only bind a pre-existing configuration to a new user cluster. IMPORTANT: When attempting to create a user cluster with a pre-existing Seesaw load balancer you will need to follow some preparation steps before calling the 'CreateVmwareCluster' API method. First you will need to create the user cluster's namespace via kubectl. The namespace will need to use the following naming convention : -gke-onprem-mgmt or -gke-onprem-mgmt depending on whether you used the 'VmwareCluster.local_name' to disambiguate collisions; for more context see the documentation of 'VmwareCluster.local_name'. Once the namespace is created you will need to create a secret resource via kubectl. This secret will contain copies of your Seesaw credentials. The Secret must be called 'user-cluster-creds' and contain Seesaw's SSH and Cert credentials. The credentials must be keyed with the following names: 'seesaw-ssh-private-key', 'seesaw-ssh-public-key', 'seesaw-ssh-ca-key', 'seesaw-ssh-ca-cert'.
      - `ipBlocks` VmwareIpBlock[] — Required. The IP Blocks to be used by the Seesaw load balancer
        - `netmask` string — The netmask used by the VMware user cluster.
        - `gateway` string — The network gateway used by the VMware user cluster.
        - `ips` VmwareHostIp[] — The node's network configurations used by the VMware user cluster.
          - `hostname` string — Hostname of the machine. VM's name will be used if this field is empty.
          - `ip` string — IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24).
      - `masterIp` string — Required. MasterIP is the IP announced by the master of Seesaw group.
      - `enableHa` boolean — Enable two load balancer VMs to achieve a highly-available Seesaw load balancer.
      - `vms` string[] — Names of the VMs created for this Seesaw group.
      - `group` string — Required. In general the following format should be used for the Seesaw group name: seesaw-for-[cluster_name].
      - `stackdriverName` string — Name to be used by Stackdriver.
    - `manualLbConfig` VmwareManualLbConfig — Represents configuration parameters for an already existing manual load balancer. Given the nature of manual load balancers it is expected that said load balancer will be fully managed by users. IMPORTANT: Please note that the Anthos On-Prem API will not generate or update ManualLB configurations it can only bind a pre-existing configuration to a new VMware user cluster.
      - `ingressHttpNodePort` integer — NodePort for ingress service's http. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 32527).
      - `ingressHttpsNodePort` integer — NodePort for ingress service's https. The ingress service in the admin cluster is implemented as a Service of type NodePort (ex. 30139).
      - `controlPlaneNodePort` integer — NodePort for control plane service. The Kubernetes API server in the admin cluster is implemented as a Service of type NodePort (ex. 30968).
      - `konnectivityServerNodePort` integer — NodePort for konnectivity server service running as a sidecar in each kube-apiserver pod (ex. 30564).
  - `deleteTime` string, google-datetime — Output only. The time at which VMware user cluster was deleted.
  - `validationCheck` ValidationCheck — ValidationCheck represents the result of preflight check.
    - `status` ValidationCheckStatus — ValidationCheckStatus defines the detailed validation check status.
      - `result` ValidationCheckResult[] — Individual checks which failed as part of the Preflight check execution.
        - `details` string — Detailed failure information, which might be unformatted.
        - `category` string — The category of the validation.
        - `reason` string — A human-readable message of the check failure.
        - `description` string — The description of the validation check.
        - `state` 'STATE_UNKNOWN' | 'STATE_FAILURE' | 'STATE_SKIPPED' | 'STATE_FATAL' | 'STATE_WARNING' — The validation check state.
    - `option` 'OPTIONS_UNSPECIFIED' | 'SKIP_VALIDATION_CHECK_BLOCKING' | 'SKIP_VALIDATION_ALL' — Options used for the validation check
    - `scenario` 'SCENARIO_UNSPECIFIED' | 'CREATE' | 'UPDATE' — Output only. The scenario when the preflight checks were run.
  - `createTime` string, google-datetime — Output only. The time at which VMware user cluster was created.
  - `controlPlaneNode` VmwareControlPlaneNodeConfig — Specifies control plane node config for the VMware user cluster.
    - `replicas` string, int64 — The number of control plane nodes for this VMware user cluster. (default: 1 replica).
    - `cpus` string, int64 — The number of CPUs for each admin cluster node that serve as control planes for this VMware user cluster. (default: 4 CPUs)
    - `autoResizeConfig` VmwareAutoResizeConfig — Represents auto resizing configurations for the VMware user cluster.
      - `enabled` boolean — Whether to enable controle plane node auto resizing.
    - `memory` string, int64 — The megabytes of memory for each admin cluster node that serves as a control plane for this VMware user cluster (default: 8192 MB memory).
    - `vsphereConfig` VmwareControlPlaneVsphereConfig — Specifies control plane node config.
      - `datastore` string — The Vsphere datastore used by the control plane Node.
      - `storagePolicyName` string — The Vsphere storage policy used by the control plane Node.
  - `status` ResourceStatus — ResourceStatus describes why a cluster or node pool has a certain status. (e.g., ERROR or DEGRADED).
    - `errorMessage` string — Human-friendly representation of the error message from controller. The error message can be temporary as the controller controller creates a cluster or node pool. If the error message persists for a longer period of time, it can be used to surface error message to indicate real problems requiring user intervention.
    - `versions` Versions — Versions describes the mapping of a given version to the number of machines under this version.
      - `versions` Version[] — Shows the mapping of a given version to the number of machines under this version.
        - `version` string — Resource version.
        - `count` string, int64 — Number of machines under the above version.
    - `conditions` ResourceCondition[] — ResourceCondition provide a standard mechanism for higher-level status reporting from controller.
      - `type` string — Type of the condition. (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)
      - `message` string — Human-readable message indicating details about last transition.
      - `lastTransitionTime` string, google-datetime — Last time the condition transit from one status to another.
      - `reason` string — Machine-readable message indicating details about last transition.
      - `state` 'STATE_UNSPECIFIED' | 'STATE_TRUE' | 'STATE_FALSE' | 'STATE_UNKNOWN' — state of the condition.
    - `version` string — Reflect current version of the resource.
  - `authorization` Authorization — Authorization defines the On-Prem cluster authorization configuration to bootstrap onto the admin cluster.
    - `adminUsers` ClusterUser[] — For VMware and bare metal user clusters, users will be granted the cluster-admin role on the cluster, which provides full administrative access to the cluster. For bare metal admin clusters, users will be granted the cluster-view role, which limits users to read-only access.
      - `username` string — Required. The name of the user, e.g. `my-gcp-id@gmail.com`.
  - `disableBundledIngress` boolean — Disable bundled ingress.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/gkeonprem.md) · [All operations](https://skmtc.net/google/apis/gkeonprem/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/gkeonprem/versions/aed3768b9183/schema)
