REST Resource: projects.locations.bareMetalClusters

Resource: BareMetalCluster

Resource that represents a bare metal user cluster.

JSON representation
{
  "name": string,
  "adminClusterMembership": string,
  "description": string,
  "bareMetalVersion": string,
  "uid": string,
  "state": enum (State),
  "endpoint": string,
  "reconciling": boolean,
  "createTime": string,
  "updateTime": string,
  "deleteTime": string,
  "localName": string,
  "etag": string,
  "annotations": {
    string: string,
    ...
  },
  "networkConfig": {
    object (BareMetalNetworkConfig)
  },
  "controlPlane": {
    object (BareMetalControlPlaneConfig)
  },
  "loadBalancer": {
    object (BareMetalLoadBalancerConfig)
  },
  "storage": {
    object (BareMetalStorageConfig)
  },
  "proxy": {
    object (BareMetalProxyConfig)
  },
  "clusterOperations": {
    object (BareMetalClusterOperationsConfig)
  },
  "maintenanceConfig": {
    object (BareMetalMaintenanceConfig)
  },
  "nodeConfig": {
    object (BareMetalWorkloadNodeConfig)
  },
  "fleet": {
    object (Fleet)
  },
  "status": {
    object (ResourceStatus)
  },
  "validationCheck": {
    object (ValidationCheck)
  },
  "securityConfig": {
    object (BareMetalSecurityConfig)
  },
  "maintenanceStatus": {
    object (BareMetalMaintenanceStatus)
  },
  "adminClusterName": string,
  "nodeAccessConfig": {
    object (BareMetalNodeAccessConfig)
  },
  "osEnvironmentConfig": {
    object (BareMetalOsEnvironmentConfig)
  },
  "binaryAuthorization": {
    object (BinaryAuthorization)
  },
  "upgradePolicy": {
    object (BareMetalClusterUpgradePolicy)
  }
}
Fields
name

string

Immutable. The bare metal user cluster resource name.

adminClusterMembership

string

Required. The admin cluster this bare metal user cluster belongs to. This is the full resource name of the admin cluster's fleet membership.

description

string

A human readable description of this bare metal user cluster.

bareMetalVersion

string

Required. The Anthos clusters on bare metal version for your user cluster.

uid

string

Output only. The unique identifier of the bare metal user cluster.

state

enum (State)

Output only. The current state of the bare metal user cluster.

endpoint

string

Output only. The IP address of the bare metal user cluster's API server.

reconciling

boolean

Output only. If set, there are currently changes in flight to the bare metal user cluster.

createTime

string (Timestamp format)

Output only. The time when the bare metal user cluster was created.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

updateTime

string (Timestamp format)

Output only. The time when the bare metal user cluster was last updated.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

deleteTime

string (Timestamp format)

Output only. The time when the bare metal user cluster was deleted. If the resource is not deleted, this must be empty

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

localName

string

Output only. The object name of the bare metal user cluster 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 name 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.

When the local name and cluster name differ, the local name is used in the admin cluster controller logs. You use the cluster name when accessing the cluster using bmctl and kubectl.

etag

string

Output only. 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.

annotations

map (key: string, value: string)

Annotations on the bare metal 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.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

networkConfig

object (BareMetalNetworkConfig)

Required. Network configuration.

controlPlane

object (BareMetalControlPlaneConfig)

Required. Control plane configuration.

loadBalancer

object (BareMetalLoadBalancerConfig)

Required. Load balancer configuration.

storage

object (BareMetalStorageConfig)

Required. Storage configuration.

proxy

object (BareMetalProxyConfig)

Proxy configuration.

clusterOperations

object (BareMetalClusterOperationsConfig)

Cluster operations configuration.

maintenanceConfig

object (BareMetalMaintenanceConfig)

Maintenance configuration.

nodeConfig

object (BareMetalWorkloadNodeConfig)

Workload node configuration.

fleet

object (Fleet)

Output only. Fleet configuration for the cluster.

status

object (ResourceStatus)

Output only. Detailed cluster status.

validationCheck

object (ValidationCheck)

Output only. The result of the preflight check.

securityConfig

object (BareMetalSecurityConfig)

Security related setting configuration.

maintenanceStatus

object (BareMetalMaintenanceStatus)

Output only. Status of on-going maintenance tasks.

adminClusterName

string

Output only. The resource name of the bare metal admin cluster managing this user cluster.

nodeAccessConfig

object (BareMetalNodeAccessConfig)

Node access related configurations.

osEnvironmentConfig

object (BareMetalOsEnvironmentConfig)

OS environment related configurations.

binaryAuthorization

object (BinaryAuthorization)

Binary Authorization related configurations.

upgradePolicy

object (BareMetalClusterUpgradePolicy)

The cluster upgrade policy.

State

The lifecycle state of the bare metal user cluster.

Enums
STATE_UNSPECIFIED Not set.
PROVISIONING The PROVISIONING state indicates the cluster is being created.
RUNNING The RUNNING state indicates the cluster has been created and is fully usable.
RECONCILING The RECONCILING state indicates that the cluster is being updated. It remains available, but potentially with degraded performance.
STOPPING The STOPPING state indicates the cluster is being deleted.
ERROR The ERROR state indicates the cluster is in a broken unrecoverable state.
DEGRADED The DEGRADED state indicates the cluster requires user action to restore full functionality.

BareMetalNetworkConfig

Specifies the cluster network configuration.

JSON representation
{
  "advancedNetworking": boolean,
  "multipleNetworkInterfacesConfig": {
    object (BareMetalMultipleNetworkInterfacesConfig)
  },
  "srIovConfig": {
    object (BareMetalSrIovConfig)
  },

  // Union field cluster_cidr_configuration can be only one of the following:
  "islandModeCidr": {
    object (BareMetalIslandModeCidrConfig)
  }
  // End of list of possible types for union field cluster_cidr_configuration.
}
Fields
advancedNetworking

boolean

Enables the use of advanced Anthos networking features, such as Bundled Load Balancing with BGP or the egress NAT gateway. Setting configuration for advanced networking features will automatically set this flag.

multipleNetworkInterfacesConfig

object (BareMetalMultipleNetworkInterfacesConfig)

Configuration for multiple network interfaces.

srIovConfig

object (BareMetalSrIovConfig)

Configuration for SR-IOV.

Union field cluster_cidr_configuration. The CIDR configuration to be used in the bare metal user cluster. cluster_cidr_configuration can be only one of the following:
islandModeCidr

object (BareMetalIslandModeCidrConfig)

Configuration for island mode CIDR. In an island-mode network, nodes have unique IP addresses, but pods don't have unique addresses across clusters. This doesn't cause problems because pods in one cluster never directly communicate with pods in another cluster. Instead, there are gateways that mediate between a pod in one cluster and a pod in another cluster.

BareMetalIslandModeCidrConfig

Specifies the cluster CIDR configuration while running in island mode.

JSON representation
{
  "serviceAddressCidrBlocks": [
    string
  ],
  "podAddressCidrBlocks": [
    string
  ]
}
Fields
serviceAddressCidrBlocks[]

string

Required. All services in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field is mutable after creation starting with version 1.15.

podAddressCidrBlocks[]

string

Required. All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation.

BareMetalMultipleNetworkInterfacesConfig

Specifies the multiple networking interfaces cluster configuration.

JSON representation
{
  "enabled": boolean
}
Fields
enabled

boolean

Whether to enable multiple network interfaces for your pods.

When set networkConfig.advanced_networking is automatically set to true.

BareMetalSrIovConfig

Specifies the SR-IOV networking operator config.

JSON representation
{
  "enabled": boolean
}
Fields
enabled

boolean

Whether to install the SR-IOV operator.

BareMetalControlPlaneConfig

Specifies the control plane configuration.

JSON representation
{
  "controlPlaneNodePoolConfig": {
    object (BareMetalControlPlaneNodePoolConfig)
  },
  "apiServerArgs": [
    {
      object (BareMetalApiServerArgument)
    }
  ]
}
Fields
controlPlaneNodePoolConfig

object (BareMetalControlPlaneNodePoolConfig)

Required. Configures the node pool running the control plane.

apiServerArgs[]

object (BareMetalApiServerArgument)

Customizes the default API server args. Only a subset of customized flags are supported. For the exact format, refer to the API server documentation.

BareMetalControlPlaneNodePoolConfig

Specifies the control plane node pool configuration.

JSON representation
{
  "nodePoolConfig": {
    object (BareMetalNodePoolConfig)
  }
}
Fields
nodePoolConfig

object (BareMetalNodePoolConfig)

Required. The generic configuration for a node pool running the control plane.

BareMetalApiServerArgument

Represents an arg name->value pair. Only a subset of customized flags are supported. For the exact format, refer to the API server documentation.

JSON representation
{
  "argument": string,
  "value": string
}
Fields
argument

string

Required. The argument name as it appears on the API Server command line, make sure to remove the leading dashes.

value

string

Required. The value of the arg as it will be passed to the API Server command line.

BareMetalLoadBalancerConfig

Specifies the load balancer configuration.

JSON representation
{
  "vipConfig": {
    object (BareMetalVipConfig)
  },
  "portConfig": {
    object (BareMetalPortConfig)
  },

  // Union field load_balancer_configuration can be only one of the following:
  "metalLbConfig": {
    object (BareMetalMetalLbConfig)
  },
  "manualLbConfig": {
    object (BareMetalManualLbConfig)
  },
  "bgpLbConfig": {
    object (BareMetalBgpLbConfig)
  }
  // End of list of possible types for union field load_balancer_configuration.
}
Fields
vipConfig

object (BareMetalVipConfig)

The VIPs used by the load balancer.

portConfig

object (BareMetalPortConfig)

Configures the ports that the load balancer will listen on.

Union field load_balancer_configuration. The load balancer configuration for the bare metal user cluster. load_balancer_configuration can be only one of the following:
metalLbConfig

object (BareMetalMetalLbConfig)

Configuration for MetalLB load balancers.

manualLbConfig

object (BareMetalManualLbConfig)

Manually configured load balancers.

bgpLbConfig

object (BareMetalBgpLbConfig)

Configuration for BGP typed load balancers.

When set networkConfig.advanced_networking is automatically set to true.

BareMetalVipConfig

Specifies the VIP config for the bare metal load balancer.

JSON representation
{
  "controlPlaneVip": string,
  "ingressVip": string
}
Fields
controlPlaneVip

string

The VIP which you previously set aside for the Kubernetes API of this bare metal user cluster.

ingressVip

string

The VIP which you previously set aside for ingress traffic into this bare metal user cluster.

BareMetalPortConfig

Specifies load balancer ports for the bare metal user cluster.

JSON representation
{
  "controlPlaneLoadBalancerPort": integer
}
Fields
controlPlaneLoadBalancerPort

integer

The port that control plane hosted load balancers will listen on.

BareMetalMetalLbConfig

Represents configuration parameters for a MetalLB load balancer.

JSON representation
{
  "addressPools": [
    {
      object (BareMetalLoadBalancerAddressPool)
    }
  ],
  "loadBalancerNodePoolConfig": {
    object (BareMetalLoadBalancerNodePoolConfig)
  }
}
Fields
addressPools[]

object (BareMetalLoadBalancerAddressPool)

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.

loadBalancerNodePoolConfig

object (BareMetalLoadBalancerNodePoolConfig)

Specifies the node pool running the load balancer. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used as the load balancer pool.

BareMetalLoadBalancerAddressPool

Represents an IP pool used by the load balancer.

JSON representation
{
  "pool": string,
  "addresses": [
    string
  ],
  "avoidBuggyIps": boolean,
  "manualAssign": boolean
}
Fields
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.

BareMetalLoadBalancerNodePoolConfig

Specifies the load balancer's node pool configuration.

JSON representation
{
  "nodePoolConfig": {
    object (BareMetalNodePoolConfig)
  }
}
Fields
nodePoolConfig

object (BareMetalNodePoolConfig)

The generic configuration for a node pool running a load balancer.

BareMetalManualLbConfig

Represents configuration parameters for a manual load balancer.

JSON representation
{
  "enabled": boolean
}
Fields
enabled

boolean

Whether manual load balancing is enabled.

BareMetalBgpLbConfig

BareMetalBgpLbConfig represents configuration parameters for a Border Gateway Protocol (BGP) load balancer.

JSON representation
{
  "asn": string,
  "bgpPeerConfigs": [
    {
      object (BareMetalBgpPeerConfig)
    }
  ],
  "addressPools": [
    {
      object (BareMetalLoadBalancerAddressPool)
    }
  ],
  "loadBalancerNodePoolConfig": {
    object (BareMetalLoadBalancerNodePoolConfig)
  }
}
Fields
asn

string (int64 format)

Required. BGP autonomous system number (ASN) of the cluster. This field can be updated after cluster creation.

bgpPeerConfigs[]

object (BareMetalBgpPeerConfig)

Required. The list of BGP peers that the cluster will connect to. At least one peer must be configured for each control plane node.

Control plane nodes will connect to these peers to advertise the control plane VIP. The Services load balancer also uses these peers by default.

This field can be updated after cluster creation.

addressPools[]

object (BareMetalLoadBalancerAddressPool)

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.

loadBalancerNodePoolConfig

object (BareMetalLoadBalancerNodePoolConfig)

Specifies the node pool running data plane load balancing. L2 connectivity is required among nodes in this pool. If missing, the control plane node pool is used for data plane load balancing.

BareMetalBgpPeerConfig

BareMetalBgpPeerConfig represents configuration parameters for a Border Gateway Protocol (BGP) peer.

JSON representation
{
  "asn": string,
  "ipAddress": string,
  "controlPlaneNodes": [
    string
  ]
}
Fields
asn

string (int64 format)

Required. BGP autonomous system number (ASN) for the network that contains the external peer device.

ipAddress

string

Required. The IP address of the external peer device.

controlPlaneNodes[]

string

The IP address of the control plane node that connects to the external peer. If you don't specify any control plane nodes, all control plane nodes can connect to the external peer. If you specify one or more IP addresses, only the nodes specified participate in peering sessions.

BareMetalStorageConfig

BareMetalStorageConfig specifies the cluster storage configuration.

JSON representation
{
  "lvpShareConfig": {
    object (BareMetalLvpShareConfig)
  },
  "lvpNodeMountsConfig": {
    object (BareMetalLvpConfig)
  }
}
Fields
lvpShareConfig

object (BareMetalLvpShareConfig)

Required. Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation.

lvpNodeMountsConfig

object (BareMetalLvpConfig)

Required. Specifies the config for local PersistentVolumes backed by mounted node disks. These disks need to be formatted and mounted by the user, which can be done before or after cluster creation.

BareMetalProxyConfig

Specifies the cluster proxy configuration.

JSON representation
{
  "uri": string,
  "noProxy": [
    string
  ]
}
Fields
uri

string

Required. Specifies the address of your proxy server. Examples: http://domain

Do not provide credentials in the format http://(username:password@)domain these will be rejected by the server.

noProxy[]

string

A list of IPs, hostnames, and domains that should skip the proxy. Examples: ["127.0.0.1", "example.com", ".corp", "localhost"].

BareMetalClusterOperationsConfig

Specifies the bare metal user cluster's observability infrastructure.

JSON representation
{
  "enableApplicationLogs": boolean
}
Fields
enableApplicationLogs

boolean

Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics).

BareMetalMaintenanceConfig

Specifies configurations to put bare metal nodes in and out of maintenance.

JSON representation
{
  "maintenanceAddressCidrBlocks": [
    string
  ]
}
Fields
maintenanceAddressCidrBlocks[]

string

Required. All IPv4 address from these ranges will be placed into maintenance mode. Nodes in maintenance mode will be cordoned and drained. When both of these are true, the "baremetal.cluster.gke.io/maintenance" annotation will be set on the node resource.

BareMetalWorkloadNodeConfig

Specifies the workload node configurations.

JSON representation
{
  "maxPodsPerNode": string,
  "containerRuntime": enum (ContainerRuntime)
}
Fields
maxPodsPerNode

string (int64 format)

The maximum number of pods a node can run. The size of the CIDR range assigned to the node will be derived from this parameter.

containerRuntime

enum (ContainerRuntime)

Specifies which container runtime will be used.

ContainerRuntime

The runtime used to run containers in a this user cluster.

Enums
CONTAINER_RUNTIME_UNSPECIFIED No container runtime selected.
CONTAINERD Containerd runtime.

BareMetalSecurityConfig

Specifies the security related settings for the bare metal user cluster.

JSON representation
{
  "authorization": {
    object (Authorization)
  }
}
Fields
authorization

object (Authorization)

Configures user access to the user cluster.

BareMetalMaintenanceStatus

Represents the maintenance status of the bare metal user cluster.

JSON representation
{
  "machineDrainStatus": {
    object (BareMetalMachineDrainStatus)
  }
}
Fields
machineDrainStatus

object (BareMetalMachineDrainStatus)

The maintenance status of node machines.

BareMetalMachineDrainStatus

Represents the status of node machines that are undergoing drain operations.

JSON representation
{
  "drainingMachines": [
    {
      object (BareMetalDrainingMachine)
    }
  ],
  "drainedMachines": [
    {
      object (BareMetalDrainedMachine)
    }
  ]
}
Fields
drainingMachines[]

object (BareMetalDrainingMachine)

The list of draning machines.

drainedMachines[]

object (BareMetalDrainedMachine)

The list of drained machines.

BareMetalDrainingMachine

Represents a machine that is currently draining.

JSON representation
{
  "nodeIp": string,
  "podCount": integer
}
Fields
nodeIp

string

Draining machine IP address.

podCount

integer

The count of pods yet to drain.

BareMetalDrainedMachine

Represents a machine that is currently drained.

JSON representation
{
  "nodeIp": string
}
Fields
nodeIp

string

Drained machine IP address.

BareMetalNodeAccessConfig

Specifies the node access related settings for the bare metal user cluster.

JSON representation
{
  "loginUser": string
}
Fields
loginUser

string

LoginUser is the user name used to access node machines. It defaults to "root" if not set.

BareMetalOsEnvironmentConfig

Specifies operating system settings for cluster provisioning.

JSON representation
{
  "packageRepoExcluded": boolean
}
Fields
packageRepoExcluded

boolean

Whether the package repo should not be included when initializing bare metal machines.

BareMetalClusterUpgradePolicy

BareMetalClusterUpgradePolicy defines the cluster upgrade policy.

JSON representation
{
  "policy": enum (NodePoolPolicy)
}
Fields
policy

enum (NodePoolPolicy)

Specifies which upgrade policy to use.

NodePoolPolicy

Specifies the upgrade policy for worker node pools.

Enums
NODE_POOL_POLICY_UNSPECIFIED No upgrade policy selected.
SERIAL Upgrade worker node pools sequentially.
CONCURRENT Upgrade all worker node pools in parallel.

Methods

create

Creates a new bare metal cluster in a given project and location.

delete

Deletes a single bare metal Cluster.

enroll

Enrolls an existing bare metal user cluster and its node pools to the Anthos On-Prem API within a given project and location.

get

Gets details of a single bare metal Cluster.

list

Lists bare metal clusters in a given project and location.

patch

Updates the parameters of a single bare metal Cluster.

queryVersionConfig

Queries the bare metal user cluster version config.