<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="container_v1.html">Kubernetes Engine API</a> . <a href="container_v1.projects.html">projects</a> . <a href="container_v1.projects.locations.html">locations</a> . <a href="container_v1.projects.locations.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="container_v1.projects.locations.clusters.nodePools.html">nodePools()</a></code>
</p>
<p class="firstline">Returns the nodePools Resource.</p>

<p class="toc_element">
  <code><a href="container_v1.projects.locations.clusters.well_known.html">well_known()</a></code>
</p>
<p class="firstline">Returns the well_known Resource.</p>

<p class="toc_element">
  <code><a href="#checkAutopilotCompatibility">checkAutopilotCompatibility(name, x__xgafv=None)</a></code></p>
<p class="firstline">Checks the cluster compatibility with Autopilot mode, and returns a list of compatibility issues.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#completeIpRotation">completeIpRotation(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Completes master IP rotation.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project's [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project's global metadata indicating which CIDR range the cluster is using.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, clusterId=None, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster, such as load balancer resources, are not deleted if they weren't present when the cluster was initially created.</p>
<p class="toc_element">
  <code><a href="#get">get(name, clusterId=None, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Gets the details of a specific cluster.</p>
<p class="toc_element">
  <code><a href="#getJwks">getJwks(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the public component of the cluster signing keys in JSON Web Key format. This API is not yet intended for general use, and is not available for all clusters.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, projectId=None, x__xgafv=None, zone=None)</a></code></p>
<p class="firstline">Lists all clusters owned by a project in either the specified zone or all zones.</p>
<p class="toc_element">
  <code><a href="#setAddons">setAddons(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the addons for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#setLegacyAbac">setLegacyAbac(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables or disables the ABAC authorization mechanism on a cluster.</p>
<p class="toc_element">
  <code><a href="#setLocations">setLocations(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the locations for a specific cluster. Deprecated. Use [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update) instead.</p>
<p class="toc_element">
  <code><a href="#setLogging">setLogging(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the logging service for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#setMaintenancePolicy">setMaintenancePolicy(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the maintenance policy for a cluster.</p>
<p class="toc_element">
  <code><a href="#setMasterAuth">setMasterAuth(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets master auth materials. Currently supports changing the admin password or a specific cluster, either via password generation or explicitly setting the password.</p>
<p class="toc_element">
  <code><a href="#setMonitoring">setMonitoring(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the monitoring service for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#setNetworkPolicy">setNetworkPolicy(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables or disables Network Policy for a cluster.</p>
<p class="toc_element">
  <code><a href="#setResourceLabels">setResourceLabels(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets labels on a cluster.</p>
<p class="toc_element">
  <code><a href="#startIpRotation">startIpRotation(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts master IP rotation.</p>
<p class="toc_element">
  <code><a href="#update">update(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the settings of a specific cluster.</p>
<p class="toc_element">
  <code><a href="#updateMaster">updateMaster(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the master for a specific cluster.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="checkAutopilotCompatibility">checkAutopilotCompatibility(name, x__xgafv=None)</code>
  <pre>Checks the cluster compatibility with Autopilot mode, and returns a list of compatibility issues.

Args:
  name: string, The name (project, location, cluster) of the cluster to retrieve. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # CheckAutopilotCompatibilityResponse has a list of compatibility issues.
  &quot;issues&quot;: [ # The list of issues for the given operation.
    { # AutopilotCompatibilityIssue contains information about a specific compatibility issue with Autopilot mode.
      &quot;constraintType&quot;: &quot;A String&quot;, # The constraint type of the issue.
      &quot;description&quot;: &quot;A String&quot;, # The description of the issue.
      &quot;documentationUrl&quot;: &quot;A String&quot;, # A URL to a public documnetation, which addresses resolving this issue.
      &quot;incompatibilityType&quot;: &quot;A String&quot;, # The incompatibility type of this issue.
      &quot;lastObservation&quot;: &quot;A String&quot;, # The last time when this issue was observed.
      &quot;subjects&quot;: [ # The name of the resources which are subject to this issue.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;summary&quot;: &quot;A String&quot;, # The summary of the autopilot compatibility response.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="completeIpRotation">completeIpRotation(name, body=None, x__xgafv=None)</code>
  <pre>Completes master IP rotation.

Args:
  name: string, The name (project, location, cluster name) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # CompleteIPRotationRequest moves the cluster master back into single-IP mode.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to complete IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a cluster, consisting of the specified number and type of Google Compute Engine instances. By default, the cluster is created in the project&#x27;s [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks). One firewall is added for the cluster. After cluster creation, the Kubelet creates routes for each node to allow the containers on that node to communicate with all other instances in the cluster. Finally, an entry is added to the project&#x27;s global metadata indicating which CIDR range the cluster is using.

Args:
  parent: string, The parent (project and location) where the cluster will be created. Specified in the format `projects/*/locations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # CreateClusterRequest creates a cluster.
  &quot;cluster&quot;: { # A Google Kubernetes Engine cluster. # Required. A [cluster resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters)
    &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
      &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
        &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
        &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
      },
      &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
        &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
      },
      &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
        &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
      },
      &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
      },
      &quot;gcpFilestoreCsiDriverConfig&quot;: { # Configuration for the GCP Filestore CSI driver. # Configuration for the GCP Filestore CSI driver.
        &quot;enabled&quot;: True or False, # Whether the GCP Filestore CSI driver is enabled for this cluster.
      },
      &quot;gcsFuseCsiDriverConfig&quot;: { # Configuration for the Cloud Storage Fuse CSI driver. # Configuration for the Cloud Storage Fuse CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
      },
      &quot;gkeBackupAgentConfig&quot;: { # Configuration for the Backup for GKE Agent. # Configuration for the Backup for GKE agent addon.
        &quot;enabled&quot;: True or False, # Whether the Backup for GKE agent is enabled for this cluster.
      },
      &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
        &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
      },
      &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
        &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
      },
      &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
        &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
      &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
        &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
    },
    &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
      &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
      &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
    },
    &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
      &quot;enabled&quot;: True or False, # Enable Autopilot
      &quot;workloadPolicyConfig&quot;: { # WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters. # Workload policy configuration for Autopilot.
        &quot;allowNetAdmin&quot;: True or False, # If true, workloads can use NET_ADMIN capability.
      },
    },
    &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
      &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
        &quot;A String&quot;,
      ],
      &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
        &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, # The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
        &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
        &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
        &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
        &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
          &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
            &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
            &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
          },
        },
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass &quot;automatic&quot; as field value.
        &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
          &quot;A String&quot;,
        ],
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
        &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
          &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
          &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
        },
        &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Specifies the upgrade settings for NAP created node pools
          &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
            &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
            &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
              &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
              &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
              &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
            },
          },
          &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
          &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
          &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
        },
      },
      &quot;autoscalingProfile&quot;: &quot;A String&quot;, # Defines autoscaling behaviour.
      &quot;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
      &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
        { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
          &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
          &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
          &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
        },
      ],
    },
    &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
      &quot;enabled&quot;: True or False, # This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.
    },
    &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
    &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
        &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
        &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
        &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
      },
    ],
    &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled.
      &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
    },
    &quot;costManagementConfig&quot;: { # Configuration for fine-grained cost management feature. # Configuration for the fine-grained cost management feature.
      &quot;enabled&quot;: True or False, # Whether the feature is enabled or not.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
    &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
    &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
    &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
      &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
      &quot;state&quot;: &quot;A String&quot;, # The desired state of etcd encryption.
    },
    &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
      &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
    },
    &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
    &quot;enableK8sBetaApis&quot;: { # K8sBetaAPIConfig , configuration for beta APIs # Beta APIs Config
      &quot;enabledApis&quot;: [ # Enabled k8s beta APIs.
        &quot;A String&quot;,
      ],
    },
    &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
    &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
    &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
    &quot;enterpriseConfig&quot;: { # EnterpriseConfig is the cluster enterprise configuration. # GKE Enterprise Configuration.
      &quot;clusterTier&quot;: &quot;A String&quot;, # Output only. [Output only] cluster_tier specifies the premium tier of the cluster.
    },
    &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
    &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;fleet&quot;: { # Fleet is the fleet configuration for the cluster. # Fleet information for the cluster.
      &quot;membership&quot;: &quot;A String&quot;, # [Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
      &quot;preRegistered&quot;: True or False, # [Output only] Whether the cluster has been registered through the fleet API.
      &quot;project&quot;: &quot;A String&quot;, # The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered.
    },
    &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
    &quot;identityServiceConfig&quot;: { # IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API # Configuration for Identity Service component.
      &quot;enabled&quot;: True or False, # Whether to enable the Identity Service component
    },
    &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;&quot;,&quot;-&quot;: picks the default Kubernetes version
    &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
    &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
      &quot;A String&quot;,
    ],
    &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
      &quot;additionalPodRangesConfig&quot;: { # AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message. # Output only. [Output only] The additional pod ranges that are added to the cluster. These pod ranges can be used by new node pools to allocate pod IPs automatically. Once the range is removed it will not show up in IPAllocationPolicy.
        &quot;podRangeInfo&quot;: [ # Output only. [Output only] Information for additional pod range.
          { # RangeInfo contains the range name and the range utilization by this cluster.
            &quot;rangeName&quot;: &quot;A String&quot;, # Output only. [Output only] Name of a range.
            &quot;utilization&quot;: 3.14, # Output only. [Output only] The utilization of the range.
          },
        ],
        &quot;podRangeNames&quot;: [ # Name for pod secondary ipv4 range which has the actual range defined ahead.
          &quot;A String&quot;,
        ],
      },
      &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
      &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
      &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
      &quot;defaultPodIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
      &quot;ipv6AccessType&quot;: &quot;A String&quot;, # The ipv6 access type (internal or external) when create_subnetwork is true
      &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
      &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
        &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
      },
      &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
      &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;servicesIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The services IPv6 CIDR block for the cluster.
      &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
      &quot;stackType&quot;: &quot;A String&quot;, # The IP stack type of the cluster
      &quot;subnetIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The subnet&#x27;s IPv6 CIDR block used by nodes and pods.
      &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
      &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
      &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
      &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
    },
    &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
    &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
      &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
    },
    &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
    &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # LoggingConfig is cluster logging configuration. # Logging configuration for the cluster.
      &quot;componentConfig&quot;: { # LoggingComponentConfig is cluster logging component configuration. # Logging components configuration
        &quot;enableComponents&quot;: [ # Select components to collect logs. An empty set would disable all logging.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
    &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
      &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
      &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
        &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
          &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
          &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
        },
        &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
          &quot;a_key&quot;: { # Represents an arbitrary window of time.
            &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
            &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
              &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
            },
            &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
          },
        },
        &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
          &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
          &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
            &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
            &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
              &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
            },
            &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
          },
        },
      },
    },
    &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
      &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
      &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
        &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
      },
      &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
      &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
      &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
      &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    },
    &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
      &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
        { # CidrBlock contains an optional name and one CIDR block.
          &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
          &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
        },
      ],
      &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
      &quot;gcpPublicCidrsAccessEnabled&quot;: True or False, # Whether master is accessbile via Google Compute Engine Public IP addresses.
    },
    &quot;meshCertificates&quot;: { # Configuration for issuance of mTLS keys and certificates to Kubernetes pods. # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
      &quot;enableCertificates&quot;: True or False, # enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty).
    },
    &quot;monitoringConfig&quot;: { # MonitoringConfig is cluster monitoring configuration. # Monitoring configuration for the cluster.
      &quot;advancedDatapathObservabilityConfig&quot;: { # AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath. # Configuration of Advanced Datapath Observability features.
        &quot;enableMetrics&quot;: True or False, # Expose flow metrics on nodes
        &quot;enableRelay&quot;: True or False, # Enable Relay component
        &quot;relayMode&quot;: &quot;A String&quot;, # Method used to make Relay available
      },
      &quot;componentConfig&quot;: { # MonitoringComponentConfig is cluster monitoring component configuration. # Monitoring components configuration
        &quot;enableComponents&quot;: [ # Select components to collect metrics. An empty set would disable all monitoring.
          &quot;A String&quot;,
        ],
      },
      &quot;managedPrometheusConfig&quot;: { # ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus. # Enable Google Cloud Managed Service for Prometheus in the cluster.
        &quot;enabled&quot;: True or False, # Enable Managed Collection.
      },
    },
    &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
    &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
    &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
    &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
      &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
      &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
        &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
      },
      &quot;dnsConfig&quot;: { # DNSConfig contains the desired set of options for configuring clusterDNS. # DNSConfig contains clusterDNS config for this cluster.
        &quot;clusterDns&quot;: &quot;A String&quot;, # cluster_dns indicates which in-cluster DNS provider should be used.
        &quot;clusterDnsDomain&quot;: &quot;A String&quot;, # cluster_dns_domain is the suffix used for all cluster service records.
        &quot;clusterDnsScope&quot;: &quot;A String&quot;, # cluster_dns_scope indicates the scope of access to cluster DNS records.
      },
      &quot;enableFqdnNetworkPolicy&quot;: True or False, # Whether FQDN Network Policy is enabled on this cluster.
      &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
      &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
      &quot;enableMultiNetworking&quot;: True or False, # Whether multi-networking is enabled for this cluster.
      &quot;gatewayApiConfig&quot;: { # GatewayAPIConfig contains the desired config of Gateway API on this cluster. # GatewayAPIConfig contains the desired config of Gateway API on this cluster.
        &quot;channel&quot;: &quot;A String&quot;, # The Gateway API release channel to use for Gateway API.
      },
      &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
      &quot;networkPerformanceConfig&quot;: { # Configuration of network bandwidth tiers # Network bandwidth tier configuration.
        &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for NodePools in the cluster.
      },
      &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
      &quot;serviceExternalIpsConfig&quot;: { # Config to block services with externalIPs field. # ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not.
        &quot;enabled&quot;: True or False, # Whether Services with ExternalIPs field are allowed or not.
      },
      &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
    },
    &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
      &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
      &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
    },
    &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
      &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
        { # AcceleratorConfig represents a Hardware Accelerator request.
          &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
          &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
          &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
            &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
          },
          &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
          &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
            &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
            &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
          },
        },
      ],
      &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
        &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
      },
      &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
      &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
        &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
      },
      &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
      &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
      &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
        &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
      },
      &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
        &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
      },
      &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
        &quot;enabled&quot;: True or False, # Whether to use GCFS.
      },
      &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
        &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
      },
      &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
      &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
        &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
        &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
        &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
        &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
        &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
      },
      &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
        &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
        &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
        &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
      },
      &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
      &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
        &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
          &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
        },
      },
      &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
      &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
      &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
      &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
        &quot;A String&quot;,
      ],
      &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
      &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
        &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
        &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
        &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
          &quot;A String&quot;,
        ],
      },
      &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
        &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
        &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
      },
      &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
        &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
        &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
      },
      &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
        &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
          { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
            &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
            &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
            &quot;values&quot;: [ # Values for NodeAffinity.
              &quot;A String&quot;,
            ],
          },
        ],
      },
      &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
      &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
        &quot;A String&quot;,
      ],
      &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
        { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
          &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
          &quot;key&quot;: &quot;A String&quot;, # Key for taint.
          &quot;value&quot;: &quot;A String&quot;, # Value for taint.
        },
      ],
      &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
        &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
      },
      &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
        &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
      },
    },
    &quot;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
    &quot;nodePoolAutoConfig&quot;: { # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters. # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.
      &quot;networkTags&quot;: { # Collection of Compute Engine network tags that can be applied to a node&#x27;s underlying VM instance. # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035.
        &quot;tags&quot;: [ # List of network tags.
          &quot;A String&quot;,
        ],
      },
      &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies.
        &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    },
    &quot;nodePoolDefaults&quot;: { # Subset of Nodepool message that has defaults. # Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object.
      &quot;nodeConfigDefaults&quot;: { # Subset of NodeConfig message that has defaults. # Subset of NodeConfig message that has defaults.
        &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # GCFS (Google Container File System, also known as Riptide) options.
          &quot;enabled&quot;: True or False, # Whether to use GCFS.
        },
        &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration for node pools.
          &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
            &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
          },
        },
      },
    },
    &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
      { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;s), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.
        &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
          &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
          &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
          &quot;locationPolicy&quot;: &quot;A String&quot;, # Location policy used when scaling up a nodepool.
          &quot;maxNodeCount&quot;: 42, # Maximum number of nodes for one location in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
          &quot;minNodeCount&quot;: 42, # Minimum number of nodes for one location in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
          &quot;totalMaxNodeCount&quot;: 42, # Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
          &quot;totalMinNodeCount&quot;: 42, # Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
        },
        &quot;bestEffortProvisioning&quot;: { # Best effort provisioning. # Enable best effort provisioning for nodes
          &quot;enabled&quot;: True or False, # When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes
          &quot;minProvisionNodes&quot;: 42, # Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved.
        },
        &quot;conditions&quot;: [ # Which conditions caused the current node pool state.
          { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
            &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
            &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
            &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
          },
        ],
        &quot;config&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # The node configuration of the pool.
          &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
            { # AcceleratorConfig represents a Hardware Accelerator request.
              &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
              &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
              &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
                &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
              },
              &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
              &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
                &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
                &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
              },
            },
          ],
          &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
            &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
          },
          &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
          &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
            &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
          },
          &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
          &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
          &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
            &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
          },
          &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
            &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
          },
          &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
            &quot;enabled&quot;: True or False, # Whether to use GCFS.
          },
          &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
            &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
          },
          &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
          &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
            &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
            &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
            &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
            &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
            &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
          },
          &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
            &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
            &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
            &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
          },
          &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
          &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
            &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
              &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
            },
          },
          &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
          &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
          &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
          &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
            &quot;A String&quot;,
          ],
          &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
          &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
            &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
            &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
            &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
              &quot;A String&quot;,
            ],
          },
          &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
            &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
            &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
          },
          &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
          &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
            &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
            &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
          },
          &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
            &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
              { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
                &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
                &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
                &quot;values&quot;: [ # Values for NodeAffinity.
                  &quot;A String&quot;,
                ],
              },
            ],
          },
          &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
          &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
            &quot;A String&quot;,
          ],
          &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
            { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
              &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
              &quot;key&quot;: &quot;A String&quot;, # Key for taint.
              &quot;value&quot;: &quot;A String&quot;, # Value for taint.
            },
          ],
          &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
            &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
          },
          &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
            &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
          },
        },
        &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
        &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
        &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources.
          &quot;A String&quot;,
        ],
        &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
          &quot;A String&quot;,
        ],
        &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
          &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
            &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
            &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
          },
        },
        &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
          &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
        },
        &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
        &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
          &quot;additionalNodeNetworkConfigs&quot;: [ # We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface
            { # AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message
              &quot;network&quot;: &quot;A String&quot;, # Name of the VPC where the additional interface belongs
              &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional interface belongs
            },
          ],
          &quot;additionalPodNetworkConfigs&quot;: [ # We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node
            { # AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message
              &quot;maxPodsPerNode&quot;: { # Constraints applied to pods. # The maximum number of pods per node which use this pod network
                &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
              },
              &quot;secondaryPodRange&quot;: &quot;A String&quot;, # The name of the secondary range on the subnet which provides IP address for this pod range
              &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional pod network belongs
            },
          ],
          &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
          &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes
          &quot;networkPerformanceConfig&quot;: { # Configuration of all network bandwidth tiers # Network bandwidth tier configuration.
            &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for the NodePool.
          },
          &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
            &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
          },
          &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
          &quot;podIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
          &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
        },
        &quot;placementPolicy&quot;: { # PlacementPolicy defines the placement policy used by the node pool. # Specifies the node placement policy.
          &quot;policyName&quot;: &quot;A String&quot;, # If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned.
          &quot;tpuTopology&quot;: &quot;A String&quot;, # Optional. TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
          &quot;type&quot;: &quot;A String&quot;, # The type of placement.
        },
        &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
        &quot;queuedProvisioning&quot;: { # QueuedProvisioning defines the queued provisioning used by the node pool. # Specifies the configuration of queued provisioning.
          &quot;enabled&quot;: True or False, # Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
        &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
        &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
        &quot;updateInfo&quot;: { # UpdateInfo contains resource (instance groups, etc), status and other intermediate information relevant to a node pool upgrade. # Output only. [Output only] Update info contains relevant information during a node pool update.
          &quot;blueGreenInfo&quot;: { # Information relevant to blue-green upgrade. # Information of a blue-green upgrade.
            &quot;blueInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with blue pool.
              &quot;A String&quot;,
            ],
            &quot;bluePoolDeletionStartTime&quot;: &quot;A String&quot;, # Time to start deleting blue pool to complete blue-green upgrade, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
            &quot;greenInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with green pool.
              &quot;A String&quot;,
            ],
            &quot;greenPoolVersion&quot;: &quot;A String&quot;, # Version of green pool.
            &quot;phase&quot;: &quot;A String&quot;, # Current blue-green upgrade phase.
          },
        },
        &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Upgrade settings control disruption and speed of the upgrade.
          &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
            &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
            &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
              &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
              &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
              &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
            },
          },
          &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
          &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
          &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
        },
        &quot;version&quot;: &quot;A String&quot;, # The version of Kubernetes running on this NodePool&#x27;s nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).
      },
    ],
    &quot;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
      &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
        &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
        &quot;filter&quot;: { # Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent # Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent
          &quot;eventType&quot;: [ # Event types to allowlist.
            &quot;A String&quot;,
          ],
        },
        &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
      },
    },
    &quot;parentProductConfig&quot;: { # ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster. # The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster.
      &quot;labels&quot;: { # Labels contain the configuration of the parent product.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;productName&quot;: &quot;A String&quot;, # Name of the parent product associated with the cluster.
    },
    &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
      &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
      &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
      &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
        &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
      },
      &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
      &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
      &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
      &quot;privateEndpointSubnetwork&quot;: &quot;A String&quot;, # Subnet to provision the master&#x27;s private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format.
      &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
    },
    &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version.
      &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
    },
    &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
      &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
        &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
      },
      &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
        &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
      },
      &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
    },
    &quot;securityPostureConfig&quot;: { # SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API. # Enable/Disable Security Posture API features for the cluster.
      &quot;mode&quot;: &quot;A String&quot;, # Sets which mode to use for Security Posture features.
      &quot;vulnerabilityMode&quot;: &quot;A String&quot;, # Sets which mode to use for vulnerability scanning.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
    &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
    &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
      &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
    },
    &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
    &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
    &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
    &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
    &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
      &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
    },
    &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
      &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
    },
    &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
  },
  &quot;parent&quot;: &quot;A String&quot;, # The parent (project and location) where the cluster will be created. Specified in the format `projects/*/locations/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the parent field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, clusterId=None, projectId=None, x__xgafv=None, zone=None)</code>
  <pre>Deletes the cluster, including the Kubernetes endpoint and all worker nodes. Firewalls and routes that were configured during cluster creation are also deleted. Other Google Compute Engine resources that might be in use by the cluster, such as load balancer resources, are not deleted if they weren&#x27;t present when the cluster was initially created.

Args:
  name: string, The name (project, location, cluster) of the cluster to delete. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  clusterId: string, Deprecated. The name of the cluster to delete. This field has been deprecated and replaced by the name field.
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, clusterId=None, projectId=None, x__xgafv=None, zone=None)</code>
  <pre>Gets the details of a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to retrieve. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  clusterId: string, Deprecated. The name of the cluster to retrieve. This field has been deprecated and replaced by the name field.
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.

Returns:
  An object of the form:

    { # A Google Kubernetes Engine cluster.
  &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
    &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
      &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
      &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
    },
    &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
      &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
    },
    &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
      &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
    },
    &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
    },
    &quot;gcpFilestoreCsiDriverConfig&quot;: { # Configuration for the GCP Filestore CSI driver. # Configuration for the GCP Filestore CSI driver.
      &quot;enabled&quot;: True or False, # Whether the GCP Filestore CSI driver is enabled for this cluster.
    },
    &quot;gcsFuseCsiDriverConfig&quot;: { # Configuration for the Cloud Storage Fuse CSI driver. # Configuration for the Cloud Storage Fuse CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
    },
    &quot;gkeBackupAgentConfig&quot;: { # Configuration for the Backup for GKE Agent. # Configuration for the Backup for GKE agent addon.
      &quot;enabled&quot;: True or False, # Whether the Backup for GKE agent is enabled for this cluster.
    },
    &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
      &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
    },
    &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
      &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
    },
    &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
      &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
    },
    &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
      &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
    },
  },
  &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
    &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
    &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
  },
  &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
    &quot;enabled&quot;: True or False, # Enable Autopilot
    &quot;workloadPolicyConfig&quot;: { # WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters. # Workload policy configuration for Autopilot.
      &quot;allowNetAdmin&quot;: True or False, # If true, workloads can use NET_ADMIN capability.
    },
  },
  &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
    &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
      &quot;A String&quot;,
    ],
    &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
      &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, # The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
      &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
      &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
      &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
      &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
      &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
        &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
        &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
        &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
          &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
          &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
        },
      },
      &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass &quot;automatic&quot; as field value.
      &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
        &quot;A String&quot;,
      ],
      &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
        &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
        &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
      },
      &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Specifies the upgrade settings for NAP created node pools
        &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
          &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
          &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
            &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
            &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
            &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
          },
        },
        &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
        &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
        &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
      },
    },
    &quot;autoscalingProfile&quot;: &quot;A String&quot;, # Defines autoscaling behaviour.
    &quot;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
    &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
      { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
        &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
        &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
        &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
      },
    ],
  },
  &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
    &quot;enabled&quot;: True or False, # This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
    &quot;evaluationMode&quot;: &quot;A String&quot;, # Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.
  },
  &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
  &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled.
    &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
  },
  &quot;costManagementConfig&quot;: { # Configuration for fine-grained cost management feature. # Configuration for the fine-grained cost management feature.
    &quot;enabled&quot;: True or False, # Whether the feature is enabled or not.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
  &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
  &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
  &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
    &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
    &quot;state&quot;: &quot;A String&quot;, # The desired state of etcd encryption.
  },
  &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
    &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
  },
  &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
  &quot;enableK8sBetaApis&quot;: { # K8sBetaAPIConfig , configuration for beta APIs # Beta APIs Config
    &quot;enabledApis&quot;: [ # Enabled k8s beta APIs.
      &quot;A String&quot;,
    ],
  },
  &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
  &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
  &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
  &quot;enterpriseConfig&quot;: { # EnterpriseConfig is the cluster enterprise configuration. # GKE Enterprise Configuration.
    &quot;clusterTier&quot;: &quot;A String&quot;, # Output only. [Output only] cluster_tier specifies the premium tier of the cluster.
  },
  &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
  &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;fleet&quot;: { # Fleet is the fleet configuration for the cluster. # Fleet information for the cluster.
    &quot;membership&quot;: &quot;A String&quot;, # [Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
    &quot;preRegistered&quot;: True or False, # [Output only] Whether the cluster has been registered through the fleet API.
    &quot;project&quot;: &quot;A String&quot;, # The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered.
  },
  &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
  &quot;identityServiceConfig&quot;: { # IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API # Configuration for Identity Service component.
    &quot;enabled&quot;: True or False, # Whether to enable the Identity Service component
  },
  &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;&quot;,&quot;-&quot;: picks the default Kubernetes version
  &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
  &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
    &quot;A String&quot;,
  ],
  &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
    &quot;additionalPodRangesConfig&quot;: { # AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message. # Output only. [Output only] The additional pod ranges that are added to the cluster. These pod ranges can be used by new node pools to allocate pod IPs automatically. Once the range is removed it will not show up in IPAllocationPolicy.
      &quot;podRangeInfo&quot;: [ # Output only. [Output only] Information for additional pod range.
        { # RangeInfo contains the range name and the range utilization by this cluster.
          &quot;rangeName&quot;: &quot;A String&quot;, # Output only. [Output only] Name of a range.
          &quot;utilization&quot;: 3.14, # Output only. [Output only] The utilization of the range.
        },
      ],
      &quot;podRangeNames&quot;: [ # Name for pod secondary ipv4 range which has the actual range defined ahead.
        &quot;A String&quot;,
      ],
    },
    &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
    &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
    &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
    &quot;defaultPodIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
    &quot;ipv6AccessType&quot;: &quot;A String&quot;, # The ipv6 access type (internal or external) when create_subnetwork is true
    &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
    &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
      &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
    },
    &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
    &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;servicesIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The services IPv6 CIDR block for the cluster.
    &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
    &quot;stackType&quot;: &quot;A String&quot;, # The IP stack type of the cluster
    &quot;subnetIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The subnet&#x27;s IPv6 CIDR block used by nodes and pods.
    &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
    &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
    &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
    &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
  },
  &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
  &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
    &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
    &quot;A String&quot;,
  ],
  &quot;loggingConfig&quot;: { # LoggingConfig is cluster logging configuration. # Logging configuration for the cluster.
    &quot;componentConfig&quot;: { # LoggingComponentConfig is cluster logging component configuration. # Logging components configuration
      &quot;enableComponents&quot;: [ # Select components to collect logs. An empty set would disable all logging.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
    &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
      &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
        &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
        &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
      },
      &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
        &quot;a_key&quot;: { # Represents an arbitrary window of time.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
            &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
          },
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
      &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
        &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
            &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
          },
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
    },
  },
  &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
    &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
      &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
    },
    &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
    &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
    &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  },
  &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
    &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
      { # CidrBlock contains an optional name and one CIDR block.
        &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
        &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
      },
    ],
    &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
    &quot;gcpPublicCidrsAccessEnabled&quot;: True or False, # Whether master is accessbile via Google Compute Engine Public IP addresses.
  },
  &quot;meshCertificates&quot;: { # Configuration for issuance of mTLS keys and certificates to Kubernetes pods. # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
    &quot;enableCertificates&quot;: True or False, # enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty).
  },
  &quot;monitoringConfig&quot;: { # MonitoringConfig is cluster monitoring configuration. # Monitoring configuration for the cluster.
    &quot;advancedDatapathObservabilityConfig&quot;: { # AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath. # Configuration of Advanced Datapath Observability features.
      &quot;enableMetrics&quot;: True or False, # Expose flow metrics on nodes
      &quot;enableRelay&quot;: True or False, # Enable Relay component
      &quot;relayMode&quot;: &quot;A String&quot;, # Method used to make Relay available
    },
    &quot;componentConfig&quot;: { # MonitoringComponentConfig is cluster monitoring component configuration. # Monitoring components configuration
      &quot;enableComponents&quot;: [ # Select components to collect metrics. An empty set would disable all monitoring.
        &quot;A String&quot;,
      ],
    },
    &quot;managedPrometheusConfig&quot;: { # ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus. # Enable Google Cloud Managed Service for Prometheus in the cluster.
      &quot;enabled&quot;: True or False, # Enable Managed Collection.
    },
  },
  &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
  &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
  &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
    &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
    &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
      &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
    },
    &quot;dnsConfig&quot;: { # DNSConfig contains the desired set of options for configuring clusterDNS. # DNSConfig contains clusterDNS config for this cluster.
      &quot;clusterDns&quot;: &quot;A String&quot;, # cluster_dns indicates which in-cluster DNS provider should be used.
      &quot;clusterDnsDomain&quot;: &quot;A String&quot;, # cluster_dns_domain is the suffix used for all cluster service records.
      &quot;clusterDnsScope&quot;: &quot;A String&quot;, # cluster_dns_scope indicates the scope of access to cluster DNS records.
    },
    &quot;enableFqdnNetworkPolicy&quot;: True or False, # Whether FQDN Network Policy is enabled on this cluster.
    &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
    &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
    &quot;enableMultiNetworking&quot;: True or False, # Whether multi-networking is enabled for this cluster.
    &quot;gatewayApiConfig&quot;: { # GatewayAPIConfig contains the desired config of Gateway API on this cluster. # GatewayAPIConfig contains the desired config of Gateway API on this cluster.
      &quot;channel&quot;: &quot;A String&quot;, # The Gateway API release channel to use for Gateway API.
    },
    &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
    &quot;networkPerformanceConfig&quot;: { # Configuration of network bandwidth tiers # Network bandwidth tier configuration.
      &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for NodePools in the cluster.
    },
    &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
    &quot;serviceExternalIpsConfig&quot;: { # Config to block services with externalIPs field. # ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not.
      &quot;enabled&quot;: True or False, # Whether Services with ExternalIPs field are allowed or not.
    },
    &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
  },
  &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
    &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
    &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
  },
  &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
    &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
      { # AcceleratorConfig represents a Hardware Accelerator request.
        &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
        &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
        &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
          &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
        },
        &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
        &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
          &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
          &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
        },
      },
    ],
    &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
      &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
    },
    &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
    &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
      &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
    },
    &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
    &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
    &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
      &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
    },
    &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
      &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
    },
    &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
      &quot;enabled&quot;: True or False, # Whether to use GCFS.
    },
    &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
      &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
    },
    &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
    &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
      &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
      &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
      &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
      &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
      &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
    },
    &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
      &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
      &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
      &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
    },
    &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
    &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
      &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
        &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
      },
    },
    &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
    &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
    &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
    &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
      &quot;A String&quot;,
    ],
    &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
    &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
      &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
      &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
      &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
        &quot;A String&quot;,
      ],
    },
    &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
      &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
      &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
    },
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
    &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
      &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
      &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
    },
    &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
      &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
        { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
          &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
          &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
          &quot;values&quot;: [ # Values for NodeAffinity.
            &quot;A String&quot;,
          ],
        },
      ],
    },
    &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
    &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
      &quot;A String&quot;,
    ],
    &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
      { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
        &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
        &quot;key&quot;: &quot;A String&quot;, # Key for taint.
        &quot;value&quot;: &quot;A String&quot;, # Value for taint.
      },
    ],
    &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
      &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
    },
    &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
      &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
    },
  },
  &quot;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
  &quot;nodePoolAutoConfig&quot;: { # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters. # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.
    &quot;networkTags&quot;: { # Collection of Compute Engine network tags that can be applied to a node&#x27;s underlying VM instance. # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035.
      &quot;tags&quot;: [ # List of network tags.
        &quot;A String&quot;,
      ],
    },
    &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies.
      &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  },
  &quot;nodePoolDefaults&quot;: { # Subset of Nodepool message that has defaults. # Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object.
    &quot;nodeConfigDefaults&quot;: { # Subset of NodeConfig message that has defaults. # Subset of NodeConfig message that has defaults.
      &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # GCFS (Google Container File System, also known as Riptide) options.
        &quot;enabled&quot;: True or False, # Whether to use GCFS.
      },
      &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration for node pools.
        &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
          &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
        },
      },
    },
  },
  &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
    { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;s), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.
      &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
        &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
        &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
        &quot;locationPolicy&quot;: &quot;A String&quot;, # Location policy used when scaling up a nodepool.
        &quot;maxNodeCount&quot;: 42, # Maximum number of nodes for one location in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
        &quot;minNodeCount&quot;: 42, # Minimum number of nodes for one location in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
        &quot;totalMaxNodeCount&quot;: 42, # Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
        &quot;totalMinNodeCount&quot;: 42, # Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
      },
      &quot;bestEffortProvisioning&quot;: { # Best effort provisioning. # Enable best effort provisioning for nodes
        &quot;enabled&quot;: True or False, # When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes
        &quot;minProvisionNodes&quot;: 42, # Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved.
      },
      &quot;conditions&quot;: [ # Which conditions caused the current node pool state.
        { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
          &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
          &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
          &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
        },
      ],
      &quot;config&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # The node configuration of the pool.
        &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
          { # AcceleratorConfig represents a Hardware Accelerator request.
            &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
            &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
            &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
              &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
            },
            &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
            &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
              &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
              &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
            },
          },
        ],
        &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
          &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
        },
        &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
          &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
        },
        &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
        &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
        &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
          &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
        },
        &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
          &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
        },
        &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
          &quot;enabled&quot;: True or False, # Whether to use GCFS.
        },
        &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
          &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
        },
        &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
        &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
          &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
          &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
          &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
          &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
          &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
        },
        &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
          &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
          &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
          &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
        },
        &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
        &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
          &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
            &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
          },
        },
        &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
        &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
        &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
          &quot;A String&quot;,
        ],
        &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
        &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
          &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
          &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
          &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
            &quot;A String&quot;,
          ],
        },
        &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
          &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
          &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
        &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
          &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
          &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
        },
        &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
          &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
            { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
              &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
              &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
              &quot;values&quot;: [ # Values for NodeAffinity.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
        &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
          &quot;A String&quot;,
        ],
        &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
          { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
            &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
            &quot;key&quot;: &quot;A String&quot;, # Key for taint.
            &quot;value&quot;: &quot;A String&quot;, # Value for taint.
          },
        ],
        &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
          &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
        },
        &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
          &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
        },
      },
      &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
      &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
      &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources.
        &quot;A String&quot;,
      ],
      &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
        &quot;A String&quot;,
      ],
      &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
        &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
        &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
        &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
          &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
          &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
        },
      },
      &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
        &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
      },
      &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
      &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
        &quot;additionalNodeNetworkConfigs&quot;: [ # We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface
          { # AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message
            &quot;network&quot;: &quot;A String&quot;, # Name of the VPC where the additional interface belongs
            &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional interface belongs
          },
        ],
        &quot;additionalPodNetworkConfigs&quot;: [ # We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node
          { # AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message
            &quot;maxPodsPerNode&quot;: { # Constraints applied to pods. # The maximum number of pods per node which use this pod network
              &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
            },
            &quot;secondaryPodRange&quot;: &quot;A String&quot;, # The name of the secondary range on the subnet which provides IP address for this pod range
            &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional pod network belongs
          },
        ],
        &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
        &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes
        &quot;networkPerformanceConfig&quot;: { # Configuration of all network bandwidth tiers # Network bandwidth tier configuration.
          &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for the NodePool.
        },
        &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
          &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
        },
        &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
        &quot;podIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
        &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
      },
      &quot;placementPolicy&quot;: { # PlacementPolicy defines the placement policy used by the node pool. # Specifies the node placement policy.
        &quot;policyName&quot;: &quot;A String&quot;, # If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned.
        &quot;tpuTopology&quot;: &quot;A String&quot;, # Optional. TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
        &quot;type&quot;: &quot;A String&quot;, # The type of placement.
      },
      &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
      &quot;queuedProvisioning&quot;: { # QueuedProvisioning defines the queued provisioning used by the node pool. # Specifies the configuration of queued provisioning.
        &quot;enabled&quot;: True or False, # Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
      &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
      &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
      &quot;updateInfo&quot;: { # UpdateInfo contains resource (instance groups, etc), status and other intermediate information relevant to a node pool upgrade. # Output only. [Output only] Update info contains relevant information during a node pool update.
        &quot;blueGreenInfo&quot;: { # Information relevant to blue-green upgrade. # Information of a blue-green upgrade.
          &quot;blueInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with blue pool.
            &quot;A String&quot;,
          ],
          &quot;bluePoolDeletionStartTime&quot;: &quot;A String&quot;, # Time to start deleting blue pool to complete blue-green upgrade, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
          &quot;greenInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with green pool.
            &quot;A String&quot;,
          ],
          &quot;greenPoolVersion&quot;: &quot;A String&quot;, # Version of green pool.
          &quot;phase&quot;: &quot;A String&quot;, # Current blue-green upgrade phase.
        },
      },
      &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Upgrade settings control disruption and speed of the upgrade.
        &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
          &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
          &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
            &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
            &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
            &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
          },
        },
        &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
        &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
        &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
      },
      &quot;version&quot;: &quot;A String&quot;, # The version of Kubernetes running on this NodePool&#x27;s nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).
    },
  ],
  &quot;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
    &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
      &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
      &quot;filter&quot;: { # Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent # Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent
        &quot;eventType&quot;: [ # Event types to allowlist.
          &quot;A String&quot;,
        ],
      },
      &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
    },
  },
  &quot;parentProductConfig&quot;: { # ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster. # The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster.
    &quot;labels&quot;: { # Labels contain the configuration of the parent product.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;productName&quot;: &quot;A String&quot;, # Name of the parent product associated with the cluster.
  },
  &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
    &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
    &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
    &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
      &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
    },
    &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
    &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
    &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
    &quot;privateEndpointSubnetwork&quot;: &quot;A String&quot;, # Subnet to provision the master&#x27;s private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format.
    &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
  },
  &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version.
    &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
  },
  &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
    &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
      &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
    },
    &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
      &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
    },
    &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
  },
  &quot;securityPostureConfig&quot;: { # SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API. # Enable/Disable Security Posture API features for the cluster.
    &quot;mode&quot;: &quot;A String&quot;, # Sets which mode to use for Security Posture features.
    &quot;vulnerabilityMode&quot;: &quot;A String&quot;, # Sets which mode to use for vulnerability scanning.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
  &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
  &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
    &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
  },
  &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
  &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
  &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
  &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
  &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
    &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
  },
  &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
    &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
  },
  &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="getJwks">getJwks(parent, x__xgafv=None)</code>
  <pre>Gets the public component of the cluster signing keys in JSON Web Key format. This API is not yet intended for general use, and is not available for all clusters.

Args:
  parent: string, The cluster (project, location, cluster name) to get keys for. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc 7517
  &quot;cacheHeader&quot;: { # RFC-2616: cache control support # OnePlatform automatically extracts this field and uses it to set the HTTP Cache-Control header.
    &quot;age&quot;: &quot;A String&quot;, # 14.6 response cache age, in seconds since the response is generated
    &quot;directive&quot;: &quot;A String&quot;, # 14.9 request and response directives
    &quot;expires&quot;: &quot;A String&quot;, # 14.21 response cache expires, in RFC 1123 date format
  },
  &quot;keys&quot;: [ # The public component of the keys used by the cluster to sign token requests.
    { # Jwk is a JSON Web Key as specified in RFC 7517
      &quot;alg&quot;: &quot;A String&quot;, # Algorithm.
      &quot;crv&quot;: &quot;A String&quot;, # Used for ECDSA keys.
      &quot;e&quot;: &quot;A String&quot;, # Used for RSA keys.
      &quot;kid&quot;: &quot;A String&quot;, # Key ID.
      &quot;kty&quot;: &quot;A String&quot;, # Key Type.
      &quot;n&quot;: &quot;A String&quot;, # Used for RSA keys.
      &quot;use&quot;: &quot;A String&quot;, # Permitted uses for the public keys.
      &quot;x&quot;: &quot;A String&quot;, # Used for ECDSA keys.
      &quot;y&quot;: &quot;A String&quot;, # Used for ECDSA keys.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, projectId=None, x__xgafv=None, zone=None)</code>
  <pre>Lists all clusters owned by a project in either the specified zone or all zones.

Args:
  parent: string, The parent (project and location) where the clusters will be listed. Specified in the format `projects/*/locations/*`. Location &quot;-&quot; matches all zones and all regions. (required)
  projectId: string, Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the parent field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  zone: string, Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides, or &quot;-&quot; for all zones. This field has been deprecated and replaced by the parent field.

Returns:
  An object of the form:

    { # ListClustersResponse is the result of ListClustersRequest.
  &quot;clusters&quot;: [ # A list of clusters in the project in the specified zone, or across all ones.
    { # A Google Kubernetes Engine cluster.
      &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
        &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
          &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
          &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
        },
        &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
          &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
        },
        &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
          &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
        },
        &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
          &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
        },
        &quot;gcpFilestoreCsiDriverConfig&quot;: { # Configuration for the GCP Filestore CSI driver. # Configuration for the GCP Filestore CSI driver.
          &quot;enabled&quot;: True or False, # Whether the GCP Filestore CSI driver is enabled for this cluster.
        },
        &quot;gcsFuseCsiDriverConfig&quot;: { # Configuration for the Cloud Storage Fuse CSI driver. # Configuration for the Cloud Storage Fuse CSI driver.
          &quot;enabled&quot;: True or False, # Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
        },
        &quot;gkeBackupAgentConfig&quot;: { # Configuration for the Backup for GKE Agent. # Configuration for the Backup for GKE agent addon.
          &quot;enabled&quot;: True or False, # Whether the Backup for GKE agent is enabled for this cluster.
        },
        &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
          &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
        },
        &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
          &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
        },
        &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
          &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
        },
        &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
          &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
        },
      },
      &quot;authenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
        &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
        &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
      },
      &quot;autopilot&quot;: { # Autopilot is the configuration for Autopilot settings on the cluster. # Autopilot configuration for the cluster.
        &quot;enabled&quot;: True or False, # Enable Autopilot
        &quot;workloadPolicyConfig&quot;: { # WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters. # Workload policy configuration for Autopilot.
          &quot;allowNetAdmin&quot;: True or False, # If true, workloads can use NET_ADMIN capability.
        },
      },
      &quot;autoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
        &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
          &quot;A String&quot;,
        ],
        &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
          &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, # The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
          &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
          &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
          &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
          &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
          &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
            &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
            &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
            &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
              &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
              &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
            },
          },
          &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass &quot;automatic&quot; as field value.
          &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
            &quot;A String&quot;,
          ],
          &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
          &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
            &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
            &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
          },
          &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Specifies the upgrade settings for NAP created node pools
            &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
              &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
              &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
                &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
                &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
                &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
              },
            },
            &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
            &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
            &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
          },
        },
        &quot;autoscalingProfile&quot;: &quot;A String&quot;, # Defines autoscaling behaviour.
        &quot;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
        &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
          { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
            &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
            &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
            &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
          },
        ],
      },
      &quot;binaryAuthorization&quot;: { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
        &quot;enabled&quot;: True or False, # This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
        &quot;evaluationMode&quot;: &quot;A String&quot;, # Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.
      },
      &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # The IP address range of the container pods in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`). Leave blank to have one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
      &quot;conditions&quot;: [ # Which conditions caused the current cluster state.
        { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
          &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
          &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
          &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
        },
      ],
      &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled.
        &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
      },
      &quot;costManagementConfig&quot;: { # Configuration for fine-grained cost management feature. # Configuration for the fine-grained cost management feature.
        &quot;enabled&quot;: True or False, # Whether the feature is enabled or not.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      &quot;currentMasterVersion&quot;: &quot;A String&quot;, # [Output only] The current software version of the master endpoint.
      &quot;currentNodeCount&quot;: 42, # [Output only] The number of nodes currently in the cluster. Deprecated. Call Kubernetes API directly to retrieve node information.
      &quot;currentNodeVersion&quot;: &quot;A String&quot;, # [Output only] Deprecated, use [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools) instead. The current version of the node software components. If they are currently at multiple versions because they&#x27;re in the process of being upgraded, this reflects the minimum version of all nodes.
      &quot;databaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
        &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
        &quot;state&quot;: &quot;A String&quot;, # The desired state of etcd encryption.
      },
      &quot;defaultMaxPodsConstraint&quot;: { # Constraints applied to pods. # The default constraint on the maximum number of pods that can be run simultaneously on a node in the node pool of this cluster. Only honored if cluster created with IP Alias support.
        &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
      },
      &quot;description&quot;: &quot;A String&quot;, # An optional description of this cluster.
      &quot;enableK8sBetaApis&quot;: { # K8sBetaAPIConfig , configuration for beta APIs # Beta APIs Config
        &quot;enabledApis&quot;: [ # Enabled k8s beta APIs.
          &quot;A String&quot;,
        ],
      },
      &quot;enableKubernetesAlpha&quot;: True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha API groups (e.g. v1alpha1) and features that may not be production ready in the kubernetes version of the master and nodes. The cluster has no SLA for uptime and master/node upgrades are disabled. Alpha enabled clusters are automatically deleted thirty days after creation.
      &quot;enableTpu&quot;: True or False, # Enable the ability to use Cloud TPUs in this cluster.
      &quot;endpoint&quot;: &quot;A String&quot;, # [Output only] The IP address of this cluster&#x27;s master endpoint. The endpoint can be accessed from the internet at `https://username:password@endpoint/`. See the `masterAuth` property of this resource for username and password information.
      &quot;enterpriseConfig&quot;: { # EnterpriseConfig is the cluster enterprise configuration. # GKE Enterprise Configuration.
        &quot;clusterTier&quot;: &quot;A String&quot;, # Output only. [Output only] cluster_tier specifies the premium tier of the cluster.
      },
      &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of cluster fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
      &quot;expireTime&quot;: &quot;A String&quot;, # [Output only] The time the cluster will be automatically deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      &quot;fleet&quot;: { # Fleet is the fleet configuration for the cluster. # Fleet information for the cluster.
        &quot;membership&quot;: &quot;A String&quot;, # [Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
        &quot;preRegistered&quot;: True or False, # [Output only] Whether the cluster has been registered through the fleet API.
        &quot;project&quot;: &quot;A String&quot;, # The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique id for the cluster.
      &quot;identityServiceConfig&quot;: { # IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API # Configuration for Identity Service component.
        &quot;enabled&quot;: True or False, # Whether to enable the Identity Service component
      },
      &quot;initialClusterVersion&quot;: &quot;A String&quot;, # The initial Kubernetes version for this cluster. Valid versions are those found in validMasterVersions returned by getServerConfig. The version can be upgraded over time; such upgrades are reflected in currentMasterVersion and currentNodeVersion. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;&quot;,&quot;-&quot;: picks the default Kubernetes version
      &quot;initialNodeCount&quot;: 42, # The number of nodes to create in this cluster. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;node_config&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. This field is deprecated, use node_pool.initial_node_count instead.
      &quot;instanceGroupUrls&quot;: [ # Deprecated. Use node_pools.instance_group_urls.
        &quot;A String&quot;,
      ],
      &quot;ipAllocationPolicy&quot;: { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
        &quot;additionalPodRangesConfig&quot;: { # AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message. # Output only. [Output only] The additional pod ranges that are added to the cluster. These pod ranges can be used by new node pools to allocate pod IPs automatically. Once the range is removed it will not show up in IPAllocationPolicy.
          &quot;podRangeInfo&quot;: [ # Output only. [Output only] Information for additional pod range.
            { # RangeInfo contains the range name and the range utilization by this cluster.
              &quot;rangeName&quot;: &quot;A String&quot;, # Output only. [Output only] Name of a range.
              &quot;utilization&quot;: 3.14, # Output only. [Output only] The utilization of the range.
            },
          ],
          &quot;podRangeNames&quot;: [ # Name for pod secondary ipv4 range which has the actual range defined ahead.
            &quot;A String&quot;,
          ],
        },
        &quot;clusterIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use cluster_ipv4_cidr_block.
        &quot;clusterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for the cluster pod IPs. If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;clusterSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used for the cluster CIDR block. The secondary range will be used for pod IP addresses. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
        &quot;createSubnetwork&quot;: True or False, # Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.
        &quot;defaultPodIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the cluster default IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
        &quot;ipv6AccessType&quot;: &quot;A String&quot;, # The ipv6 access type (internal or external) when create_subnetwork is true
        &quot;nodeIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use node_ipv4_cidr_block.
        &quot;nodeIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the instance IPs in this cluster. This is applicable only if `create_subnetwork` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the cluster. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is doubled and then rounded off to next power of 2 to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
          &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
        },
        &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # This field is deprecated, use services_ipv4_cidr_block.
        &quot;servicesIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the services IPs in this cluster. If blank, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;servicesIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The services IPv6 CIDR block for the cluster.
        &quot;servicesSecondaryRangeName&quot;: &quot;A String&quot;, # The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.
        &quot;stackType&quot;: &quot;A String&quot;, # The IP stack type of the cluster
        &quot;subnetIpv6CidrBlock&quot;: &quot;A String&quot;, # Output only. [Output only] The subnet&#x27;s IPv6 CIDR block used by nodes and pods.
        &quot;subnetworkName&quot;: &quot;A String&quot;, # A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.
        &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range of the Cloud TPUs in this cluster. If unspecified, a range will be automatically chosen with the default size. This field is only applicable when `use_ip_aliases` is true. If unspecified, the range will use the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range to use.
        &quot;useIpAliases&quot;: True or False, # Whether alias IPs will be used for pod IPs in the cluster. This is used in conjunction with use_routes. It cannot be true if use_routes is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
        &quot;useRoutes&quot;: True or False, # Whether routes will be used for pod IPs in the cluster. This is used in conjunction with use_ip_aliases. It cannot be true if use_ip_aliases is true. If both use_ip_aliases and use_routes are false, then the server picks the default IP allocation mode
      },
      &quot;labelFingerprint&quot;: &quot;A String&quot;, # The fingerprint of the set of labels for this cluster.
      &quot;legacyAbac&quot;: { # Configuration for the legacy Attribute Based Access Control authorization mode. # Configuration for the legacy ABAC authorization mode.
        &quot;enabled&quot;: True or False, # Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM.
      },
      &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
      &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This field provides a default value if [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) are not specified during node pool creation. Warning: changing cluster locations will update the [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations) of all node pools and will result in nodes being added and/or removed.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # LoggingConfig is cluster logging configuration. # Logging configuration for the cluster.
        &quot;componentConfig&quot;: { # LoggingComponentConfig is cluster logging component configuration. # Logging components configuration
          &quot;enableComponents&quot;: [ # Select components to collect logs. An empty set would disable all logging.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;loggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
      &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
        &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
        &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
          &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
            &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
            &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
          },
          &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
            &quot;a_key&quot;: { # Represents an arbitrary window of time.
              &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
              &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
                &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
              },
              &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
            },
          },
          &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
            &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
            &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
              &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
              &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
                &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
              },
              &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
            },
          },
        },
      },
      &quot;masterAuth&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # The authentication information for accessing the master endpoint. If unspecified, the defaults are used: For clusters before v1.12, if master_auth is unspecified, `username` will be set to &quot;admin&quot;, a random password will be generated, and a client certificate will be issued.
        &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
        &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
          &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
        },
        &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
        &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
        &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
        &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
      },
      &quot;masterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The configuration options for master authorized networks feature.
        &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
          { # CidrBlock contains an optional name and one CIDR block.
            &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
            &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
          },
        ],
        &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
        &quot;gcpPublicCidrsAccessEnabled&quot;: True or False, # Whether master is accessbile via Google Compute Engine Public IP addresses.
      },
      &quot;meshCertificates&quot;: { # Configuration for issuance of mTLS keys and certificates to Kubernetes pods. # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
        &quot;enableCertificates&quot;: True or False, # enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty).
      },
      &quot;monitoringConfig&quot;: { # MonitoringConfig is cluster monitoring configuration. # Monitoring configuration for the cluster.
        &quot;advancedDatapathObservabilityConfig&quot;: { # AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath. # Configuration of Advanced Datapath Observability features.
          &quot;enableMetrics&quot;: True or False, # Expose flow metrics on nodes
          &quot;enableRelay&quot;: True or False, # Enable Relay component
          &quot;relayMode&quot;: &quot;A String&quot;, # Method used to make Relay available
        },
        &quot;componentConfig&quot;: { # MonitoringComponentConfig is cluster monitoring component configuration. # Monitoring components configuration
          &quot;enableComponents&quot;: [ # Select components to collect metrics. An empty set would disable all monitoring.
            &quot;A String&quot;,
          ],
        },
        &quot;managedPrometheusConfig&quot;: { # ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus. # Enable Google Cloud Managed Service for Prometheus in the cluster.
          &quot;enabled&quot;: True or False, # Enable Managed Collection.
        },
      },
      &quot;monitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
      &quot;name&quot;: &quot;A String&quot;, # The name of this cluster. The name must be unique within this project and location (e.g. zone or region), and can be up to 40 characters with the following restrictions: * Lowercase letters, numbers, and hyphens only. * Must start with a letter. * Must end with a number or a letter.
      &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. If left unspecified, the `default` network will be used.
      &quot;networkConfig&quot;: { # NetworkConfig reports the relative names of network &amp; subnetwork. # Configuration for cluster networking.
        &quot;datapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.
        &quot;defaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when default_snat_status is disabled. When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.
          &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
        },
        &quot;dnsConfig&quot;: { # DNSConfig contains the desired set of options for configuring clusterDNS. # DNSConfig contains clusterDNS config for this cluster.
          &quot;clusterDns&quot;: &quot;A String&quot;, # cluster_dns indicates which in-cluster DNS provider should be used.
          &quot;clusterDnsDomain&quot;: &quot;A String&quot;, # cluster_dns_domain is the suffix used for all cluster service records.
          &quot;clusterDnsScope&quot;: &quot;A String&quot;, # cluster_dns_scope indicates the scope of access to cluster DNS records.
        },
        &quot;enableFqdnNetworkPolicy&quot;: True or False, # Whether FQDN Network Policy is enabled on this cluster.
        &quot;enableIntraNodeVisibility&quot;: True or False, # Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.
        &quot;enableL4ilbSubsetting&quot;: True or False, # Whether L4ILB Subsetting is enabled for this cluster.
        &quot;enableMultiNetworking&quot;: True or False, # Whether multi-networking is enabled for this cluster.
        &quot;gatewayApiConfig&quot;: { # GatewayAPIConfig contains the desired config of Gateway API on this cluster. # GatewayAPIConfig contains the desired config of Gateway API on this cluster.
          &quot;channel&quot;: &quot;A String&quot;, # The Gateway API release channel to use for Gateway API.
        },
        &quot;network&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine network(https://cloud.google.com/compute/docs/networks-and-firewalls#networks) to which the cluster is connected. Example: projects/my-project/global/networks/my-network
        &quot;networkPerformanceConfig&quot;: { # Configuration of network bandwidth tiers # Network bandwidth tier configuration.
          &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for NodePools in the cluster.
        },
        &quot;privateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4)
        &quot;serviceExternalIpsConfig&quot;: { # Config to block services with externalIPs field. # ServiceExternalIPsConfig specifies if services with externalIPs field are blocked or not.
          &quot;enabled&quot;: True or False, # Whether Services with ExternalIPs field are allowed or not.
        },
        &quot;subnetwork&quot;: &quot;A String&quot;, # Output only. The relative name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the cluster is connected. Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
      },
      &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Configuration options for the NetworkPolicy feature.
        &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
        &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
      },
      &quot;nodeConfig&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # Parameters used in creating the cluster&#x27;s nodes. For requests, this field should only be used in lieu of a &quot;node_pool&quot; object, since this configuration (along with the &quot;initial_node_count&quot;) will be used to create a &quot;NodePool&quot; object with an auto-generated name. Do not use this and a node_pool at the same time. For responses, this field will be populated with the node configuration of the first node pool. (For configuration of each node pool, see `node_pool.config`) If unspecified, the defaults are used. This field is deprecated, use node_pool.config instead.
        &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
          { # AcceleratorConfig represents a Hardware Accelerator request.
            &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
            &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
            &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
              &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
            },
            &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
            &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
              &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
              &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
            },
          },
        ],
        &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
          &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
        },
        &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
          &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
        },
        &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
        &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
        &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
          &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
        },
        &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
          &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
        },
        &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
          &quot;enabled&quot;: True or False, # Whether to use GCFS.
        },
        &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
          &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
        },
        &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
        &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
          &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
          &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
          &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
          &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
          &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
        },
        &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
          &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
          &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
          &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
        },
        &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
        &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
          &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
            &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
          },
        },
        &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
        &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
        &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
          &quot;A String&quot;,
        ],
        &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
        &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
          &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
          &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
          &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
            &quot;A String&quot;,
          ],
        },
        &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
          &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
          &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
        &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
          &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
          &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
        },
        &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
          &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
            { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
              &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
              &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
              &quot;values&quot;: [ # Values for NodeAffinity.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
        &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
          &quot;A String&quot;,
        ],
        &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
          { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
            &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
            &quot;key&quot;: &quot;A String&quot;, # Key for taint.
            &quot;value&quot;: &quot;A String&quot;, # Value for taint.
          },
        ],
        &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
          &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
        },
        &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
          &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
        },
      },
      &quot;nodeIpv4CidrSize&quot;: 42, # [Output only] The size of the address space on each node for hosting containers. This is provisioned from within the `container_ipv4_cidr` range. This field will only be set when cluster is in route-based network mode.
      &quot;nodePoolAutoConfig&quot;: { # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters. # Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.
        &quot;networkTags&quot;: { # Collection of Compute Engine network tags that can be applied to a node&#x27;s underlying VM instance. # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster creation. Each tag within the list must comply with RFC1035.
          &quot;tags&quot;: [ # List of network tags.
            &quot;A String&quot;,
          ],
        },
        &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # Resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies.
          &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;nodePoolDefaults&quot;: { # Subset of Nodepool message that has defaults. # Default NodePool settings for the entire cluster. These settings are overridden if specified on the specific NodePool object.
        &quot;nodeConfigDefaults&quot;: { # Subset of NodeConfig message that has defaults. # Subset of NodeConfig message that has defaults.
          &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # GCFS (Google Container File System, also known as Riptide) options.
            &quot;enabled&quot;: True or False, # Whether to use GCFS.
          },
          &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration for node pools.
            &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
              &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
            },
          },
        },
      },
      &quot;nodePools&quot;: [ # The node pools associated with this cluster. This field should not be set if &quot;node_config&quot; or &quot;initial_node_count&quot; are specified.
        { # NodePool contains the name and configuration for a cluster&#x27;s node pool. Node pools are a set of nodes (i.e. VM&#x27;s), with a common configuration and specification, under the control of the cluster master. They may have a set of Kubernetes labels applied to them, which may be used to reference them during pod scheduling. They may also be resized up or down, to accommodate the workload.
          &quot;autoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for this NodePool. Autoscaler is enabled only if a valid configuration is present.
            &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
            &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
            &quot;locationPolicy&quot;: &quot;A String&quot;, # Location policy used when scaling up a nodepool.
            &quot;maxNodeCount&quot;: 42, # Maximum number of nodes for one location in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
            &quot;minNodeCount&quot;: 42, # Minimum number of nodes for one location in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
            &quot;totalMaxNodeCount&quot;: 42, # Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
            &quot;totalMinNodeCount&quot;: 42, # Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
          },
          &quot;bestEffortProvisioning&quot;: { # Best effort provisioning. # Enable best effort provisioning for nodes
            &quot;enabled&quot;: True or False, # When this is enabled, cluster/node pool creations will ignore non-fatal errors like stockout to best provision as many nodes as possible right now and eventually bring up all target number of nodes
            &quot;minProvisionNodes&quot;: 42, # Minimum number of nodes to be provisioned to be considered as succeeded, and the rest of nodes will be provisioned gradually and eventually when stockout issue has been resolved.
          },
          &quot;conditions&quot;: [ # Which conditions caused the current node pool state.
            { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
              &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
              &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
              &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
            },
          ],
          &quot;config&quot;: { # Parameters that describe the nodes in a cluster. GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use AutoprovisioningNodePoolDefaults instead. # The node configuration of the pool.
            &quot;accelerators&quot;: [ # A list of hardware accelerators to be attached to each node. See https://cloud.google.com/compute/docs/gpus for more information about support for GPUs.
              { # AcceleratorConfig represents a Hardware Accelerator request.
                &quot;acceleratorCount&quot;: &quot;A String&quot;, # The number of the accelerator cards exposed to an instance.
                &quot;acceleratorType&quot;: &quot;A String&quot;, # The accelerator type resource name. List of supported accelerators [here](https://cloud.google.com/compute/docs/gpus)
                &quot;gpuDriverInstallationConfig&quot;: { # GPUDriverInstallationConfig specifies the version of GPU driver to be auto installed. # The configuration for auto installation of GPU driver.
                  &quot;gpuDriverVersion&quot;: &quot;A String&quot;, # Mode for how the GPU driver is installed.
                },
                &quot;gpuPartitionSize&quot;: &quot;A String&quot;, # Size of partitions to create on the GPU. Valid values are described in the NVIDIA [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
                &quot;gpuSharingConfig&quot;: { # GPUSharingConfig represents the GPU sharing configuration for Hardware Accelerators. # The configuration for GPU sharing options.
                  &quot;gpuSharingStrategy&quot;: &quot;A String&quot;, # The type of GPU sharing strategy to enable on the GPU node.
                  &quot;maxSharedClientsPerGpu&quot;: &quot;A String&quot;, # The max number of containers that can share a physical GPU.
                },
              },
            ],
            &quot;advancedMachineFeatures&quot;: { # Specifies options for controlling advanced machine features. # Advanced features for the Compute Engine VM.
              &quot;threadsPerCore&quot;: &quot;A String&quot;, # The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
            },
            &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, #  The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
            &quot;confidentialNodes&quot;: { # ConfidentialNodes is configuration for the confidential nodes feature, which makes nodes run on confidential VMs. # Confidential nodes config. All the nodes in the node pool will be Confidential VM once enabled.
              &quot;enabled&quot;: True or False, # Whether Confidential Nodes feature is enabled.
            },
            &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
            &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
            &quot;ephemeralStorageLocalSsdConfig&quot;: { # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral storage using Local SSDs. # Parameters for the node ephemeral storage using Local SSDs. If unspecified, ephemeral storage is backed by the boot disk.
              &quot;localSsdCount&quot;: 42, # Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
            },
            &quot;fastSocket&quot;: { # Configuration of Fast Socket feature. # Enable or disable NCCL fast socket for the node pool.
              &quot;enabled&quot;: True or False, # Whether Fast Socket features are enabled in the node pool.
            },
            &quot;gcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # Google Container File System (image streaming) configs.
              &quot;enabled&quot;: True or False, # Whether to use GCFS.
            },
            &quot;gvnic&quot;: { # Configuration of gVNIC feature. # Enable or disable gvnic in the node pool.
              &quot;enabled&quot;: True or False, # Whether gVNIC features are enabled in the node pool.
            },
            &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for this node. Note that for a given image type, the latest version of it will be used. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
            &quot;kubeletConfig&quot;: { # Node kubelet configs. # Node kubelet configs.
              &quot;cpuCfsQuota&quot;: True or False, # Enable CPU CFS quota enforcement for containers that specify CPU limits. This option is enabled by default which makes kubelet use CFS quota (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to enforce container CPU limits. Otherwise, CPU limits will not be enforced at all. Disable this option to mitigate CPU throttling problems while still having your pods to be in Guaranteed QoS class by specifying the CPU limits. The default value is &#x27;true&#x27; if unspecified.
              &quot;cpuCfsQuotaPeriod&quot;: &quot;A String&quot;, # Set the CPU CFS quota period value &#x27;cpu.cfs_period_us&#x27;. The string must be a sequence of decimal numbers, each with optional fraction and a unit suffix, such as &quot;300ms&quot;. Valid time units are &quot;ns&quot;, &quot;us&quot; (or &quot;µs&quot;), &quot;ms&quot;, &quot;s&quot;, &quot;m&quot;, &quot;h&quot;. The value must be a positive duration.
              &quot;cpuManagerPolicy&quot;: &quot;A String&quot;, # Control the CPU management policy on the node. See https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/ The following values are allowed. * &quot;none&quot;: the default, which represents the existing scheduling behavior. * &quot;static&quot;: allows pods with certain resource characteristics to be granted increased CPU affinity and exclusivity on the node. The default value is &#x27;none&#x27; if unspecified.
              &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
              &quot;podPidsLimit&quot;: &quot;A String&quot;, # Set the Pod PID limits. See https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits Controls the maximum number of processes allowed to run in a pod. The value must be greater than or equal to 1024 and less than 4194304.
            },
            &quot;labels&quot;: { # The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node. In case of conflict in label keys, the applied set may differ depending on the Kubernetes version -- it&#x27;s best to assume the behavior is undefined and conflicts should be avoided. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;linuxNodeConfig&quot;: { # Parameters that can be configured on Linux nodes. # Parameters that can be configured on Linux nodes.
              &quot;cgroupMode&quot;: &quot;A String&quot;, # cgroup_mode specifies the cgroup mode to be used on the node.
              &quot;sysctls&quot;: { # The Linux kernel parameters to be applied to the nodes and all pods running on the nodes. The following parameters are supported. net.core.busy_poll net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max net.core.wmem_default net.core.wmem_max net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_tw_reuse
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;localNvmeSsdBlockConfig&quot;: { # LocalNvmeSsdBlockConfig contains configuration for using raw-block local NVMe SSDs # Parameters for using raw-block Local NVMe SSDs.
              &quot;localSsdCount&quot;: 42, # Number of local NVMe SSDs to use. The limit for this value is dependent upon the maximum number of disk available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information. A zero (or unset) value has different meanings depending on machine type being used: 1. For pre-Gen3 machines, which support flexible numbers of local ssds, zero (or unset) means to disable using local SSDs as ephemeral storage. 2. For Gen3 machines which dictate a specific number of local ssds, zero (or unset) means to use the default number of local ssds that goes with that machine type. For example, for a c3-standard-8-lssd machine, 2 local ssds would be provisioned. For c3-standard-8 (which doesn&#x27;t support local ssds), 0 will be provisioned. See https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds for more info.
            },
            &quot;localSsdCount&quot;: 42, # The number of local SSD disks to be attached to the node. The limit for this value is dependent upon the maximum number of disks available on a machine per zone. See: https://cloud.google.com/compute/docs/disks/local-ssd for more information.
            &quot;loggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # Logging configuration.
              &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
                &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
              },
            },
            &quot;machineType&quot;: &quot;A String&quot;, # The name of a Google Compute Engine [machine type](https://cloud.google.com/compute/docs/machine-types) If unspecified, the default machine type is `e2-medium`.
            &quot;metadata&quot;: { # The metadata key/value pairs assigned to instances in the cluster. Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128 bytes in length. These are reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project or be one of the reserved keys: - &quot;cluster-location&quot; - &quot;cluster-name&quot; - &quot;cluster-uid&quot; - &quot;configure-sh&quot; - &quot;containerd-configure-sh&quot; - &quot;enable-os-login&quot; - &quot;gci-ensure-gke-docker&quot; - &quot;gci-metrics-enabled&quot; - &quot;gci-update-strategy&quot; - &quot;instance-template&quot; - &quot;kube-env&quot; - &quot;startup-script&quot; - &quot;user-data&quot; - &quot;disable-address-manager&quot; - &quot;windows-startup-script-ps1&quot; - &quot;common-psm1&quot; - &quot;k8s-node-setup-psm1&quot; - &quot;install-ssh-psm1&quot; - &quot;user-profile-psm1&quot; Values are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on them is that each value&#x27;s size must be less than or equal to 32 KB. The total size of all keys and values must be less than 512 KB.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as `minCpuPlatform: &quot;Intel Haswell&quot;` or `minCpuPlatform: &quot;Intel Sandy Bridge&quot;`. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
            &quot;nodeGroup&quot;: &quot;A String&quot;, # Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
            &quot;oauthScopes&quot;: [ # The set of Google API scopes to be made available on all of the node VMs under the &quot;default&quot; service account. The following scopes are recommended, but not required, and by default are not included: * `https://www.googleapis.com/auth/compute` is required for mounting persistent storage on your nodes. * `https://www.googleapis.com/auth/devstorage.read_only` is required for communicating with **gcr.io** (the [Google Container Registry](https://cloud.google.com/container-registry/)). If unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring are enabled, in which case their required scopes will be added.
              &quot;A String&quot;,
            ],
            &quot;preemptible&quot;: True or False, # Whether the nodes are created as preemptible VM instances. See: https://cloud.google.com/compute/docs/instances/preemptible for more information about preemptible VM instances.
            &quot;reservationAffinity&quot;: { # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) is the configuration of desired reservation which instances could take capacity from. # The optional reservation affinity. Setting this field will apply the specified [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources) to this node pool.
              &quot;consumeReservationType&quot;: &quot;A String&quot;, # Corresponds to the type of reservation consumption.
              &quot;key&quot;: &quot;A String&quot;, # Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify &quot;compute.googleapis.com/reservation-name&quot; as the key and specify the name of your reservation as its value.
              &quot;values&quot;: [ # Corresponds to the label value(s) of reservation resource(s).
                &quot;A String&quot;,
              ],
            },
            &quot;resourceLabels&quot;: { # The resource labels for the node pool to use to annotate any related Google Compute Engine resources.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;resourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # A map of resource manager tag keys and values to be attached to the nodes.
              &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;sandboxConfig&quot;: { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
              &quot;type&quot;: &quot;A String&quot;, # Type of the sandbox to use for the node.
            },
            &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs. Specify the email address of the Service Account; otherwise, if no Service Account is specified, the &quot;default&quot; service account is used.
            &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
              &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
              &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
            },
            &quot;soleTenantConfig&quot;: { # SoleTenantConfig contains the NodeAffinities to specify what shared sole tenant node groups should back the node pool. # Parameters for node pools to be backed by shared sole tenant node groups.
              &quot;nodeAffinities&quot;: [ # NodeAffinities used to match to a shared sole tenant node group.
                { # Specifies the NodeAffinity key, values, and affinity operator according to [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
                  &quot;key&quot;: &quot;A String&quot;, # Key for NodeAffinity.
                  &quot;operator&quot;: &quot;A String&quot;, # Operator for NodeAffinity.
                  &quot;values&quot;: [ # Values for NodeAffinity.
                    &quot;A String&quot;,
                  ],
                },
              ],
            },
            &quot;spot&quot;: True or False, # Spot flag for enabling Spot VM, which is a rebrand of the existing preemptible flag.
            &quot;tags&quot;: [ # The list of instance tags applied to all nodes. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during cluster or node pool creation. Each tag within the list must comply with RFC1035.
              &quot;A String&quot;,
            ],
            &quot;taints&quot;: [ # List of kubernetes taints to be applied to each node. For more information, including usage and the valid values, see: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
              { # Kubernetes taint is composed of three fields: key, value, and effect. Effect can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. See [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration) for more information, including usage and the valid values.
                &quot;effect&quot;: &quot;A String&quot;, # Effect for taint.
                &quot;key&quot;: &quot;A String&quot;, # Key for taint.
                &quot;value&quot;: &quot;A String&quot;, # Value for taint.
              },
            ],
            &quot;windowsNodeConfig&quot;: { # Parameters that can be configured on Windows nodes. Windows Node Config that define the parameters that will be used to configure the Windows node pool settings # Parameters that can be configured on Windows nodes.
              &quot;osVersion&quot;: &quot;A String&quot;, # OSVersion specifies the Windows node config to be used on the node
            },
            &quot;workloadMetadataConfig&quot;: { # WorkloadMetadataConfig defines the metadata configuration to expose to workloads on the node pool. # The workload metadata configuration for this node.
              &quot;mode&quot;: &quot;A String&quot;, # Mode is the configuration for how to expose metadata to workloads running on the node pool.
            },
          },
          &quot;etag&quot;: &quot;A String&quot;, # This checksum is computed by the server based on the value of node pool fields, and may be sent on update requests to ensure the client has an up-to-date value before proceeding.
          &quot;initialNodeCount&quot;: 42, # The initial node count for the pool. You must ensure that your Compute Engine [resource quota](https://cloud.google.com/compute/quotas) is sufficient for this number of instances. You must also have available firewall and routes quota.
          &quot;instanceGroupUrls&quot;: [ # [Output only] The resource URLs of the [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with this node pool. During the node pool blue-green upgrade operation, the URLs contain both blue and green resources.
            &quot;A String&quot;,
          ],
          &quot;locations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes should be located. If this value is unspecified during node pool creation, the [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations) value will be used, instead. Warning: changing node pool locations will result in nodes being added and/or removed.
            &quot;A String&quot;,
          ],
          &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # NodeManagement configuration for this NodePool.
            &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
            &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
            &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
              &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
              &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
            },
          },
          &quot;maxPodsConstraint&quot;: { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run simultaneously on a node in the node pool.
            &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
          },
          &quot;name&quot;: &quot;A String&quot;, # The name of the node pool.
          &quot;networkConfig&quot;: { # Parameters for node pool-level network config. # Networking configuration for this NodePool. If specified, it overrides the cluster-level defaults.
            &quot;additionalNodeNetworkConfigs&quot;: [ # We specify the additional node networks for this node pool using this list. Each node network corresponds to an additional interface
              { # AdditionalNodeNetworkConfig is the configuration for additional node networks within the NodeNetworkConfig message
                &quot;network&quot;: &quot;A String&quot;, # Name of the VPC where the additional interface belongs
                &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional interface belongs
              },
            ],
            &quot;additionalPodNetworkConfigs&quot;: [ # We specify the additional pod networks for this node pool using this list. Each pod network corresponds to an additional alias IP range for the node
              { # AdditionalPodNetworkConfig is the configuration for additional pod networks within the NodeNetworkConfig message
                &quot;maxPodsPerNode&quot;: { # Constraints applied to pods. # The maximum number of pods per node which use this pod network
                  &quot;maxPodsPerNode&quot;: &quot;A String&quot;, # Constraint enforced on the max num of pods per node.
                },
                &quot;secondaryPodRange&quot;: &quot;A String&quot;, # The name of the secondary range on the subnet which provides IP address for this pod range
                &quot;subnetwork&quot;: &quot;A String&quot;, # Name of the subnetwork where the additional pod network belongs
              },
            ],
            &quot;createPodRange&quot;: True or False, # Input only. Whether to create a new range for pod IPs in this node pool. Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they are not specified. If neither `create_pod_range` or `pod_range` are specified, the cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
            &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enable_private_nodes is not specified, then the value is derived from cluster.privateClusterConfig.enablePrivateNodes
            &quot;networkPerformanceConfig&quot;: { # Configuration of all network bandwidth tiers # Network bandwidth tier configuration.
              &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for the NodePool.
            },
            &quot;podCidrOverprovisionConfig&quot;: { # [PRIVATE FIELD] Config for pod CIDR size overprovisioning. # [PRIVATE FIELD] Pod CIDR size overprovisioning config for the nodepool. Pod CIDR size per node depends on max_pods_per_node. By default, the value of max_pods_per_node is rounded off to next power of 2 and we then double that to get the size of pod CIDR block per node. Example: max_pods_per_node of 30 would result in 64 IPs (/26). This config can disable the doubling of IPs (we still round off to next power of 2) Example: max_pods_per_node of 30 will result in 32 IPs (/27) when overprovisioning is disabled.
              &quot;disable&quot;: True or False, # Whether Pod CIDR overprovisioning is disabled. Note: Pod CIDR overprovisioning is enabled by default.
            },
            &quot;podIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP address range for pod IPs in this node pool. Only applicable if `create_pod_range` is true. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. `/14`) to have a range chosen with a specific netmask. Set to a [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
            &quot;podIpv4RangeUtilization&quot;: 3.14, # Output only. [Output only] The utilization of the IPv4 range for the pod. The ratio is Usage/[Total number of IPs in the secondary range], Usage=numNodes*numZones*podIPsPerNode.
            &quot;podRange&quot;: &quot;A String&quot;, # The ID of the secondary range for pod IPs. If `create_pod_range` is true, this ID is used for the new range. If `create_pod_range` is false, uses an existing secondary range with this ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This field cannot be changed after the node pool has been created.
          },
          &quot;placementPolicy&quot;: { # PlacementPolicy defines the placement policy used by the node pool. # Specifies the node placement policy.
            &quot;policyName&quot;: &quot;A String&quot;, # If set, refers to the name of a custom resource policy supplied by the user. The resource policy must be in the same project and region as the node pool. If not found, InvalidArgument error is returned.
            &quot;tpuTopology&quot;: &quot;A String&quot;, # Optional. TPU placement topology for pod slice node pool. https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
            &quot;type&quot;: &quot;A String&quot;, # The type of placement.
          },
          &quot;podIpv4CidrSize&quot;: 42, # [Output only] The pod CIDR block size per node in this node pool.
          &quot;queuedProvisioning&quot;: { # QueuedProvisioning defines the queued provisioning used by the node pool. # Specifies the configuration of queued provisioning.
            &quot;enabled&quot;: True or False, # Denotes that this nodepool is QRM specific, meaning nodes can be only obtained through queuing via the Cluster Autoscaler ProvisioningRequest API.
          },
          &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
          &quot;status&quot;: &quot;A String&quot;, # [Output only] The status of the nodes in this pool instance.
          &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this node pool instance, if available.
          &quot;updateInfo&quot;: { # UpdateInfo contains resource (instance groups, etc), status and other intermediate information relevant to a node pool upgrade. # Output only. [Output only] Update info contains relevant information during a node pool update.
            &quot;blueGreenInfo&quot;: { # Information relevant to blue-green upgrade. # Information of a blue-green upgrade.
              &quot;blueInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with blue pool.
                &quot;A String&quot;,
              ],
              &quot;bluePoolDeletionStartTime&quot;: &quot;A String&quot;, # Time to start deleting blue pool to complete blue-green upgrade, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
              &quot;greenInstanceGroupUrls&quot;: [ # The resource URLs of the [managed instance groups] (/compute/docs/instance-groups/creating-groups-of-managed-instances) associated with green pool.
                &quot;A String&quot;,
              ],
              &quot;greenPoolVersion&quot;: &quot;A String&quot;, # Version of green pool.
              &quot;phase&quot;: &quot;A String&quot;, # Current blue-green upgrade phase.
            },
          },
          &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Upgrade settings control disruption and speed of the upgrade.
            &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
              &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
              &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
                &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
                &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
                &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
              },
            },
            &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
            &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
            &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
          },
          &quot;version&quot;: &quot;A String&quot;, # The version of Kubernetes running on this NodePool&#x27;s nodes. If unspecified, it defaults as described [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).
        },
      ],
      &quot;notificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # Notification configuration of the cluster.
        &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
          &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
          &quot;filter&quot;: { # Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent # Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent
            &quot;eventType&quot;: [ # Event types to allowlist.
              &quot;A String&quot;,
            ],
          },
          &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
        },
      },
      &quot;parentProductConfig&quot;: { # ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster. # The configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of the GKE cluster and take the ownership of the cluster.
        &quot;labels&quot;: { # Labels contain the configuration of the parent product.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;productName&quot;: &quot;A String&quot;, # Name of the parent product associated with the cluster.
      },
      &quot;privateClusterConfig&quot;: { # Configuration options for private clusters. # Configuration for private cluster.
        &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
        &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
        &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
          &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
        },
        &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
        &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
        &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
        &quot;privateEndpointSubnetwork&quot;: &quot;A String&quot;, # Subnet to provision the master&#x27;s private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format.
        &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
      },
      &quot;releaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # Release channel configuration. If left unspecified on cluster creation and a version is specified, the cluster is enrolled in the most mature release channel where the version is available (first checking STABLE, then REGULAR, and finally RAPID). Otherwise, if no release channel configuration and no version is specified, the cluster is enrolled in the REGULAR channel with its default version.
        &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
      },
      &quot;resourceLabels&quot;: { # The resource labels for the cluster to use to annotate any related Google Compute Engine resources.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;resourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is disabled when this config is unspecified.
        &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
          &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
        },
        &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
          &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
        },
        &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
      },
      &quot;securityPostureConfig&quot;: { # SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API. # Enable/Disable Security Posture API features for the cluster.
        &quot;mode&quot;: &quot;A String&quot;, # Sets which mode to use for Security Posture features.
        &quot;vulnerabilityMode&quot;: &quot;A String&quot;, # Sets which mode to use for vulnerability scanning.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # [Output only] Server-defined URL for the resource.
      &quot;servicesIpv4Cidr&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Kubernetes services in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`). Service addresses are typically put in the last `/16` from the container CIDR.
      &quot;shieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Shielded Nodes configuration.
        &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
      },
      &quot;status&quot;: &quot;A String&quot;, # [Output only] The current status of this cluster.
      &quot;statusMessage&quot;: &quot;A String&quot;, # [Output only] Deprecated. Use conditions instead. Additional information about the current status of this cluster, if available.
      &quot;subnetwork&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which the cluster is connected.
      &quot;tpuIpv4CidrBlock&quot;: &quot;A String&quot;, # [Output only] The IP address range of the Cloud TPUs in this cluster, in [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) notation (e.g. `1.2.3.4/29`).
      &quot;verticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
        &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
      },
      &quot;workloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.
        &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
      },
      &quot;zone&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field is deprecated, use location instead.
    },
  ],
  &quot;missingZones&quot;: [ # If any zones are listed here, the list of clusters returned may be missing those zones.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="setAddons">setAddons(name, body=None, x__xgafv=None)</code>
  <pre>Sets the addons for a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to set addons. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetAddonsConfigRequest sets the addons associated with the cluster.
  &quot;addonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Required. The desired configurations for the various addons available to run in the cluster.
    &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
      &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
      &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
    },
    &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
      &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
    },
    &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
      &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
    },
    &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
    },
    &quot;gcpFilestoreCsiDriverConfig&quot;: { # Configuration for the GCP Filestore CSI driver. # Configuration for the GCP Filestore CSI driver.
      &quot;enabled&quot;: True or False, # Whether the GCP Filestore CSI driver is enabled for this cluster.
    },
    &quot;gcsFuseCsiDriverConfig&quot;: { # Configuration for the Cloud Storage Fuse CSI driver. # Configuration for the Cloud Storage Fuse CSI driver.
      &quot;enabled&quot;: True or False, # Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
    },
    &quot;gkeBackupAgentConfig&quot;: { # Configuration for the Backup for GKE Agent. # Configuration for the Backup for GKE agent addon.
      &quot;enabled&quot;: True or False, # Whether the Backup for GKE agent is enabled for this cluster.
    },
    &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
      &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
    },
    &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
      &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
    },
    &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
      &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
    },
    &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
      &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
    },
  },
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set addons. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setLegacyAbac">setLegacyAbac(name, body=None, x__xgafv=None)</code>
  <pre>Enables or disables the ABAC authorization mechanism on a cluster.

Args:
  name: string, The name (project, location, cluster name) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to update. This field has been deprecated and replaced by the name field.
  &quot;enabled&quot;: True or False, # Required. Whether ABAC authorization will be enabled in the cluster.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to set legacy abac. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setLocations">setLocations(name, body=None, x__xgafv=None)</code>
  <pre>Sets the locations for a specific cluster. Deprecated. Use [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update) instead.

Args:
  name: string, The name (project, location, cluster) of the cluster to set locations. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetLocationsRequest sets the locations of the cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;locations&quot;: [ # Required. The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. Changing the locations a cluster is in will result in nodes being either created or removed from the cluster, depending on whether locations are being added or removed. This list must always include the cluster&#x27;s primary zone.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set locations. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setLogging">setLogging(name, body=None, x__xgafv=None)</code>
  <pre>Sets the logging service for a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to set logging. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetLoggingServiceRequest sets the logging service of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;loggingService&quot;: &quot;A String&quot;, # Required. The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set logging. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setMaintenancePolicy">setMaintenancePolicy(name, body=None, x__xgafv=None)</code>
  <pre>Sets the maintenance policy for a cluster.

Args:
  name: string, The name (project, location, cluster name) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Required. The name of the cluster to update.
  &quot;maintenancePolicy&quot;: { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Required. The maintenance policy to be set for the cluster. An empty field clears the existing maintenance policy.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # A hash identifying the version of this policy, so that updates to fields of the policy won&#x27;t accidentally undo intermediate changes (and so that users of the API unaware of some fields won&#x27;t accidentally remove other fields). Make a `get()` request to the cluster to get the current resource version and include it with requests to set the policy.
    &quot;window&quot;: { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
      &quot;dailyMaintenanceWindow&quot;: { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
        &quot;duration&quot;: &quot;A String&quot;, # [Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario. Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;PTnHnMnS&quot;.
        &quot;startTime&quot;: &quot;A String&quot;, # Time within the maintenance window to start the maintenance operations. Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format &quot;HH:MM&quot;, where HH : [00-23] and MM : [00-59] GMT.
      },
      &quot;maintenanceExclusions&quot;: { # Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.
        &quot;a_key&quot;: { # Represents an arbitrary window of time.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
            &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
          },
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
      &quot;recurringWindow&quot;: { # Represents an arbitrary window of time that recurs. # RecurringWindow specifies some number of recurring time periods for maintenance to occur. The time windows may be overlapping. If no maintenance windows are set, maintenance can occur at any time.
        &quot;recurrence&quot;: &quot;A String&quot;, # An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window reccurs. They go on for the span of time between the start and end time. For example, to have something repeat every weekday, you&#x27;d use: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window every weekday, you&#x27;d use something like: ``` start time = 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg, to make the window encompass every weekend from midnight Saturday till the last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the start and end time&#x27;s specific dates are largely arbitrary except to specify duration of the window and when it first starts. The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        &quot;window&quot;: { # Represents an arbitrary window of time. # The window of the first recurrence.
          &quot;endTime&quot;: &quot;A String&quot;, # The time that the window ends. The end time should take place after the start time.
          &quot;maintenanceExclusionOptions&quot;: { # Represents the Maintenance exclusion option. # MaintenanceExclusionOptions provides maintenance exclusion related options.
            &quot;scope&quot;: &quot;A String&quot;, # Scope specifies the upgrade scope which upgrades are blocked by the exclusion.
          },
          &quot;startTime&quot;: &quot;A String&quot;, # The time that the window first starts.
        },
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to set maintenance policy. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Required. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
  &quot;zone&quot;: &quot;A String&quot;, # Required. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setMasterAuth">setMasterAuth(name, body=None, x__xgafv=None)</code>
  <pre>Sets master auth materials. Currently supports changing the admin password or a specific cluster, either via password generation or explicitly setting the password.

Args:
  name: string, The name (project, location, cluster) of the cluster to set auth. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetMasterAuthRequest updates the admin password of a cluster.
  &quot;action&quot;: &quot;A String&quot;, # Required. The exact form of action to be taken on the master auth.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set auth. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;update&quot;: { # The authentication information for accessing the master endpoint. Authentication can be done using HTTP basic auth or using client certificates. # Required. A description of the update.
    &quot;clientCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate used by clients to authenticate to the cluster endpoint.
    &quot;clientCertificateConfig&quot;: { # Configuration for client certificates on the cluster. # Configuration for client certificate authentication on the cluster. For clusters before v1.12, if no configuration is specified, a client certificate is issued.
      &quot;issueClientCertificate&quot;: True or False, # Issue a client certificate.
    },
    &quot;clientKey&quot;: &quot;A String&quot;, # [Output only] Base64-encoded private key used by clients to authenticate to the cluster endpoint.
    &quot;clusterCaCertificate&quot;: &quot;A String&quot;, # [Output only] Base64-encoded public certificate that is the root of trust for the cluster.
    &quot;password&quot;: &quot;A String&quot;, # The password to use for HTTP basic authentication to the master endpoint. Because the master endpoint is open to the Internet, you should create a strong password. If a password is provided for cluster creation, username must be non-empty. Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
    &quot;username&quot;: &quot;A String&quot;, # The username to use for HTTP basic authentication to the master endpoint. For clusters v1.6.0 and later, basic authentication can be disabled by leaving username unspecified (or setting it to the empty string). Warning: basic authentication is deprecated, and will be removed in GKE control plane versions 1.19 and newer. For a list of recommended authentication methods, see: https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
  },
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setMonitoring">setMonitoring(name, body=None, x__xgafv=None)</code>
  <pre>Sets the monitoring service for a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to set monitoring. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetMonitoringServiceRequest sets the monitoring service of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;monitoringService&quot;: &quot;A String&quot;, # Required. The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to set monitoring. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setNetworkPolicy">setNetworkPolicy(name, body=None, x__xgafv=None)</code>
  <pre>Enables or disables Network Policy for a cluster.

Args:
  name: string, The name (project, location, cluster name) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetNetworkPolicyRequest enables/disables network policy for a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to set networking policy. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;networkPolicy&quot;: { # Configuration options for the NetworkPolicy feature. https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ # Required. Configuration options for the NetworkPolicy feature.
    &quot;enabled&quot;: True or False, # Whether network policy is enabled on the cluster.
    &quot;provider&quot;: &quot;A String&quot;, # The selected network policy provider.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="setResourceLabels">setResourceLabels(name, body=None, x__xgafv=None)</code>
  <pre>Sets labels on a cluster.

Args:
  name: string, The name (project, location, cluster name) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # SetLabelsRequest sets the Google Cloud Platform labels on a Google Container Engine cluster, which will in turn set them for Google Compute Engine resources used by that cluster
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;labelFingerprint&quot;: &quot;A String&quot;, # Required. The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Kubernetes Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a `get()` request to the resource to get the latest fingerprint.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to set labels. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;resourceLabels&quot;: { # Required. The labels to set for that cluster.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="startIpRotation">startIpRotation(name, body=None, x__xgafv=None)</code>
  <pre>Starts master IP rotation.

Args:
  name: string, The name (project, location, cluster name) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # StartIPRotationRequest creates a new IP for the cluster and then performs a node upgrade on each node pool to point to the new IP.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster name) of the cluster to start IP rotation. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;rotateCredentials&quot;: True or False, # Whether to rotate credentials during IP rotation.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(name, body=None, x__xgafv=None)</code>
  <pre>Updates the settings of a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # UpdateClusterRequest updates the settings of a cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;update&quot;: { # ClusterUpdate describes an update to the cluster. Exactly one update can be applied to a cluster with each request, so at most one field can be provided. # Required. A description of the update.
    &quot;additionalPodRangesConfig&quot;: { # AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message. # The additional pod ranges to be added to the cluster. These pod ranges can be used by node pools to allocate pod IPs.
      &quot;podRangeInfo&quot;: [ # Output only. [Output only] Information for additional pod range.
        { # RangeInfo contains the range name and the range utilization by this cluster.
          &quot;rangeName&quot;: &quot;A String&quot;, # Output only. [Output only] Name of a range.
          &quot;utilization&quot;: 3.14, # Output only. [Output only] The utilization of the range.
        },
      ],
      &quot;podRangeNames&quot;: [ # Name for pod secondary ipv4 range which has the actual range defined ahead.
        &quot;A String&quot;,
      ],
    },
    &quot;desiredAddonsConfig&quot;: { # Configuration for the addons that can be automatically spun up in the cluster, enabling additional functionality. # Configurations for the various addons available to run in the cluster.
      &quot;cloudRunConfig&quot;: { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon, which allows the user to use a managed Knative service.
        &quot;disabled&quot;: True or False, # Whether Cloud Run addon is enabled for this cluster.
        &quot;loadBalancerType&quot;: &quot;A String&quot;, # Which load balancer type is installed for Cloud Run.
      },
      &quot;configConnectorConfig&quot;: { # Configuration options for the Config Connector add-on. # Configuration for the ConfigConnector add-on, a Kubernetes extension to manage hosted GCP services through the Kubernetes API
        &quot;enabled&quot;: True or False, # Whether Cloud Connector is enabled for this cluster.
      },
      &quot;dnsCacheConfig&quot;: { # Configuration for NodeLocal DNSCache # Configuration for NodeLocalDNS, a dns cache running on cluster nodes
        &quot;enabled&quot;: True or False, # Whether NodeLocal DNSCache is enabled for this cluster.
      },
      &quot;gcePersistentDiskCsiDriverConfig&quot;: { # Configuration for the Compute Engine PD CSI driver. # Configuration for the Compute Engine Persistent Disk CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Compute Engine PD CSI driver is enabled for this cluster.
      },
      &quot;gcpFilestoreCsiDriverConfig&quot;: { # Configuration for the GCP Filestore CSI driver. # Configuration for the GCP Filestore CSI driver.
        &quot;enabled&quot;: True or False, # Whether the GCP Filestore CSI driver is enabled for this cluster.
      },
      &quot;gcsFuseCsiDriverConfig&quot;: { # Configuration for the Cloud Storage Fuse CSI driver. # Configuration for the Cloud Storage Fuse CSI driver.
        &quot;enabled&quot;: True or False, # Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
      },
      &quot;gkeBackupAgentConfig&quot;: { # Configuration for the Backup for GKE Agent. # Configuration for the Backup for GKE agent addon.
        &quot;enabled&quot;: True or False, # Whether the Backup for GKE agent is enabled for this cluster.
      },
      &quot;horizontalPodAutoscaling&quot;: { # Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. # Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.
        &quot;disabled&quot;: True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. When enabled, it ensures that metrics are collected into Stackdriver Monitoring.
      },
      &quot;httpLoadBalancing&quot;: { # Configuration options for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. # Configuration for the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster.
        &quot;disabled&quot;: True or False, # Whether the HTTP Load Balancing controller is enabled in the cluster. When enabled, it runs a small pod in the cluster that manages the load balancers.
      },
      &quot;kubernetesDashboard&quot;: { # Configuration for the Kubernetes Dashboard. # Configuration for the Kubernetes Dashboard. This addon is deprecated, and will be disabled in 1.15. It is recommended to use the Cloud Console to manage and monitor your Kubernetes clusters, workloads and applications. For more information, see: https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
        &quot;disabled&quot;: True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
      &quot;networkPolicyConfig&quot;: { # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes. # Configuration for NetworkPolicy. This only tracks whether the addon is enabled or not on the Master, it does not track whether network policy is enabled for the nodes.
        &quot;disabled&quot;: True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
    },
    &quot;desiredAuthenticatorGroupsConfig&quot;: { # Configuration for returning group information from authenticators. # The desired authenticator groups config for the cluster.
      &quot;enabled&quot;: True or False, # Whether this cluster should return group membership lookups during authentication using a group of security groups.
      &quot;securityGroup&quot;: &quot;A String&quot;, # The name of the security group-of-groups to be used. Only relevant if enabled = true.
    },
    &quot;desiredAutopilotWorkloadPolicyConfig&quot;: { # WorkloadPolicyConfig is the configuration of workload policy for autopilot clusters. # The desired workload policy configuration for the autopilot cluster.
      &quot;allowNetAdmin&quot;: True or False, # If true, workloads can use NET_ADMIN capability.
    },
    &quot;desiredBinaryAuthorization&quot;: { # Configuration for Binary Authorization. # The desired configuration options for the Binary Authorization feature.
      &quot;enabled&quot;: True or False, # This field is deprecated. Leave this unset and instead configure BinaryAuthorization using evaluation_mode. If evaluation_mode is set to anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Mode of operation for binauthz policy evaluation. If unspecified, defaults to DISABLED.
    },
    &quot;desiredClusterAutoscaling&quot;: { # ClusterAutoscaling contains global, per-cluster information required by Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs. # Cluster-level autoscaling configuration.
      &quot;autoprovisioningLocations&quot;: [ # The list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the NodePool&#x27;s nodes can be created by NAP.
        &quot;A String&quot;,
      ],
      &quot;autoprovisioningNodePoolDefaults&quot;: { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP. # AutoprovisioningNodePoolDefaults contains defaults for a node pool created by NAP.
        &quot;bootDiskKmsKey&quot;: &quot;A String&quot;, # The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see: https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        &quot;diskSizeGb&quot;: 42, # Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB. If unspecified, the default disk size is 100GB.
        &quot;diskType&quot;: &quot;A String&quot;, # Type of the disk attached to each node (e.g. &#x27;pd-standard&#x27;, &#x27;pd-ssd&#x27; or &#x27;pd-balanced&#x27;) If unspecified, the default disk type is &#x27;pd-standard&#x27;
        &quot;imageType&quot;: &quot;A String&quot;, # The image type to use for NAP created node. Please see https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for available image types.
        &quot;insecureKubeletReadonlyPortEnabled&quot;: True or False, # Enable or disable Kubelet read only port.
        &quot;management&quot;: { # NodeManagement defines the set of node management services turned on for the node pool. # Specifies the node management options for NAP created node-pools.
          &quot;autoRepair&quot;: True or False, # A flag that specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.
          &quot;autoUpgrade&quot;: True or False, # A flag that specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.
          &quot;upgradeOptions&quot;: { # AutoUpgradeOptions defines the set of options for the user to control how the Auto Upgrades will proceed. # Specifies the Auto Upgrade knobs for the node pool.
            &quot;autoUpgradeStartTime&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the approximate start time for the upgrades, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
            &quot;description&quot;: &quot;A String&quot;, # [Output only] This field is set when upgrades are about to commence with the description of the upgrade.
          },
        },
        &quot;minCpuPlatform&quot;: &quot;A String&quot;, # Deprecated. Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For more information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform). This field is deprecated, min_cpu_platform should be specified using `cloud.google.com/requested-min-cpu-platform` label selector on the pod. To unset the min cpu platform field pass &quot;automatic&quot; as field value.
        &quot;oauthScopes&quot;: [ # Scopes that are used by NAP when creating node pools.
          &quot;A String&quot;,
        ],
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The Google Cloud Platform Service Account to be used by the node VMs.
        &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. # Shielded Instance options.
          &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created.
          &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.
        },
        &quot;upgradeSettings&quot;: { # These upgrade settings control the level of parallelism and the level of disruption caused by an upgrade. maxUnavailable controls the number of nodes that can be simultaneously unavailable. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). Note: upgrades inevitably introduce some disruption since workloads need to be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0, this holds true. (Disruption stays within the limits of PodDisruptionBudget, if it is configured.) Consider a hypothetical node pool with 5 nodes having maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3 nodes simultaneously. It creates 2 additional (upgraded) nodes, then it brings down 3 old (not yet upgraded) nodes at the same time. This ensures that there are always at least 4 nodes available. These upgrade settings configure the upgrade strategy for the node pool. Use strategy to switch between the strategies applied to the node pool. If the strategy is ROLLING, use max_surge and max_unavailable to control the level of parallelism and the level of disruption caused by upgrade. 1. maxSurge controls the number of additional nodes that can be added to the node pool temporarily for the time of the upgrade to increase the number of available nodes. 2. maxUnavailable controls the number of nodes that can be simultaneously unavailable. 3. (maxUnavailable + maxSurge) determines the level of parallelism (how many nodes are being upgraded at the same time). If the strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green upgrade related settings. 1. standard_rollout_policy is the default policy. The policy is used to control the way blue pool gets drained. The draining is executed in the batch mode. The batch size could be specified as either percentage of the node pool size or the number of nodes. batch_soak_duration is the soak time after each batch gets drained. 2. node_pool_soak_duration is the soak time after all blue nodes are drained. After this period, the blue pool nodes will be deleted. # Specifies the upgrade settings for NAP created node pools
          &quot;blueGreenSettings&quot;: { # Settings for blue-green upgrade. # Settings for blue-green upgrade strategy.
            &quot;nodePoolSoakDuration&quot;: &quot;A String&quot;, # Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.
            &quot;standardRolloutPolicy&quot;: { # Standard rollout policy is the default policy for blue-green. # Standard policy for the blue-green upgrade.
              &quot;batchNodeCount&quot;: 42, # Number of blue nodes to drain in a batch.
              &quot;batchPercentage&quot;: 3.14, # Percentage of the blue pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].
              &quot;batchSoakDuration&quot;: &quot;A String&quot;, # Soak time after each batch gets drained. Default to zero.
            },
          },
          &quot;maxSurge&quot;: 42, # The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.
          &quot;maxUnavailable&quot;: 42, # The maximum number of nodes that can be simultaneously unavailable during the upgrade process. A node is considered available if its status is Ready.
          &quot;strategy&quot;: &quot;A String&quot;, # Update strategy of the node pool.
        },
      },
      &quot;autoscalingProfile&quot;: &quot;A String&quot;, # Defines autoscaling behaviour.
      &quot;enableNodeAutoprovisioning&quot;: True or False, # Enables automatic node pool creation and deletion.
      &quot;resourceLimits&quot;: [ # Contains global constraints regarding minimum and maximum amount of resources in the cluster.
        { # Contains information about amount of some resource in the cluster. For memory, value should be in GB.
          &quot;maximum&quot;: &quot;A String&quot;, # Maximum amount of the resource in the cluster.
          &quot;minimum&quot;: &quot;A String&quot;, # Minimum amount of the resource in the cluster.
          &quot;resourceType&quot;: &quot;A String&quot;, # Resource name &quot;cpu&quot;, &quot;memory&quot; or gpu-specific string.
        },
      ],
    },
    &quot;desiredCostManagementConfig&quot;: { # Configuration for fine-grained cost management feature. # The desired configuration for the fine-grained cost management feature.
      &quot;enabled&quot;: True or False, # Whether the feature is enabled or not.
    },
    &quot;desiredDatabaseEncryption&quot;: { # Configuration of etcd encryption. # Configuration of etcd encryption.
      &quot;keyName&quot;: &quot;A String&quot;, # Name of CloudKMS key to use for the encryption of secrets in etcd. Ex. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
      &quot;state&quot;: &quot;A String&quot;, # The desired state of etcd encryption.
    },
    &quot;desiredDatapathProvider&quot;: &quot;A String&quot;, # The desired datapath provider for the cluster.
    &quot;desiredDefaultSnatStatus&quot;: { # DefaultSnatStatus contains the desired state of whether default sNAT should be disabled on the cluster. # The desired status of whether to disable default sNAT for this cluster.
      &quot;disabled&quot;: True or False, # Disables cluster default sNAT rules.
    },
    &quot;desiredDnsConfig&quot;: { # DNSConfig contains the desired set of options for configuring clusterDNS. # DNSConfig contains clusterDNS config for this cluster.
      &quot;clusterDns&quot;: &quot;A String&quot;, # cluster_dns indicates which in-cluster DNS provider should be used.
      &quot;clusterDnsDomain&quot;: &quot;A String&quot;, # cluster_dns_domain is the suffix used for all cluster service records.
      &quot;clusterDnsScope&quot;: &quot;A String&quot;, # cluster_dns_scope indicates the scope of access to cluster DNS records.
    },
    &quot;desiredEnableFqdnNetworkPolicy&quot;: True or False, # Enable/Disable FQDN Network Policy for the cluster.
    &quot;desiredEnablePrivateEndpoint&quot;: True or False, # Enable/Disable private endpoint for the cluster&#x27;s master.
    &quot;desiredFleet&quot;: { # Fleet is the fleet configuration for the cluster. # The desired fleet configuration for the cluster.
      &quot;membership&quot;: &quot;A String&quot;, # [Output only] The full resource name of the registered fleet membership of the cluster, in the format `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
      &quot;preRegistered&quot;: True or False, # [Output only] Whether the cluster has been registered through the fleet API.
      &quot;project&quot;: &quot;A String&quot;, # The Fleet host project(project ID or project number) where this cluster will be registered to. This field cannot be changed after the cluster has been registered.
    },
    &quot;desiredGatewayApiConfig&quot;: { # GatewayAPIConfig contains the desired config of Gateway API on this cluster. # The desired config of Gateway API on this cluster.
      &quot;channel&quot;: &quot;A String&quot;, # The Gateway API release channel to use for Gateway API.
    },
    &quot;desiredGcfsConfig&quot;: { # GcfsConfig contains configurations of Google Container File System (image streaming). # The desired GCFS config for the cluster
      &quot;enabled&quot;: True or False, # Whether to use GCFS.
    },
    &quot;desiredIdentityServiceConfig&quot;: { # IdentityServiceConfig is configuration for Identity Service which allows customers to use external identity providers with the K8S API # The desired Identity Service component configuration.
      &quot;enabled&quot;: True or False, # Whether to enable the Identity Service component
    },
    &quot;desiredImageType&quot;: &quot;A String&quot;, # The desired image type for the node pool. NOTE: Set the &quot;desired_node_pool&quot; field as well.
    &quot;desiredIntraNodeVisibilityConfig&quot;: { # IntraNodeVisibilityConfig contains the desired config of the intra-node visibility on this cluster. # The desired config of Intra-node visibility.
      &quot;enabled&quot;: True or False, # Enables intra node visibility for this cluster.
    },
    &quot;desiredK8sBetaApis&quot;: { # K8sBetaAPIConfig , configuration for beta APIs # Desired Beta APIs to be enabled for cluster.
      &quot;enabledApis&quot;: [ # Enabled k8s beta APIs.
        &quot;A String&quot;,
      ],
    },
    &quot;desiredL4ilbSubsettingConfig&quot;: { # ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer subsetting on this cluster. # The desired L4 Internal Load Balancer Subsetting configuration.
      &quot;enabled&quot;: True or False, # Enables l4 ILB subsetting for this cluster.
    },
    &quot;desiredLocations&quot;: [ # The desired list of Google Compute Engine [zones](https://cloud.google.com/compute/docs/zones#available) in which the cluster&#x27;s nodes should be located. This list must always include the cluster&#x27;s primary zone. Warning: changing cluster locations will update the locations of all node pools and will result in nodes being added and/or removed.
      &quot;A String&quot;,
    ],
    &quot;desiredLoggingConfig&quot;: { # LoggingConfig is cluster logging configuration. # The desired logging configuration.
      &quot;componentConfig&quot;: { # LoggingComponentConfig is cluster logging component configuration. # Logging components configuration
        &quot;enableComponents&quot;: [ # Select components to collect logs. An empty set would disable all logging.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;desiredLoggingService&quot;: &quot;A String&quot;, # The logging service the cluster should use to write logs. Currently available options: * `logging.googleapis.com/kubernetes` - The Cloud Logging service with a Kubernetes-native resource model * `logging.googleapis.com` - The legacy Cloud Logging service (no longer available as of GKE 1.15). * `none` - no logs will be exported from the cluster. If left as an empty string,`logging.googleapis.com/kubernetes` will be used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
    &quot;desiredMasterAuthorizedNetworksConfig&quot;: { # Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs. # The desired configuration options for master authorized networks feature.
      &quot;cidrBlocks&quot;: [ # cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.
        { # CidrBlock contains an optional name and one CIDR block.
          &quot;cidrBlock&quot;: &quot;A String&quot;, # cidr_block must be specified in CIDR notation.
          &quot;displayName&quot;: &quot;A String&quot;, # display_name is an optional field for users to identify CIDR blocks.
        },
      ],
      &quot;enabled&quot;: True or False, # Whether or not master authorized networks is enabled.
      &quot;gcpPublicCidrsAccessEnabled&quot;: True or False, # Whether master is accessbile via Google Compute Engine Public IP addresses.
    },
    &quot;desiredMasterVersion&quot;: &quot;A String&quot;, # The Kubernetes version to change the master to. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;-&quot;: picks the default Kubernetes version
    &quot;desiredMeshCertificates&quot;: { # Configuration for issuance of mTLS keys and certificates to Kubernetes pods. # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
      &quot;enableCertificates&quot;: True or False, # enable_certificates controls issuance of workload mTLS certificates. If set, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster, which can then be configured by creating a WorkloadCertificateConfig Custom Resource. Requires Workload Identity (workload_pool must be non-empty).
    },
    &quot;desiredMonitoringConfig&quot;: { # MonitoringConfig is cluster monitoring configuration. # The desired monitoring configuration.
      &quot;advancedDatapathObservabilityConfig&quot;: { # AdvancedDatapathObservabilityConfig specifies configuration of observability features of advanced datapath. # Configuration of Advanced Datapath Observability features.
        &quot;enableMetrics&quot;: True or False, # Expose flow metrics on nodes
        &quot;enableRelay&quot;: True or False, # Enable Relay component
        &quot;relayMode&quot;: &quot;A String&quot;, # Method used to make Relay available
      },
      &quot;componentConfig&quot;: { # MonitoringComponentConfig is cluster monitoring component configuration. # Monitoring components configuration
        &quot;enableComponents&quot;: [ # Select components to collect metrics. An empty set would disable all monitoring.
          &quot;A String&quot;,
        ],
      },
      &quot;managedPrometheusConfig&quot;: { # ManagedPrometheusConfig defines the configuration for Google Cloud Managed Service for Prometheus. # Enable Google Cloud Managed Service for Prometheus in the cluster.
        &quot;enabled&quot;: True or False, # Enable Managed Collection.
      },
    },
    &quot;desiredMonitoringService&quot;: &quot;A String&quot;, # The monitoring service the cluster should use to write metrics. Currently available options: * &quot;monitoring.googleapis.com/kubernetes&quot; - The Cloud Monitoring service with a Kubernetes-native resource model * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no longer available as of GKE 1.15). * `none` - No metrics will be exported from the cluster. If left as an empty string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
    &quot;desiredNetworkPerformanceConfig&quot;: { # Configuration of network bandwidth tiers # The desired network performance config.
      &quot;totalEgressBandwidthTier&quot;: &quot;A String&quot;, # Specifies the total network bandwidth tier for NodePools in the cluster.
    },
    &quot;desiredNodePoolAutoConfigNetworkTags&quot;: { # Collection of Compute Engine network tags that can be applied to a node&#x27;s underlying VM instance. # The desired network tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.
      &quot;tags&quot;: [ # List of network tags.
        &quot;A String&quot;,
      ],
    },
    &quot;desiredNodePoolAutoConfigResourceManagerTags&quot;: { # A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications in https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. # The desired resource manager tags that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.
      &quot;tags&quot;: { # TagKeyValue must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;desiredNodePoolAutoscaling&quot;: { # NodePoolAutoscaling contains information required by cluster autoscaler to adjust the size of the node pool to the current cluster usage. # Autoscaler configuration for the node pool specified in desired_node_pool_id. If there is only one pool in the cluster and desired_node_pool_id is not provided then the change applies to that single node pool.
      &quot;autoprovisioned&quot;: True or False, # Can this node pool be deleted automatically.
      &quot;enabled&quot;: True or False, # Is autoscaling enabled for this node pool.
      &quot;locationPolicy&quot;: &quot;A String&quot;, # Location policy used when scaling up a nodepool.
      &quot;maxNodeCount&quot;: 42, # Maximum number of nodes for one location in the NodePool. Must be &gt;= min_node_count. There has to be enough quota to scale up the cluster.
      &quot;minNodeCount&quot;: 42, # Minimum number of nodes for one location in the NodePool. Must be &gt;= 1 and &lt;= max_node_count.
      &quot;totalMaxNodeCount&quot;: 42, # Maximum number of nodes in the node pool. Must be greater than total_min_node_count. There has to be enough quota to scale up the cluster. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
      &quot;totalMinNodeCount&quot;: 42, # Minimum number of nodes in the node pool. Must be greater than 1 less than total_max_node_count. The total_*_node_count fields are mutually exclusive with the *_node_count fields.
    },
    &quot;desiredNodePoolId&quot;: &quot;A String&quot;, # The node pool to be upgraded. This field is mandatory if &quot;desired_node_version&quot;, &quot;desired_image_family&quot; or &quot;desired_node_pool_autoscaling&quot; is specified and there is more than one node pool on the cluster.
    &quot;desiredNodePoolLoggingConfig&quot;: { # NodePoolLoggingConfig specifies logging configuration for nodepools. # The desired node pool logging configuration defaults for the cluster.
      &quot;variantConfig&quot;: { # LoggingVariantConfig specifies the behaviour of the logging component. # Logging variant configuration.
        &quot;variant&quot;: &quot;A String&quot;, # Logging variant deployed on nodes.
      },
    },
    &quot;desiredNodeVersion&quot;: &quot;A String&quot;, # The Kubernetes version to change the nodes to (typically an upgrade). Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;-&quot;: picks the Kubernetes master version
    &quot;desiredNotificationConfig&quot;: { # NotificationConfig is the configuration of notifications. # The desired notification configuration.
      &quot;pubsub&quot;: { # Pub/Sub specific notification config. # Notification config for Pub/Sub.
        &quot;enabled&quot;: True or False, # Enable notifications for Pub/Sub.
        &quot;filter&quot;: { # Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent # Allows filtering to one or more specific event types. If no filter is specified, or if a filter is specified with no event types, all event types will be sent
          &quot;eventType&quot;: [ # Event types to allowlist.
            &quot;A String&quot;,
          ],
        },
        &quot;topic&quot;: &quot;A String&quot;, # The desired Pub/Sub topic to which notifications will be sent by GKE. Format is `projects/{project}/topics/{topic}`.
      },
    },
    &quot;desiredParentProductConfig&quot;: { # ParentProductConfig is the configuration of the parent product of the cluster. This field is used by Google internal products that are built on top of a GKE cluster and take the ownership of the cluster. # The desired parent product config for the cluster.
      &quot;labels&quot;: { # Labels contain the configuration of the parent product.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;productName&quot;: &quot;A String&quot;, # Name of the parent product associated with the cluster.
    },
    &quot;desiredPrivateClusterConfig&quot;: { # Configuration options for private clusters. # The desired private cluster configuration.
      &quot;enablePrivateEndpoint&quot;: True or False, # Whether the master&#x27;s internal IP address is used as the cluster endpoint.
      &quot;enablePrivateNodes&quot;: True or False, # Whether nodes have internal IP addresses only. If enabled, all nodes are given only RFC 1918 private addresses and communicate with the master via private networking.
      &quot;masterGlobalAccessConfig&quot;: { # Configuration for controlling master global access settings. # Controls master global access settings.
        &quot;enabled&quot;: True or False, # Whenever master is accessible globally or not.
      },
      &quot;masterIpv4CidrBlock&quot;: &quot;A String&quot;, # The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning internal IP addresses to the master or set of masters, as well as the ILB VIP. This range must not overlap with any other ranges in use within the cluster&#x27;s network.
      &quot;peeringName&quot;: &quot;A String&quot;, # Output only. The peering name in the customer VPC used by this cluster.
      &quot;privateEndpoint&quot;: &quot;A String&quot;, # Output only. The internal IP address of this cluster&#x27;s master endpoint.
      &quot;privateEndpointSubnetwork&quot;: &quot;A String&quot;, # Subnet to provision the master&#x27;s private endpoint during cluster creation. Specified in projects/*/regions/*/subnetworks/* format.
      &quot;publicEndpoint&quot;: &quot;A String&quot;, # Output only. The external IP address of this cluster&#x27;s master endpoint.
    },
    &quot;desiredPrivateIpv6GoogleAccess&quot;: &quot;A String&quot;, # The desired state of IPv6 connectivity to Google Services.
    &quot;desiredReleaseChannel&quot;: { # ReleaseChannel indicates which release channel a cluster is subscribed to. Release channels are arranged in order of risk. When a cluster is subscribed to a release channel, Google maintains both the master version and the node version. Node auto-upgrade defaults to true and cannot be disabled. # The desired release channel configuration.
      &quot;channel&quot;: &quot;A String&quot;, # channel specifies which release channel the cluster is subscribed to.
    },
    &quot;desiredResourceUsageExportConfig&quot;: { # Configuration for exporting cluster resource usages. # The desired configuration for exporting resource usage.
      &quot;bigqueryDestination&quot;: { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
        &quot;datasetId&quot;: &quot;A String&quot;, # The ID of a BigQuery Dataset.
      },
      &quot;consumptionMeteringConfig&quot;: { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
        &quot;enabled&quot;: True or False, # Whether to enable consumption metering for this cluster. If enabled, a second BigQuery table will be created to hold resource consumption records.
      },
      &quot;enableNetworkEgressMetering&quot;: True or False, # Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.
    },
    &quot;desiredSecurityPostureConfig&quot;: { # SecurityPostureConfig defines the flags needed to enable/disable features for the Security Posture API. # Enable/Disable Security Posture API features for the cluster.
      &quot;mode&quot;: &quot;A String&quot;, # Sets which mode to use for Security Posture features.
      &quot;vulnerabilityMode&quot;: &quot;A String&quot;, # Sets which mode to use for vulnerability scanning.
    },
    &quot;desiredServiceExternalIpsConfig&quot;: { # Config to block services with externalIPs field. # ServiceExternalIPsConfig specifies the config for the use of Services with ExternalIPs field.
      &quot;enabled&quot;: True or False, # Whether Services with ExternalIPs field are allowed or not.
    },
    &quot;desiredShieldedNodes&quot;: { # Configuration of Shielded Nodes feature. # Configuration for Shielded Nodes.
      &quot;enabled&quot;: True or False, # Whether Shielded Nodes features are enabled on all nodes in this cluster.
    },
    &quot;desiredStackType&quot;: &quot;A String&quot;, # The desired stack type of the cluster. If a stack type is provided and does not match the current stack type of the cluster, update will attempt to change the stack type to the new type.
    &quot;desiredVerticalPodAutoscaling&quot;: { # VerticalPodAutoscaling contains global, per-cluster information required by Vertical Pod Autoscaler to automatically adjust the resources of pods controlled by it. # Cluster-level Vertical Pod Autoscaling configuration.
      &quot;enabled&quot;: True or False, # Enables vertical pod autoscaling.
    },
    &quot;desiredWorkloadIdentityConfig&quot;: { # Configuration for the use of Kubernetes Service Accounts in GCP IAM policies. # Configuration for Workload Identity.
      &quot;workloadPool&quot;: &quot;A String&quot;, # The workload pool to attach all Kubernetes service accounts to.
    },
    &quot;enableK8sBetaApis&quot;: { # K8sBetaAPIConfig , configuration for beta APIs # Kubernetes open source beta apis enabled on the cluster. Only beta apis
      &quot;enabledApis&quot;: [ # Enabled k8s beta APIs.
        &quot;A String&quot;,
      ],
    },
    &quot;etag&quot;: &quot;A String&quot;, # The current etag of the cluster. If an etag is provided and does not match the current etag of the cluster, update will be blocked and an ABORTED error will be returned.
    &quot;removedAdditionalPodRangesConfig&quot;: { # AdditionalPodRangesConfig is the configuration for additional pod secondary ranges supporting the ClusterUpdate message. # The additional pod ranges that are to be removed from the cluster. The pod ranges specified here must have been specified earlier in the &#x27;additional_pod_ranges_config&#x27; argument.
      &quot;podRangeInfo&quot;: [ # Output only. [Output only] Information for additional pod range.
        { # RangeInfo contains the range name and the range utilization by this cluster.
          &quot;rangeName&quot;: &quot;A String&quot;, # Output only. [Output only] Name of a range.
          &quot;utilization&quot;: 3.14, # Output only. [Output only] The utilization of the range.
        },
      ],
      &quot;podRangeNames&quot;: [ # Name for pod secondary ipv4 range which has the actual range defined ahead.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateMaster">updateMaster(name, body=None, x__xgafv=None)</code>
  <pre>Updates the master for a specific cluster.

Args:
  name: string, The name (project, location, cluster) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # UpdateMasterRequest updates the master of the cluster.
  &quot;clusterId&quot;: &quot;A String&quot;, # Deprecated. The name of the cluster to upgrade. This field has been deprecated and replaced by the name field.
  &quot;masterVersion&quot;: &quot;A String&quot;, # Required. The Kubernetes version to change the master to. Users may specify either explicit versions offered by Kubernetes Engine or version aliases, which have the following behavior: - &quot;latest&quot;: picks the highest valid Kubernetes version - &quot;1.X&quot;: picks the highest valid patch+gke.N patch in the 1.X version - &quot;1.X.Y&quot;: picks the highest valid gke.N patch in the 1.X.Y version - &quot;1.X.Y-gke.N&quot;: picks an explicit Kubernetes version - &quot;-&quot;: picks the default Kubernetes version
  &quot;name&quot;: &quot;A String&quot;, # The name (project, location, cluster) of the cluster to update. Specified in the format `projects/*/locations/*/clusters/*`.
  &quot;projectId&quot;: &quot;A String&quot;, # Deprecated. The Google Developers Console [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects). This field has been deprecated and replaced by the name field.
  &quot;zone&quot;: &quot;A String&quot;, # Deprecated. The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the cluster resides. This field has been deprecated and replaced by the name field.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are happening on the cluster. All fields are output only.
  &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
  &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) or [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available) in which the cluster resides.
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
  &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state. Deprecated. Use field error instead.
    { # StatusCondition describes why a cluster or a node pool has a certain status (e.g., ERROR or DEGRADED).
      &quot;canonicalCode&quot;: &quot;A String&quot;, # Canonical code of the condition.
      &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition Deprecated. Use canonical_code instead.
      &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
    },
  ],
  &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
  &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
    &quot;metrics&quot;: [ # Progress metric bundle, for example: metrics: [{name: &quot;nodes done&quot;, int_value: 15}, {name: &quot;nodes total&quot;, int_value: 32}] or metrics: [{name: &quot;progress&quot;, double_value: 0.56}, {name: &quot;progress scale&quot;, double_value: 1.0}]
      { # Progress metric is (string, int|float|string) pair.
        &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
        &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
        &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage. Unset for single-stage operations.
    &quot;stages&quot;: [ # Substages of an operation or a stage.
      # Object with schema name: OperationProgress
    ],
    &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage. Unset for single-stage operations.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URI for the operation. Example: `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
  &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
  &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error. Deprecated. Use the field error instead.
  &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URI for the target of the operation. The format of this is a URI to the resource being modified (such as a cluster, node pool, or node). For node pool repairs, there may be multiple nodes being repaired, but only one will be the target. Examples: - ## `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster` ## `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np` `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
  &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [zone](https://cloud.google.com/compute/docs/zones#available) in which the operation is taking place. This field is deprecated, use location instead.
}</pre>
</div>

</body></html>