---
title: Getting Started with Datadog
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Infrastructure > Datadog Resource Catalog
---

# gcp_gkeonprem_bare_metal_cluster{% #gcp_gkeonprem_bare_metal_cluster %}

## `admin_cluster_membership`{% #admin_cluster_membership %}

**Type**: `STRING`**Provider name**: `adminClusterMembership`**Description**: Required. The admin cluster this bare metal user cluster belongs to. This is the full resource name of the admin cluster's fleet membership.

## `admin_cluster_name`{% #admin_cluster_name %}

**Type**: `STRING`**Provider name**: `adminClusterName`**Description**: Output only. The resource name of the bare metal admin cluster managing this user cluster.

## `ancestors`{% #ancestors %}

**Type**: `UNORDERED_LIST_STRING`

## `annotations`{% #annotations %}

**Type**: `MAP_STRING_STRING`**Provider name**: `annotations`**Description**: 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.

## `bare_metal_version`{% #bare_metal_version %}

**Type**: `STRING`**Provider name**: `bareMetalVersion`**Description**: Required. The Anthos clusters on bare metal version for your user cluster.

## `binary_authorization`{% #binary_authorization %}

**Type**: `STRUCT`**Provider name**: `binaryAuthorization`**Description**: Binary Authorization related configurations.

- `evaluation_mode`**Type**: `STRING`**Provider name**: `evaluationMode`**Description**: Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.**Possible values**:
  - `EVALUATION_MODE_UNSPECIFIED` - Default value
  - `DISABLED` - Disable BinaryAuthorization
  - `PROJECT_SINGLETON_POLICY_ENFORCE` - Enforce Kubernetes admission requests with BinaryAuthorization using the project's singleton policy.

## `cluster_operations`{% #cluster_operations %}

**Type**: `STRUCT`**Provider name**: `clusterOperations`**Description**: Cluster operations configuration.

- `enable_application_logs`**Type**: `BOOLEAN`**Provider name**: `enableApplicationLogs`**Description**: Whether collection of application logs/metrics should be enabled (in addition to system logs/metrics).

## `control_plane`{% #control_plane %}

**Type**: `STRUCT`**Provider name**: `controlPlane`**Description**: Required. Control plane configuration.

- `api_server_args`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `apiServerArgs`**Description**: Customizes the default API server args. Only a subset of customized flags are supported. For the exact format, refer to the [API server documentation](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/).
  - `argument`**Type**: `STRING`**Provider name**: `argument`**Description**: Required. The argument name as it appears on the API Server command line, make sure to remove the leading dashes.
  - `value`**Type**: `STRING`**Provider name**: `value`**Description**: Required. The value of the arg as it will be passed to the API Server command line.
- `control_plane_node_pool_config`**Type**: `STRUCT`**Provider name**: `controlPlaneNodePoolConfig`**Description**: Required. Configures the node pool running the control plane.
  - `node_pool_config`**Type**: `STRUCT`**Provider name**: `nodePoolConfig`**Description**: Required. The generic configuration for a node pool running the control plane.
    - `kubelet_config`**Type**: `STRUCT`**Provider name**: `kubeletConfig`**Description**: The modifiable kubelet configurations for the bare metal machines.
      - `registry_burst`**Type**: `INT32`**Provider name**: `registryBurst`**Description**: The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10.
      - `registry_pull_qps`**Type**: `INT32`**Provider name**: `registryPullQps`**Description**: The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5.
      - `serialize_image_pulls_disabled`**Type**: `BOOLEAN`**Provider name**: `serializeImagePullsDisabled`**Description**: Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue [https://github.com/kubernetes/kubernetes/issues/10959](https://github.com/kubernetes/kubernetes/issues/10959) has more details.
    - `node_configs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `nodeConfigs`**Description**: Required. The list of machine addresses in the bare metal node pool.
      - `node_ip`**Type**: `STRING`**Provider name**: `nodeIp`**Description**: The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1
    - `operating_system`**Type**: `STRING`**Provider name**: `operatingSystem`**Description**: Specifies the nodes operating system (default: LINUX).**Possible values**:
      - `OPERATING_SYSTEM_UNSPECIFIED` - No operating system runtime selected.
      - `LINUX` - Linux operating system.
    - `taints`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `taints`**Description**: The initial taints assigned to nodes of this node pool.
      - `effect`**Type**: `STRING`**Provider name**: `effect`**Description**: The taint effect.**Possible values**:
        - `EFFECT_UNSPECIFIED` - Not set.
        - `NO_SCHEDULE` - Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.
        - `PREFER_NO_SCHEDULE` - Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.
        - `NO_EXECUTE` - Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.
      - `key`**Type**: `STRING`**Provider name**: `key`**Description**: Key associated with the effect.
      - `value`**Type**: `STRING`**Provider name**: `value`**Description**: Value associated with the effect.

## `create_time`{% #create_time %}

**Type**: `TIMESTAMP`**Provider name**: `createTime`**Description**: Output only. The time when the bare metal user cluster was created.

## `delete_time`{% #delete_time %}

**Type**: `TIMESTAMP`**Provider name**: `deleteTime`**Description**: Output only. The time when the bare metal user cluster was deleted. If the resource is not deleted, this must be empty

## `description`{% #description %}

**Type**: `STRING`**Provider name**: `description`**Description**: A human readable description of this bare metal user cluster.

## `endpoint`{% #endpoint %}

**Type**: `STRING`**Provider name**: `endpoint`**Description**: Output only. The IP address of the bare metal user cluster's API server.

## `etag`{% #etag %}

**Type**: `STRING`**Provider name**: `etag`**Description**: 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.

## `fleet`{% #fleet %}

**Type**: `STRUCT`**Provider name**: `fleet`**Description**: Output only. Fleet configuration for the cluster.

- `membership`**Type**: `STRING`**Provider name**: `membership`**Description**: Output only. The name of the managed fleet Membership resource associated to this cluster. Membership names are formatted as `projects//locations//memberships/`.

## `gcp_status`{% #gcp_status %}

**Type**: `STRUCT`**Provider name**: `status`**Description**: Output only. Detailed cluster status.

- `conditions`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `conditions`**Description**: ResourceCondition provide a standard mechanism for higher-level status reporting from controller.
  - `last_transition_time`**Type**: `TIMESTAMP`**Provider name**: `lastTransitionTime`**Description**: Last time the condition transit from one status to another.
  - `message`**Type**: `STRING`**Provider name**: `message`**Description**: Human-readable message indicating details about last transition.
  - `reason`**Type**: `STRING`**Provider name**: `reason`**Description**: Machine-readable message indicating details about last transition.
  - `state`**Type**: `STRING`**Provider name**: `state`**Description**: state of the condition.**Possible values**:
    - `STATE_UNSPECIFIED` - Not set.
    - `STATE_TRUE` - Resource is in the condition.
    - `STATE_FALSE` - Resource is not in the condition.
    - `STATE_UNKNOWN` - Kubernetes controller can't decide if the resource is in the condition or not.
  - `type`**Type**: `STRING`**Provider name**: `type`**Description**: Type of the condition. (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)
- `error_message`**Type**: `STRING`**Provider name**: `errorMessage`**Description**: 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.
- `version`**Type**: `STRING`**Provider name**: `version`**Description**: Reflect current version of the resource.
- `versions`**Type**: `STRUCT`**Provider name**: `versions`**Description**: Shows the mapping of a given version to the number of machines under this version.
  - `versions`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `versions`**Description**: Shows the mapping of a given version to the number of machines under this version.
    - `count`**Type**: `INT64`**Provider name**: `count`**Description**: Number of machines under the above version.
    - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Resource version.

## `labels`{% #labels %}

**Type**: `UNORDERED_LIST_STRING`

## `load_balancer`{% #load_balancer %}

**Type**: `STRUCT`**Provider name**: `loadBalancer`**Description**: Required. Load balancer configuration.

- `bgp_lb_config`**Type**: `STRUCT`**Provider name**: `bgpLbConfig`**Description**: Configuration for BGP typed load balancers. When set network_config.advanced_networking is automatically set to true.
  - `address_pools`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `addressPools`**Description**: 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.
    - `addresses`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `addresses`**Description**: 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).
    - `avoid_buggy_ips`**Type**: `BOOLEAN`**Provider name**: `avoidBuggyIps`**Description**: If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses.
    - `manual_assign`**Type**: `BOOLEAN`**Provider name**: `manualAssign`**Description**: If true, prevent IP addresses from being automatically assigned.
    - `pool`**Type**: `STRING`**Provider name**: `pool`**Description**: Required. The name of the address pool.
  - `asn`**Type**: `INT64`**Provider name**: `asn`**Description**: Required. BGP autonomous system number (ASN) of the cluster. This field can be updated after cluster creation.
  - `bgp_peer_configs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `bgpPeerConfigs`**Description**: 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.
    - `asn`**Type**: `INT64`**Provider name**: `asn`**Description**: Required. BGP autonomous system number (ASN) for the network that contains the external peer device.
    - `control_plane_nodes`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `controlPlaneNodes`**Description**: 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.
    - `ip_address`**Type**: `STRING`**Provider name**: `ipAddress`**Description**: Required. The IP address of the external peer device.
  - `load_balancer_node_pool_config`**Type**: `STRUCT`**Provider name**: `loadBalancerNodePoolConfig`**Description**: 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.
    - `node_pool_config`**Type**: `STRUCT`**Provider name**: `nodePoolConfig`**Description**: The generic configuration for a node pool running a load balancer.
      - `kubelet_config`**Type**: `STRUCT`**Provider name**: `kubeletConfig`**Description**: The modifiable kubelet configurations for the bare metal machines.
        - `registry_burst`**Type**: `INT32`**Provider name**: `registryBurst`**Description**: The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10.
        - `registry_pull_qps`**Type**: `INT32`**Provider name**: `registryPullQps`**Description**: The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5.
        - `serialize_image_pulls_disabled`**Type**: `BOOLEAN`**Provider name**: `serializeImagePullsDisabled`**Description**: Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue [https://github.com/kubernetes/kubernetes/issues/10959](https://github.com/kubernetes/kubernetes/issues/10959) has more details.
      - `node_configs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `nodeConfigs`**Description**: Required. The list of machine addresses in the bare metal node pool.
        - `node_ip`**Type**: `STRING`**Provider name**: `nodeIp`**Description**: The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1
      - `operating_system`**Type**: `STRING`**Provider name**: `operatingSystem`**Description**: Specifies the nodes operating system (default: LINUX).**Possible values**:
        - `OPERATING_SYSTEM_UNSPECIFIED` - No operating system runtime selected.
        - `LINUX` - Linux operating system.
      - `taints`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `taints`**Description**: The initial taints assigned to nodes of this node pool.
        - `effect`**Type**: `STRING`**Provider name**: `effect`**Description**: The taint effect.**Possible values**:
          - `EFFECT_UNSPECIFIED` - Not set.
          - `NO_SCHEDULE` - Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.
          - `PREFER_NO_SCHEDULE` - Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.
          - `NO_EXECUTE` - Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.
        - `key`**Type**: `STRING`**Provider name**: `key`**Description**: Key associated with the effect.
        - `value`**Type**: `STRING`**Provider name**: `value`**Description**: Value associated with the effect.
- `manual_lb_config`**Type**: `STRUCT`**Provider name**: `manualLbConfig`**Description**: Manually configured load balancers.
  - `enabled`**Type**: `BOOLEAN`**Provider name**: `enabled`**Description**: Whether manual load balancing is enabled.
- `metal_lb_config`**Type**: `STRUCT`**Provider name**: `metalLbConfig`**Description**: Configuration for MetalLB load balancers.
  - `address_pools`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `addressPools`**Description**: 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.
    - `addresses`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `addresses`**Description**: 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).
    - `avoid_buggy_ips`**Type**: `BOOLEAN`**Provider name**: `avoidBuggyIps`**Description**: If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses.
    - `manual_assign`**Type**: `BOOLEAN`**Provider name**: `manualAssign`**Description**: If true, prevent IP addresses from being automatically assigned.
    - `pool`**Type**: `STRING`**Provider name**: `pool`**Description**: Required. The name of the address pool.
  - `load_balancer_node_pool_config`**Type**: `STRUCT`**Provider name**: `loadBalancerNodePoolConfig`**Description**: 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.
    - `node_pool_config`**Type**: `STRUCT`**Provider name**: `nodePoolConfig`**Description**: The generic configuration for a node pool running a load balancer.
      - `kubelet_config`**Type**: `STRUCT`**Provider name**: `kubeletConfig`**Description**: The modifiable kubelet configurations for the bare metal machines.
        - `registry_burst`**Type**: `INT32`**Provider name**: `registryBurst`**Description**: The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10.
        - `registry_pull_qps`**Type**: `INT32`**Provider name**: `registryPullQps`**Description**: The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5.
        - `serialize_image_pulls_disabled`**Type**: `BOOLEAN`**Provider name**: `serializeImagePullsDisabled`**Description**: Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue [https://github.com/kubernetes/kubernetes/issues/10959](https://github.com/kubernetes/kubernetes/issues/10959) has more details.
      - `node_configs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `nodeConfigs`**Description**: Required. The list of machine addresses in the bare metal node pool.
        - `node_ip`**Type**: `STRING`**Provider name**: `nodeIp`**Description**: The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1
      - `operating_system`**Type**: `STRING`**Provider name**: `operatingSystem`**Description**: Specifies the nodes operating system (default: LINUX).**Possible values**:
        - `OPERATING_SYSTEM_UNSPECIFIED` - No operating system runtime selected.
        - `LINUX` - Linux operating system.
      - `taints`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `taints`**Description**: The initial taints assigned to nodes of this node pool.
        - `effect`**Type**: `STRING`**Provider name**: `effect`**Description**: The taint effect.**Possible values**:
          - `EFFECT_UNSPECIFIED` - Not set.
          - `NO_SCHEDULE` - Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.
          - `PREFER_NO_SCHEDULE` - Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.
          - `NO_EXECUTE` - Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.
        - `key`**Type**: `STRING`**Provider name**: `key`**Description**: Key associated with the effect.
        - `value`**Type**: `STRING`**Provider name**: `value`**Description**: Value associated with the effect.
- `port_config`**Type**: `STRUCT`**Provider name**: `portConfig`**Description**: Configures the ports that the load balancer will listen on.
  - `control_plane_load_balancer_port`**Type**: `INT32`**Provider name**: `controlPlaneLoadBalancerPort`**Description**: The port that control plane hosted load balancers will listen on.
- `vip_config`**Type**: `STRUCT`**Provider name**: `vipConfig`**Description**: The VIPs used by the load balancer.
  - `control_plane_vip`**Type**: `STRING`**Provider name**: `controlPlaneVip`**Description**: The VIP which you previously set aside for the Kubernetes API of this bare metal user cluster.
  - `ingress_vip`**Type**: `STRING`**Provider name**: `ingressVip`**Description**: The VIP which you previously set aside for ingress traffic into this bare metal user cluster.

## `local_name`{% #local_name %}

**Type**: `STRING`**Provider name**: `localName`**Description**: 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.

## `local_namespace`{% #local_namespace %}

**Type**: `STRING`**Provider name**: `localNamespace`**Description**: Output only. The namespace of the cluster.

## `maintenance_config`{% #maintenance_config %}

**Type**: `STRUCT`**Provider name**: `maintenanceConfig`**Description**: Maintenance configuration.

- `maintenance_address_cidr_blocks`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `maintenanceAddressCidrBlocks`**Description**: 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.

## `maintenance_status`{% #maintenance_status %}

**Type**: `STRUCT`**Provider name**: `maintenanceStatus`**Description**: Output only. Status of on-going maintenance tasks.

- `machine_drain_status`**Type**: `STRUCT`**Provider name**: `machineDrainStatus`**Description**: The maintenance status of node machines.
  - `drained_machines`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `drainedMachines`**Description**: The list of drained machines.
    - `node_ip`**Type**: `STRING`**Provider name**: `nodeIp`**Description**: Drained machine IP address.
  - `draining_machines`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `drainingMachines`**Description**: The list of draning machines.
    - `node_ip`**Type**: `STRING`**Provider name**: `nodeIp`**Description**: Draining machine IP address.
    - `pod_count`**Type**: `INT32`**Provider name**: `podCount`**Description**: The count of pods yet to drain.

## `name`{% #name %}

**Type**: `STRING`**Provider name**: `name`**Description**: Immutable. The bare metal user cluster resource name.

## `network_config`{% #network_config %}

**Type**: `STRUCT`**Provider name**: `networkConfig`**Description**: Required. Network configuration.

- `advanced_networking`**Type**: `BOOLEAN`**Provider name**: `advancedNetworking`**Description**: 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.
- `island_mode_cidr`**Type**: `STRUCT`**Provider name**: `islandModeCidr`**Description**: 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.
  - `pod_address_cidr_blocks`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `podAddressCidrBlocks`**Description**: Required. All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. This field cannot be changed after creation.
  - `service_address_cidr_blocks`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `serviceAddressCidrBlocks`**Description**: 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.
- `multiple_network_interfaces_config`**Type**: `STRUCT`**Provider name**: `multipleNetworkInterfacesConfig`**Description**: Configuration for multiple network interfaces.
  - `enabled`**Type**: `BOOLEAN`**Provider name**: `enabled`**Description**: Whether to enable multiple network interfaces for your pods. When set network_config.advanced_networking is automatically set to true.
- `sr_iov_config`**Type**: `STRUCT`**Provider name**: `srIovConfig`**Description**: Configuration for SR-IOV.
  - `enabled`**Type**: `BOOLEAN`**Provider name**: `enabled`**Description**: Whether to install the SR-IOV operator.

## `node_access_config`{% #node_access_config %}

**Type**: `STRUCT`**Provider name**: `nodeAccessConfig`**Description**: Node access related configurations.

- `login_user`**Type**: `STRING`**Provider name**: `loginUser`**Description**: LoginUser is the user name used to access node machines. It defaults to "root" if not set.

## `node_config`{% #node_config %}

**Type**: `STRUCT`**Provider name**: `nodeConfig`**Description**: Workload node configuration.

- `container_runtime`**Type**: `STRING`**Provider name**: `containerRuntime`**Description**: Specifies which container runtime will be used.**Possible values**:
  - `CONTAINER_RUNTIME_UNSPECIFIED` - No container runtime selected.
  - `CONTAINERD` - Containerd runtime.
- `max_pods_per_node`**Type**: `INT64`**Provider name**: `maxPodsPerNode`**Description**: 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.

## `organization_id`{% #organization_id %}

**Type**: `STRING`

## `os_environment_config`{% #os_environment_config %}

**Type**: `STRUCT`**Provider name**: `osEnvironmentConfig`**Description**: OS environment related configurations.

- `package_repo_excluded`**Type**: `BOOLEAN`**Provider name**: `packageRepoExcluded`**Description**: Whether the package repo should not be included when initializing bare metal machines.

## `parent`{% #parent %}

**Type**: `STRING`

## `project_id`{% #project_id %}

**Type**: `STRING`

## `project_number`{% #project_number %}

**Type**: `STRING`

## `proxy`{% #proxy %}

**Type**: `STRUCT`**Provider name**: `proxy`**Description**: Proxy configuration.

- `no_proxy`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `noProxy`**Description**: A list of IPs, hostnames, and domains that should skip the proxy. Examples: ["127.0.0.1", "example.com", ".corp", "localhost"].
- `uri`**Type**: `STRING`**Provider name**: `uri`**Description**: 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.

## `reconciling`{% #reconciling %}

**Type**: `BOOLEAN`**Provider name**: `reconciling`**Description**: Output only. If set, there are currently changes in flight to the bare metal user cluster.

## `region_id`{% #region_id %}

**Type**: `STRING`

## `resource_name`{% #resource_name %}

**Type**: `STRING`

## `security_config`{% #security_config %}

**Type**: `STRUCT`**Provider name**: `securityConfig`**Description**: Security related setting configuration.

- `authorization`**Type**: `STRUCT`**Provider name**: `authorization`**Description**: Configures user access to the user cluster.
  - `admin_users`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `adminUsers`**Description**: 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`**Type**: `STRING`**Provider name**: `username`**Description**: Required. The name of the user, e.g. `my-gcp-id@gmail.com`.

## `state`{% #state %}

**Type**: `STRING`**Provider name**: `state`**Description**: Output only. The current state of the bare metal user cluster.**Possible values**:

- `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.

## `storage`{% #storage %}

**Type**: `STRUCT`**Provider name**: `storage`**Description**: Required. Storage configuration.

- `lvp_node_mounts_config`**Type**: `STRUCT`**Provider name**: `lvpNodeMountsConfig`**Description**: 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.
  - `path`**Type**: `STRING`**Provider name**: `path`**Description**: Required. The host machine path.
  - `storage_class`**Type**: `STRING`**Provider name**: `storageClass`**Description**: Required. The StorageClass name that PVs will be created with.
- `lvp_share_config`**Type**: `STRUCT`**Provider name**: `lvpShareConfig`**Description**: Required. Specifies the config for local PersistentVolumes backed by subdirectories in a shared filesystem. These subdirectores are automatically created during cluster creation.
  - `lvp_config`**Type**: `STRUCT`**Provider name**: `lvpConfig`**Description**: Required. Defines the machine path and storage class for the LVP Share.
    - `path`**Type**: `STRING`**Provider name**: `path`**Description**: Required. The host machine path.
    - `storage_class`**Type**: `STRING`**Provider name**: `storageClass`**Description**: Required. The StorageClass name that PVs will be created with.
  - `shared_path_pv_count`**Type**: `INT32`**Provider name**: `sharedPathPvCount`**Description**: The number of subdirectories to create under path.

## `tags`{% #tags %}

**Type**: `UNORDERED_LIST_STRING`

## `uid`{% #uid %}

**Type**: `STRING`**Provider name**: `uid`**Description**: Output only. The unique identifier of the bare metal user cluster.

## `update_time`{% #update_time %}

**Type**: `TIMESTAMP`**Provider name**: `updateTime`**Description**: Output only. The time when the bare metal user cluster was last updated.

## `upgrade_policy`{% #upgrade_policy %}

**Type**: `STRUCT`**Provider name**: `upgradePolicy`**Description**: The cluster upgrade policy.

- `pause`**Type**: `BOOLEAN`**Provider name**: `pause`**Description**: Output only. Pause is used to show the upgrade pause status. It's view only for now.
- `policy`**Type**: `STRING`**Provider name**: `policy`**Description**: Specifies which upgrade policy to use.**Possible values**:
  - `NODE_POOL_POLICY_UNSPECIFIED` - No upgrade policy selected.
  - `SERIAL` - Upgrade worker node pools sequentially.
  - `CONCURRENT` - Upgrade all worker node pools in parallel.

## `validation_check`{% #validation_check %}

**Type**: `STRUCT`**Provider name**: `validationCheck`**Description**: Output only. The result of the preflight check.

- `gcp_status`**Type**: `STRUCT`**Provider name**: `status`**Description**: Output only. The detailed validation check status.
  - `result`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `result`**Description**: Individual checks which failed as part of the Preflight check execution.
    - `category`**Type**: `STRING`**Provider name**: `category`**Description**: The category of the validation.
    - `description`**Type**: `STRING`**Provider name**: `description`**Description**: The description of the validation check.
    - `details`**Type**: `STRING`**Provider name**: `details`**Description**: Detailed failure information, which might be unformatted.
    - `reason`**Type**: `STRING`**Provider name**: `reason`**Description**: A human-readable message of the check failure.
    - `state`**Type**: `STRING`**Provider name**: `state`**Description**: The validation check state.**Possible values**:
      - `STATE_UNKNOWN` - The default value. The check result is unknown.
      - `STATE_FAILURE` - The check failed.
      - `STATE_SKIPPED` - The check was skipped.
      - `STATE_FATAL` - The check itself failed to complete.
      - `STATE_WARNING` - The check encountered a warning.
- `option`**Type**: `STRING`**Provider name**: `option`**Description**: Options used for the validation check**Possible values**:
  - `OPTIONS_UNSPECIFIED` - Default value. Standard preflight validation check will be used.
  - `SKIP_VALIDATION_CHECK_BLOCKING` - Prevent failed preflight checks from failing.
  - `SKIP_VALIDATION_ALL` - Skip all preflight check validations.
- `scenario`**Type**: `STRING`**Provider name**: `scenario`**Description**: Output only. The scenario when the preflight checks were run.**Possible values**:
  - `SCENARIO_UNSPECIFIED` - Default value. This value is unused.
  - `CREATE` - The validation check occurred during a create flow.
  - `UPDATE` - The validation check occurred during an update flow.

## `zone_id`{% #zone_id %}

**Type**: `STRING`
