<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_v1beta1.html">Kubernetes Engine API</a> . <a href="container_v1beta1.projects.html">projects</a> . <a href="container_v1beta1.projects.zones.html">zones</a> . <a href="container_v1beta1.projects.zones.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="container_v1beta1.projects.zones.clusters.nodePools.html">nodePools()</a></code>
</p>
<p class="firstline">Returns the nodePools Resource.</p>

<p class="toc_element">
  <code><a href="#addons">addons(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the addons for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#completeIpRotation">completeIpRotation(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Completes master IP rotation.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, zone, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a cluster, consisting of the specified number and type of Google</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, zone, clusterId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the cluster, including the Kubernetes endpoint and all worker</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, zone, clusterId, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#legacyAbac">legacyAbac(projectId, zone, clusterId, body, 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="#list">list(projectId, zone, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all clusters owned by a project in either the specified zone or all</p>
<p class="toc_element">
  <code><a href="#locations">locations(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the locations for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#logging">logging(projectId, zone, clusterId, body, 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="#master">master(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the master for a specific cluster.</p>
<p class="toc_element">
  <code><a href="#monitoring">monitoring(projectId, zone, clusterId, body, 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="#resourceLabels">resourceLabels(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets labels on a cluster.</p>
<p class="toc_element">
  <code><a href="#setMaintenancePolicy">setMaintenancePolicy(projectId, zone, clusterId, body, 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(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sets master auth materials. Currently supports changing the admin password</p>
<p class="toc_element">
  <code><a href="#setNetworkPolicy">setNetworkPolicy(projectId, zone, clusterId, body, 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="#startIpRotation">startIpRotation(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Starts master IP rotation.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, zone, clusterId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the settings for a specific cluster.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="addons">addons(projectId, zone, clusterId, body, x__xgafv=None)</code>
  <pre>Sets the addons for a specific cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetAddonsRequest sets the addons associated with the cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "addonsConfig": { # Configuration for the addons that can be automatically spun up in the # The desired configurations for the various addons available to run in the
        # cluster.
        # cluster, enabling additional functionality.
      "networkPolicyConfig": { # Configuration for NetworkPolicy. This only tracks whether the addon # 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.
          # is enabled or not on the Master, it does not track whether network policy
          # is enabled for the nodes.
        "disabled": True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
      "cloudRunConfig": { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon. The `IstioConfig` addon must be
          # enabled in order to enable Cloud Run addon. This option can only be enabled
          # at cluster creation time.
        "disabled": True or False, # Whether Cloud Run addon is enabled for this cluster.
      },
      "httpLoadBalancing": { # Configuration options for the HTTP (L7) load balancing controller addon, # Configuration for the HTTP (L7) load balancing controller addon, which
          # makes it easy to set up HTTP load balancers for services in a cluster.
          # which makes it easy to set up HTTP load balancers for services in a cluster.
        "disabled": 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.
      },
      "horizontalPodAutoscaling": { # Configuration options for the horizontal pod autoscaling feature, which # 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.
          # increases or decreases the number of replica pods a replication controller
          # has based on the resource usage of the existing pods.
        "disabled": True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
            # When enabled, it ensures that a Heapster pod is running in the cluster,
            # which is also used by the Cloud Monitoring service.
      },
      "istioConfig": { # Configuration options for Istio addon. # Configuration for Istio, an open platform to connect, manage, and secure
          # microservices.
        "disabled": True or False, # Whether Istio is enabled for this cluster.
        "auth": "A String", # The specified Istio auth mode, either none, or mutual TLS.
      },
      "kubernetesDashboard": { # 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
        "disabled": True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
    },
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to set addons.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # CompleteIPRotationRequest moves the cluster master back into single-IP mode.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://developers.google.com/console/help/new/#projectnumber).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster id) of the cluster to complete IP
        # rotation. Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, zone, body, 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's
[default network](/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.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the parent field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the parent field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # CreateClusterRequest creates a cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the parent field.
    "parent": "A String", # The parent (project and location) where the cluster will be created.
        # Specified in the format 'projects/*/locations/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the parent field.
    "cluster": { # A Google Kubernetes Engine cluster. # A [cluster
        # resource](/container-engine/reference/rest/v1beta1/projects.zones.clusters)
      "nodeIpv4CidrSize": 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.
      "maintenancePolicy": { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
        "window": { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
          "dailyMaintenanceWindow": { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
            "duration": "A String", # [Output only] Duration of the time window, automatically chosen to be
                # smallest possible in the given scenario.
            "startTime": "A String", # Time within the maintenance window to start the maintenance operations.
                # It must be in format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
          },
        },
      },
      "networkPolicy": { # Configuration options for the NetworkPolicy feature. # Configuration options for the NetworkPolicy feature.
          # https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
        "enabled": True or False, # Whether network policy is enabled on the cluster.
        "provider": "A String", # The selected network policy provider.
      },
      "loggingService": "A String", # The logging service the cluster should use to write logs.
          # Currently available options:
          #
          # * `logging.googleapis.com` - the Google Cloud Logging service.
          # * `none` - no logs will be exported from the cluster.
          # * if left as an empty string,`logging.googleapis.com` will be used.
      "masterAuthorizedNetworksConfig": { # Configuration options for the master authorized networks feature. Enabled # The configuration options for master authorized networks feature.
          # 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.
        "enabled": True or False, # Whether or not master authorized networks is enabled.
        "cidrBlocks": [ # cidr_blocks define up to 10 external networks that could access
            # Kubernetes master through HTTPS.
          { # CidrBlock contains an optional name and one CIDR block.
            "displayName": "A String", # display_name is an optional field for users to identify CIDR blocks.
            "cidrBlock": "A String", # cidr_block must be specified in CIDR notation.
          },
        ],
      },
      "addonsConfig": { # Configuration for the addons that can be automatically spun up in the # Configurations for the various addons available to run in the cluster.
          # cluster, enabling additional functionality.
        "networkPolicyConfig": { # Configuration for NetworkPolicy. This only tracks whether the addon # 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.
            # is enabled or not on the Master, it does not track whether network policy
            # is enabled for the nodes.
          "disabled": True or False, # Whether NetworkPolicy is enabled for this cluster.
        },
        "cloudRunConfig": { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon. The `IstioConfig` addon must be
            # enabled in order to enable Cloud Run addon. This option can only be enabled
            # at cluster creation time.
          "disabled": True or False, # Whether Cloud Run addon is enabled for this cluster.
        },
        "httpLoadBalancing": { # Configuration options for the HTTP (L7) load balancing controller addon, # Configuration for the HTTP (L7) load balancing controller addon, which
            # makes it easy to set up HTTP load balancers for services in a cluster.
            # which makes it easy to set up HTTP load balancers for services in a cluster.
          "disabled": 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.
        },
        "horizontalPodAutoscaling": { # Configuration options for the horizontal pod autoscaling feature, which # 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.
            # increases or decreases the number of replica pods a replication controller
            # has based on the resource usage of the existing pods.
          "disabled": True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
              # When enabled, it ensures that a Heapster pod is running in the cluster,
              # which is also used by the Cloud Monitoring service.
        },
        "istioConfig": { # Configuration options for Istio addon. # Configuration for Istio, an open platform to connect, manage, and secure
            # microservices.
          "disabled": True or False, # Whether Istio is enabled for this cluster.
          "auth": "A String", # The specified Istio auth mode, either none, or mutual TLS.
        },
        "kubernetesDashboard": { # 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
          "disabled": True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
        },
      },
      "locations": [ # The list of Google Compute Engine
          # [zones](/compute/docs/zones#available) in which the cluster's nodes
          # should be located.
        "A String",
      ],
      "legacyAbac": { # Configuration for the legacy Attribute Based Access Control authorization # Configuration for the legacy ABAC authorization mode.
          # mode.
        "enabled": 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.
      },
      "enableTpu": True or False, # Enable the ability to use Cloud TPUs in this cluster.
      "defaultMaxPodsConstraint": { # 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.
        "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
      },
      "ipAllocationPolicy": { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
        "clusterIpv4Cidr": "A String", # This field is deprecated, use cluster_ipv4_cidr_block.
        "useIpAliases": True or False, # Whether alias IPs will be used for pod IPs in the cluster.
        "nodeIpv4Cidr": "A String", # This field is deprecated, use node_ipv4_cidr_block.
        "clusterIpv4CidrBlock": "A String", # 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.
        "clusterSecondaryRangeName": "A String", # 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 and
            # create_subnetwork is false.
        "servicesIpv4CidrBlock": "A String", # 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.
        "createSubnetwork": 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.
        "nodeIpv4CidrBlock": "A String", # 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.
        "tpuIpv4CidrBlock": "A String", # 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.
        "allowRouteOverlap": True or False, # If true, allow allocation of cluster CIDR ranges that overlap with certain
            # kinds of network routes. By default we do not allow cluster CIDR ranges to
            # intersect with any user declared routes. With allow_route_overlap == true,
            # we allow overlapping with CIDR ranges that are larger than the cluster CIDR
            # range.
            #
            # If this field is set to true, then cluster and services CIDRs must be
            # fully-specified (e.g. `10.96.0.0/14`, but not `/14`), which means:
            # 1) When `use_ip_aliases` is true, `cluster_ipv4_cidr_block` and
            #    `services_ipv4_cidr_block` must be fully-specified.
            # 2) When `use_ip_aliases` is false, `cluster.cluster_ipv4_cidr` muse be
            #    fully-specified.
        "subnetworkName": "A String", # 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.
        "servicesSecondaryRangeName": "A String", # 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 and
            # create_subnetwork is false.
        "servicesIpv4Cidr": "A String", # This field is deprecated, use services_ipv4_cidr_block.
      },
      "network": "A String", # The name of the Google Compute Engine
          # [network](/compute/docs/networks-and-firewalls#networks) to which the
          # cluster is connected. If left unspecified, the `default` network
          # will be used. On output this shows the network ID instead of
          # the name.
      "zone": "A String", # [Output only] The name of the Google Compute Engine
          # [zone](/compute/docs/zones#available) in which the cluster
          # resides.
          # This field is deprecated, use location instead.
      "instanceGroupUrls": [ # Deprecated. Use node_pools.instance_group_urls.
        "A String",
      ],
      "networkConfig": { # NetworkConfig reports the relative names of network & subnetwork. # Configuration for cluster networking.
        "subnetwork": "A String", # Output only. The relative name of the Google Compute Engine
            # [subnetwork](/compute/docs/vpc) to which the cluster is connected.
            # Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
        "network": "A String", # Output only. The relative name of the Google Compute Engine
            # network(/compute/docs/networks-and-firewalls#networks) to which
            # the cluster is connected.
            # Example: projects/my-project/global/networks/my-network
        "enableIntraNodeVisibility": True or False, # Whether Intra-node visibility is enabled for this cluster.
            # This makes same node pod to pod traffic visible for VPC network.
      },
      "privateCluster": True or False, # If this is a private cluster setup. Private clusters are clusters that, by
          # default have no external IP addresses on the nodes and where nodes and the
          # master communicate over private IP addresses.
          # This field is deprecated, use private_cluster_config.enable_private_nodes
          # instead.
      "podSecurityPolicyConfig": { # Configuration for the PodSecurityPolicy feature. # Configuration for the PodSecurityPolicy feature.
        "enabled": True or False, # Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
            # must be valid under a PodSecurityPolicy to be created.
      },
      "location": "A String", # [Output only] The name of the Google Compute Engine
          # [zone](/compute/docs/regions-zones/regions-zones#available) or
          # [region](/compute/docs/regions-zones/regions-zones#available) in which
          # the cluster resides.
      "workloadIdentityConfig": { # Configuration for the use of Kubernetes Service Accounts in GCP IAM # Configuration for the use of Kubernetes Service Accounts in GCP IAM
          # policies.
          # policies.
        "identityNamespace": "A String", # IAM Identity Namespace to attach all Kubernetes Service Accounts to.
      },
      "resourceUsageExportConfig": { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is
          # disabled when this config unspecified.
        "bigqueryDestination": { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
          "datasetId": "A String", # The ID of a BigQuery Dataset.
        },
        "enableNetworkEgressMetering": 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.
        "consumptionMeteringConfig": { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
          "enabled": 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.
        },
      },
      "masterIpv4CidrBlock": "A String", # The IP prefix in CIDR notation to use for the hosted master network.
          # This prefix will be used for assigning private IP addresses to the
          # master or set of masters, as well as the ILB VIP.
          # This field is deprecated, use
          # private_cluster_config.master_ipv4_cidr_block instead.
      "conditions": [ # 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).
          "message": "A String", # Human-friendly representation of the condition
          "code": "A String", # Machine-friendly representation of the condition
        },
      ],
      "servicesIpv4Cidr": "A String", # [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.
      "statusMessage": "A String", # [Output only] Additional information about the current status of this
          # cluster, if available.
      "tierSettings": { # Cluster tier settings. # Cluster tier settings.
        "tier": "A String", # Cluster tier.
      },
      "status": "A String", # [Output only] The current status of this cluster.
      "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
      "description": "A String", # An optional description of this cluster.
      "databaseEncryption": { # Configuration of etcd encryption. # Configuration of etcd encryption.
        "state": "A String", # Denotes the state of etcd encryption.
        "keyName": "A String", # 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
      },
      "currentNodeVersion": "A String", # [Output only] Deprecated, use
          # [NodePool.version](/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools)
          # instead. The current version of the node software components.
          # If they are currently at multiple versions because they're in the process
          # of being upgraded, this reflects the minimum version of all nodes.
      "binaryAuthorization": { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
        "enabled": True or False, # Enable Binary Authorization for this cluster. If enabled, all container
            # images will be validated by Google Binauthz.
      },
      "labelFingerprint": "A String", # The fingerprint of the set of labels for this cluster.
      "autoscaling": { # ClusterAutoscaling contains global, per-cluster information # Cluster-level autoscaling configuration.
          # required by Cluster Autoscaler to automatically adjust
          # the size of the cluster and create/delete
          # node pools based on the current needs.
        "autoprovisioningNodePoolDefaults": { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created # AutoprovisioningNodePoolDefaults contains defaults for a node pool
            # created by NAP.
            # by NAP.
          "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
              # service_account is specified, scopes should be empty.
          "oauthScopes": [ # Scopes that are used by NAP when creating node pools. If oauth_scopes are
              # specified, service_account should be empty.
            "A String",
          ],
        },
        "resourceLimits": [ # 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.
            "resourceType": "A String", # Resource name "cpu", "memory" or gpu-specific string.
            "minimum": "A String", # Minimum amount of the resource in the cluster.
            "maximum": "A String", # Maximum amount of the resource in the cluster.
          },
        ],
        "autoprovisioningLocations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
            # in which the NodePool's nodes can be created by NAP.
          "A String",
        ],
        "enableNodeAutoprovisioning": True or False, # Enables automatic node pool creation and deletion.
      },
      "masterAuth": { # The authentication information for accessing the master endpoint. # 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 "admin", a random password will be generated, and a client
          # certificate will be issued.
          # Authentication can be done using HTTP basic auth or using client
          # certificates.
        "username": "A String", # 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).
        "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate
            # to the cluster endpoint.
        "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to
            # authenticate to the cluster endpoint.
        "clientCertificateConfig": { # 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.
          "issueClientCertificate": True or False, # Issue a client certificate.
        },
        "password": "A String", # 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.
        "clusterCaCertificate": "A String",
      },
      "expireTime": "A String", # [Output only] The time the cluster will be automatically
          # deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your
          # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
          # 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
          # "node_pool" object, since this configuration (along with the
          # "node_config") will be used to create a "NodePool" 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.
      "nodePools": [ # The node pools associated with this cluster.
          # This field should not be set if "node_config" or "initial_node_count" are
          # specified.
        { # NodePool contains the name and configuration for a cluster's node pool.
            # Node pools are a set of nodes (i.e. VM'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.
          "status": "A String", # [Output only] The status of the nodes in this pool instance.
          "statusMessage": "A String", # [Output only] Additional information about the current status of this
              # node pool instance, if available.
          "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
              # node pool.
            "autoRepair": True or False, # Whether the nodes will be automatically repaired.
            "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
                # the Auto Upgrades will proceed.
              "description": "A String", # [Output only] This field is set when upgrades are about to commence
                  # with the description of the upgrade.
              "autoUpgradeStartTime": "A String", # [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.
            },
            "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
          },
          "name": "A String", # The name of the node pool.
          "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
              # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
              # associated with this node pool.
            "A String",
          ],
          "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
              # only if a valid configuration is present.
              # adjust the size of the node pool to the current cluster usage.
            "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
                # max_node_count.
            "autoprovisioned": True or False, # Can this node pool be deleted automatically.
            "enabled": True or False, # Is autoscaling enabled for this node pool.
            "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
                # has to enough quota to scale up the cluster.
          },
          "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
              # in which the NodePool's nodes should be located.
            "A String",
          ],
          "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
              # simultaneously on a node in the node pool.
            "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
          },
          "version": "A String", # The version of the Kubernetes of this node.
          "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your
              # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
              # is sufficient for this number of instances. You must also have available
              # firewall and routes quota.
          "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
          "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
            "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
              "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
            },
            "machineType": "A String", # The name of a Google Compute Engine [machine
                # type](/compute/docs/machine-types) (e.g.
                # `n1-standard-1`).
                #
                # If unspecified, the default machine type is
                # `n1-standard-1`.
            "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
              "enableIntegrityMonitoring": 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.
              "enableSecureBoot": 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.
            },
            "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
                #
                # If unspecified, the default disk type is 'pd-standard'
            "tags": [ # 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.
              "A String",
            ],
            "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
                # https://cloud.google.com/compute/docs/instances/preemptible for more
                # inforamtion about preemptible VM instances.
            "labels": { # 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'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/
              "a_key": "A String",
            },
            "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
                # no Service Account is specified, the "default" service account is used.
            "oauthScopes": [ # The set of Google API scopes to be made available on all of the
                # node VMs under the "default" 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](/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.
              "A String",
            ],
            "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
                  # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
                  #
                  # For more information, including usage and the valid values, see:
                  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
                "key": "A String", # Key for taint.
                "effect": "A String", # Effect for taint.
                "value": "A String", # Value for taint.
              },
            ],
            "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
                # workloads on the node pool.
              "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
                  # workloads running on the node.
            },
            "diskSizeGb": 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.
            "accelerators": [ # 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.
                "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
                "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                    # [here](/compute/docs/gpus/#Introduction)
              },
            ],
            "minCpuPlatform": "A String", # 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
                # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
                # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
                # information, read [how to specify min CPU
                # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
            "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
                #
                # The limit for this value is dependant upon the maximum number of
                # disks available on a machine per zone. See:
                # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
                # for more information.
            "imageType": "A String", # The image type to use for this node. Note that for a given image type,
                # the latest version of it will be used.
            "metadata": { # 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:
                #  "cluster-location"
                #  "cluster-name"
                #  "cluster-uid"
                #  "configure-sh"
                #  "containerd-configure-sh"
                #  "enable-oslogin"
                #  "gci-ensure-gke-docker"
                #  "gci-update-strategy"
                #  "instance-template"
                #  "kube-env"
                #  "startup-script"
                #  "user-data"
                #  "disable-address-manager"
                #  "windows-startup-script-ps1"
                #  "common-psm1"
                #  "k8s-node-setup-psm1"
                #  "install-ssh-psm1"
                #  "user-profile-psm1"
                #  "serial-port-logging-enable"
                # 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'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.
              "a_key": "A String",
            },
          },
          "conditions": [ # 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).
              "message": "A String", # Human-friendly representation of the condition
              "code": "A String", # Machine-friendly representation of the condition
            },
          ],
          "selfLink": "A String", # [Output only] Server-defined URL for the resource.
        },
      ],
      "monitoringService": "A String", # The monitoring service the cluster should use to write metrics.
          # Currently available options:
          #
          # * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
          # * `none` - no metrics will be exported from the cluster.
          # * if left as an empty string, `monitoring.googleapis.com` will be used.
      "createTime": "A String", # [Output only] The time the cluster was created, in
          # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
      "authenticatorGroupsConfig": { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
        "enabled": True or False, # Whether this cluster should return group membership lookups
            # during authentication using a group of security groups.
        "securityGroup": "A String", # The name of the security group-of-groups to be used. Only relevant
            # if enabled = true.
      },
      "privateClusterConfig": { # Configuration options for private clusters. # Configuration for private cluster.
        "enablePrivateEndpoint": True or False, # Whether the master's internal IP address is used as the cluster endpoint.
        "publicEndpoint": "A String", # Output only. The external IP address of this cluster's master endpoint.
        "enablePrivateNodes": 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.
        "privateEndpoint": "A String", # Output only. The internal IP address of this cluster's master endpoint.
        "masterIpv4CidrBlock": "A String", # 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's network.
        "enablePeeringRouteSharing": True or False, # Whether to enable route sharing over the network peering.
      },
      "endpoint": "A String", # [Output only] The IP address of this cluster'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.
      "currentNodeCount": 42, # [Output only]  The number of nodes currently in the cluster. Deprecated.
          # Call Kubernetes API directly to retrieve node information.
      "name": "A String", # The name of this cluster. The name must be unique within this project
          # and zone, 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.
      "verticalPodAutoscaling": { # VerticalPodAutoscaling contains global, per-cluster information # Cluster-level Vertical Pod Autoscaling configuration.
          # required by Vertical Pod Autoscaler to automatically adjust
          # the resources of pods controlled by it.
        "enabled": True or False, # Enables vertical pod autoscaling.
      },
      "enableKubernetesAlpha": True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha
          # API groups (e.g. v1beta1) 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.
      "initialClusterVersion": "A String", # 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:
          #
          # - "latest": picks the highest valid Kubernetes version
          # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
          # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
          # - "1.X.Y-gke.N": picks an explicit Kubernetes version
          # - "","-": picks the default Kubernetes version
      "nodeConfig": { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster's nodes.
          # For requests, this field should only be used in lieu of a
          # "node_pool" object, since this configuration (along with the
          # "initial_node_count") will be used to create a "NodePool" 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.
        "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
          "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
        },
        "machineType": "A String", # The name of a Google Compute Engine [machine
            # type](/compute/docs/machine-types) (e.g.
            # `n1-standard-1`).
            #
            # If unspecified, the default machine type is
            # `n1-standard-1`.
        "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
          "enableIntegrityMonitoring": 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.
          "enableSecureBoot": 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.
        },
        "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
            #
            # If unspecified, the default disk type is 'pd-standard'
        "tags": [ # 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.
          "A String",
        ],
        "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
            # https://cloud.google.com/compute/docs/instances/preemptible for more
            # inforamtion about preemptible VM instances.
        "labels": { # 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'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/
          "a_key": "A String",
        },
        "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
            # no Service Account is specified, the "default" service account is used.
        "oauthScopes": [ # The set of Google API scopes to be made available on all of the
            # node VMs under the "default" 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](/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.
          "A String",
        ],
        "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
              # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
              #
              # For more information, including usage and the valid values, see:
              # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
            "key": "A String", # Key for taint.
            "effect": "A String", # Effect for taint.
            "value": "A String", # Value for taint.
          },
        ],
        "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
            # workloads on the node pool.
          "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
              # workloads running on the node.
        },
        "diskSizeGb": 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.
        "accelerators": [ # 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.
            "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
            "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                # [here](/compute/docs/gpus/#Introduction)
          },
        ],
        "minCpuPlatform": "A String", # 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
            # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
            # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
            # information, read [how to specify min CPU
            # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
        "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
            #
            # The limit for this value is dependant upon the maximum number of
            # disks available on a machine per zone. See:
            # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
            # for more information.
        "imageType": "A String", # The image type to use for this node. Note that for a given image type,
            # the latest version of it will be used.
        "metadata": { # 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:
            #  "cluster-location"
            #  "cluster-name"
            #  "cluster-uid"
            #  "configure-sh"
            #  "containerd-configure-sh"
            #  "enable-oslogin"
            #  "gci-ensure-gke-docker"
            #  "gci-update-strategy"
            #  "instance-template"
            #  "kube-env"
            #  "startup-script"
            #  "user-data"
            #  "disable-address-manager"
            #  "windows-startup-script-ps1"
            #  "common-psm1"
            #  "k8s-node-setup-psm1"
            #  "install-ssh-psm1"
            #  "user-profile-psm1"
            #  "serial-port-logging-enable"
            # 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'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.
          "a_key": "A String",
        },
      },
      "clusterIpv4Cidr": "A String", # 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`.
      "subnetwork": "A String", # The name of the Google Compute Engine
          # [subnetwork](/compute/docs/subnetworks) to which the
          # cluster is connected. On output this shows the subnetwork ID instead of
          # the name.
      "resourceLabels": { # The resource labels for the cluster to use to annotate any related
          # Google Compute Engine resources.
        "a_key": "A String",
      },
      "selfLink": "A String", # [Output only] Server-defined URL for the resource.
      "tpuIpv4CidrBlock": "A String", # [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`).
    },
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, zone, clusterId, name=None, x__xgafv=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't present
when the cluster was initially created.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to delete.
This field has been deprecated and replaced by the name field. (required)
  name: string, The name (project, location, cluster) of the cluster to delete.
Specified in the format 'projects/*/locations/*/clusters/*'.
  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # A Google Kubernetes Engine cluster.
    "nodeIpv4CidrSize": 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.
    "maintenancePolicy": { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
      "window": { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
        "dailyMaintenanceWindow": { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
          "duration": "A String", # [Output only] Duration of the time window, automatically chosen to be
              # smallest possible in the given scenario.
          "startTime": "A String", # Time within the maintenance window to start the maintenance operations.
              # It must be in format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
        },
      },
    },
    "networkPolicy": { # Configuration options for the NetworkPolicy feature. # Configuration options for the NetworkPolicy feature.
        # https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
      "enabled": True or False, # Whether network policy is enabled on the cluster.
      "provider": "A String", # The selected network policy provider.
    },
    "loggingService": "A String", # The logging service the cluster should use to write logs.
        # Currently available options:
        #
        # * `logging.googleapis.com` - the Google Cloud Logging service.
        # * `none` - no logs will be exported from the cluster.
        # * if left as an empty string,`logging.googleapis.com` will be used.
    "masterAuthorizedNetworksConfig": { # Configuration options for the master authorized networks feature. Enabled # The configuration options for master authorized networks feature.
        # 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.
      "enabled": True or False, # Whether or not master authorized networks is enabled.
      "cidrBlocks": [ # cidr_blocks define up to 10 external networks that could access
          # Kubernetes master through HTTPS.
        { # CidrBlock contains an optional name and one CIDR block.
          "displayName": "A String", # display_name is an optional field for users to identify CIDR blocks.
          "cidrBlock": "A String", # cidr_block must be specified in CIDR notation.
        },
      ],
    },
    "addonsConfig": { # Configuration for the addons that can be automatically spun up in the # Configurations for the various addons available to run in the cluster.
        # cluster, enabling additional functionality.
      "networkPolicyConfig": { # Configuration for NetworkPolicy. This only tracks whether the addon # 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.
          # is enabled or not on the Master, it does not track whether network policy
          # is enabled for the nodes.
        "disabled": True or False, # Whether NetworkPolicy is enabled for this cluster.
      },
      "cloudRunConfig": { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon. The `IstioConfig` addon must be
          # enabled in order to enable Cloud Run addon. This option can only be enabled
          # at cluster creation time.
        "disabled": True or False, # Whether Cloud Run addon is enabled for this cluster.
      },
      "httpLoadBalancing": { # Configuration options for the HTTP (L7) load balancing controller addon, # Configuration for the HTTP (L7) load balancing controller addon, which
          # makes it easy to set up HTTP load balancers for services in a cluster.
          # which makes it easy to set up HTTP load balancers for services in a cluster.
        "disabled": 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.
      },
      "horizontalPodAutoscaling": { # Configuration options for the horizontal pod autoscaling feature, which # 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.
          # increases or decreases the number of replica pods a replication controller
          # has based on the resource usage of the existing pods.
        "disabled": True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
            # When enabled, it ensures that a Heapster pod is running in the cluster,
            # which is also used by the Cloud Monitoring service.
      },
      "istioConfig": { # Configuration options for Istio addon. # Configuration for Istio, an open platform to connect, manage, and secure
          # microservices.
        "disabled": True or False, # Whether Istio is enabled for this cluster.
        "auth": "A String", # The specified Istio auth mode, either none, or mutual TLS.
      },
      "kubernetesDashboard": { # 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
        "disabled": True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
      },
    },
    "locations": [ # The list of Google Compute Engine
        # [zones](/compute/docs/zones#available) in which the cluster's nodes
        # should be located.
      "A String",
    ],
    "legacyAbac": { # Configuration for the legacy Attribute Based Access Control authorization # Configuration for the legacy ABAC authorization mode.
        # mode.
      "enabled": 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.
    },
    "enableTpu": True or False, # Enable the ability to use Cloud TPUs in this cluster.
    "defaultMaxPodsConstraint": { # 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.
      "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
    },
    "ipAllocationPolicy": { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
      "clusterIpv4Cidr": "A String", # This field is deprecated, use cluster_ipv4_cidr_block.
      "useIpAliases": True or False, # Whether alias IPs will be used for pod IPs in the cluster.
      "nodeIpv4Cidr": "A String", # This field is deprecated, use node_ipv4_cidr_block.
      "clusterIpv4CidrBlock": "A String", # 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.
      "clusterSecondaryRangeName": "A String", # 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 and
          # create_subnetwork is false.
      "servicesIpv4CidrBlock": "A String", # 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.
      "createSubnetwork": 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.
      "nodeIpv4CidrBlock": "A String", # 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.
      "tpuIpv4CidrBlock": "A String", # 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.
      "allowRouteOverlap": True or False, # If true, allow allocation of cluster CIDR ranges that overlap with certain
          # kinds of network routes. By default we do not allow cluster CIDR ranges to
          # intersect with any user declared routes. With allow_route_overlap == true,
          # we allow overlapping with CIDR ranges that are larger than the cluster CIDR
          # range.
          #
          # If this field is set to true, then cluster and services CIDRs must be
          # fully-specified (e.g. `10.96.0.0/14`, but not `/14`), which means:
          # 1) When `use_ip_aliases` is true, `cluster_ipv4_cidr_block` and
          #    `services_ipv4_cidr_block` must be fully-specified.
          # 2) When `use_ip_aliases` is false, `cluster.cluster_ipv4_cidr` muse be
          #    fully-specified.
      "subnetworkName": "A String", # 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.
      "servicesSecondaryRangeName": "A String", # 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 and
          # create_subnetwork is false.
      "servicesIpv4Cidr": "A String", # This field is deprecated, use services_ipv4_cidr_block.
    },
    "network": "A String", # The name of the Google Compute Engine
        # [network](/compute/docs/networks-and-firewalls#networks) to which the
        # cluster is connected. If left unspecified, the `default` network
        # will be used. On output this shows the network ID instead of
        # the name.
    "zone": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field is deprecated, use location instead.
    "instanceGroupUrls": [ # Deprecated. Use node_pools.instance_group_urls.
      "A String",
    ],
    "networkConfig": { # NetworkConfig reports the relative names of network & subnetwork. # Configuration for cluster networking.
      "subnetwork": "A String", # Output only. The relative name of the Google Compute Engine
          # [subnetwork](/compute/docs/vpc) to which the cluster is connected.
          # Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
      "network": "A String", # Output only. The relative name of the Google Compute Engine
          # network(/compute/docs/networks-and-firewalls#networks) to which
          # the cluster is connected.
          # Example: projects/my-project/global/networks/my-network
      "enableIntraNodeVisibility": True or False, # Whether Intra-node visibility is enabled for this cluster.
          # This makes same node pod to pod traffic visible for VPC network.
    },
    "privateCluster": True or False, # If this is a private cluster setup. Private clusters are clusters that, by
        # default have no external IP addresses on the nodes and where nodes and the
        # master communicate over private IP addresses.
        # This field is deprecated, use private_cluster_config.enable_private_nodes
        # instead.
    "podSecurityPolicyConfig": { # Configuration for the PodSecurityPolicy feature. # Configuration for the PodSecurityPolicy feature.
      "enabled": True or False, # Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
          # must be valid under a PodSecurityPolicy to be created.
    },
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "workloadIdentityConfig": { # Configuration for the use of Kubernetes Service Accounts in GCP IAM # Configuration for the use of Kubernetes Service Accounts in GCP IAM
        # policies.
        # policies.
      "identityNamespace": "A String", # IAM Identity Namespace to attach all Kubernetes Service Accounts to.
    },
    "resourceUsageExportConfig": { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is
        # disabled when this config unspecified.
      "bigqueryDestination": { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
        "datasetId": "A String", # The ID of a BigQuery Dataset.
      },
      "enableNetworkEgressMetering": 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.
      "consumptionMeteringConfig": { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
        "enabled": 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.
      },
    },
    "masterIpv4CidrBlock": "A String", # The IP prefix in CIDR notation to use for the hosted master network.
        # This prefix will be used for assigning private IP addresses to the
        # master or set of masters, as well as the ILB VIP.
        # This field is deprecated, use
        # private_cluster_config.master_ipv4_cidr_block instead.
    "conditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "servicesIpv4Cidr": "A String", # [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.
    "statusMessage": "A String", # [Output only] Additional information about the current status of this
        # cluster, if available.
    "tierSettings": { # Cluster tier settings. # Cluster tier settings.
      "tier": "A String", # Cluster tier.
    },
    "status": "A String", # [Output only] The current status of this cluster.
    "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
    "description": "A String", # An optional description of this cluster.
    "databaseEncryption": { # Configuration of etcd encryption. # Configuration of etcd encryption.
      "state": "A String", # Denotes the state of etcd encryption.
      "keyName": "A String", # 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
    },
    "currentNodeVersion": "A String", # [Output only] Deprecated, use
        # [NodePool.version](/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools)
        # instead. The current version of the node software components.
        # If they are currently at multiple versions because they're in the process
        # of being upgraded, this reflects the minimum version of all nodes.
    "binaryAuthorization": { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
      "enabled": True or False, # Enable Binary Authorization for this cluster. If enabled, all container
          # images will be validated by Google Binauthz.
    },
    "labelFingerprint": "A String", # The fingerprint of the set of labels for this cluster.
    "autoscaling": { # ClusterAutoscaling contains global, per-cluster information # Cluster-level autoscaling configuration.
        # required by Cluster Autoscaler to automatically adjust
        # the size of the cluster and create/delete
        # node pools based on the current needs.
      "autoprovisioningNodePoolDefaults": { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created # AutoprovisioningNodePoolDefaults contains defaults for a node pool
          # created by NAP.
          # by NAP.
        "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
            # service_account is specified, scopes should be empty.
        "oauthScopes": [ # Scopes that are used by NAP when creating node pools. If oauth_scopes are
            # specified, service_account should be empty.
          "A String",
        ],
      },
      "resourceLimits": [ # 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.
          "resourceType": "A String", # Resource name "cpu", "memory" or gpu-specific string.
          "minimum": "A String", # Minimum amount of the resource in the cluster.
          "maximum": "A String", # Maximum amount of the resource in the cluster.
        },
      ],
      "autoprovisioningLocations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
          # in which the NodePool's nodes can be created by NAP.
        "A String",
      ],
      "enableNodeAutoprovisioning": True or False, # Enables automatic node pool creation and deletion.
    },
    "masterAuth": { # The authentication information for accessing the master endpoint. # 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 "admin", a random password will be generated, and a client
        # certificate will be issued.
        # Authentication can be done using HTTP basic auth or using client
        # certificates.
      "username": "A String", # 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).
      "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate
          # to the cluster endpoint.
      "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to
          # authenticate to the cluster endpoint.
      "clientCertificateConfig": { # 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.
        "issueClientCertificate": True or False, # Issue a client certificate.
      },
      "password": "A String", # 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.
      "clusterCaCertificate": "A String",
    },
    "expireTime": "A String", # [Output only] The time the cluster will be automatically
        # deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your
        # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
        # 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
        # "node_pool" object, since this configuration (along with the
        # "node_config") will be used to create a "NodePool" 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.
    "nodePools": [ # The node pools associated with this cluster.
        # This field should not be set if "node_config" or "initial_node_count" are
        # specified.
      { # NodePool contains the name and configuration for a cluster's node pool.
          # Node pools are a set of nodes (i.e. VM'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.
        "status": "A String", # [Output only] The status of the nodes in this pool instance.
        "statusMessage": "A String", # [Output only] Additional information about the current status of this
            # node pool instance, if available.
        "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
            # node pool.
          "autoRepair": True or False, # Whether the nodes will be automatically repaired.
          "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
              # the Auto Upgrades will proceed.
            "description": "A String", # [Output only] This field is set when upgrades are about to commence
                # with the description of the upgrade.
            "autoUpgradeStartTime": "A String", # [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.
          },
          "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
        },
        "name": "A String", # The name of the node pool.
        "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
            # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
            # associated with this node pool.
          "A String",
        ],
        "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
            # only if a valid configuration is present.
            # adjust the size of the node pool to the current cluster usage.
          "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
              # max_node_count.
          "autoprovisioned": True or False, # Can this node pool be deleted automatically.
          "enabled": True or False, # Is autoscaling enabled for this node pool.
          "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
              # has to enough quota to scale up the cluster.
        },
        "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
            # in which the NodePool's nodes should be located.
          "A String",
        ],
        "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
            # simultaneously on a node in the node pool.
          "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
        },
        "version": "A String", # The version of the Kubernetes of this node.
        "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your
            # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
            # is sufficient for this number of instances. You must also have available
            # firewall and routes quota.
        "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
        "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
          "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
            "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
          },
          "machineType": "A String", # The name of a Google Compute Engine [machine
              # type](/compute/docs/machine-types) (e.g.
              # `n1-standard-1`).
              #
              # If unspecified, the default machine type is
              # `n1-standard-1`.
          "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
            "enableIntegrityMonitoring": 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.
            "enableSecureBoot": 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.
          },
          "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
              #
              # If unspecified, the default disk type is 'pd-standard'
          "tags": [ # 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.
            "A String",
          ],
          "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
              # https://cloud.google.com/compute/docs/instances/preemptible for more
              # inforamtion about preemptible VM instances.
          "labels": { # 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'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/
            "a_key": "A String",
          },
          "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
              # no Service Account is specified, the "default" service account is used.
          "oauthScopes": [ # The set of Google API scopes to be made available on all of the
              # node VMs under the "default" 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](/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.
            "A String",
          ],
          "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
                # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
                #
                # For more information, including usage and the valid values, see:
                # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
              "key": "A String", # Key for taint.
              "effect": "A String", # Effect for taint.
              "value": "A String", # Value for taint.
            },
          ],
          "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
              # workloads on the node pool.
            "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
                # workloads running on the node.
          },
          "diskSizeGb": 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.
          "accelerators": [ # 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.
              "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
              "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                  # [here](/compute/docs/gpus/#Introduction)
            },
          ],
          "minCpuPlatform": "A String", # 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
              # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
              # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
              # information, read [how to specify min CPU
              # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
          "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
              #
              # The limit for this value is dependant upon the maximum number of
              # disks available on a machine per zone. See:
              # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
              # for more information.
          "imageType": "A String", # The image type to use for this node. Note that for a given image type,
              # the latest version of it will be used.
          "metadata": { # 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:
              #  "cluster-location"
              #  "cluster-name"
              #  "cluster-uid"
              #  "configure-sh"
              #  "containerd-configure-sh"
              #  "enable-oslogin"
              #  "gci-ensure-gke-docker"
              #  "gci-update-strategy"
              #  "instance-template"
              #  "kube-env"
              #  "startup-script"
              #  "user-data"
              #  "disable-address-manager"
              #  "windows-startup-script-ps1"
              #  "common-psm1"
              #  "k8s-node-setup-psm1"
              #  "install-ssh-psm1"
              #  "user-profile-psm1"
              #  "serial-port-logging-enable"
              # 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'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.
            "a_key": "A String",
          },
        },
        "conditions": [ # 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).
            "message": "A String", # Human-friendly representation of the condition
            "code": "A String", # Machine-friendly representation of the condition
          },
        ],
        "selfLink": "A String", # [Output only] Server-defined URL for the resource.
      },
    ],
    "monitoringService": "A String", # The monitoring service the cluster should use to write metrics.
        # Currently available options:
        #
        # * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
        # * `none` - no metrics will be exported from the cluster.
        # * if left as an empty string, `monitoring.googleapis.com` will be used.
    "createTime": "A String", # [Output only] The time the cluster was created, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "authenticatorGroupsConfig": { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
      "enabled": True or False, # Whether this cluster should return group membership lookups
          # during authentication using a group of security groups.
      "securityGroup": "A String", # The name of the security group-of-groups to be used. Only relevant
          # if enabled = true.
    },
    "privateClusterConfig": { # Configuration options for private clusters. # Configuration for private cluster.
      "enablePrivateEndpoint": True or False, # Whether the master's internal IP address is used as the cluster endpoint.
      "publicEndpoint": "A String", # Output only. The external IP address of this cluster's master endpoint.
      "enablePrivateNodes": 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.
      "privateEndpoint": "A String", # Output only. The internal IP address of this cluster's master endpoint.
      "masterIpv4CidrBlock": "A String", # 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's network.
      "enablePeeringRouteSharing": True or False, # Whether to enable route sharing over the network peering.
    },
    "endpoint": "A String", # [Output only] The IP address of this cluster'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.
    "currentNodeCount": 42, # [Output only]  The number of nodes currently in the cluster. Deprecated.
        # Call Kubernetes API directly to retrieve node information.
    "name": "A String", # The name of this cluster. The name must be unique within this project
        # and zone, 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.
    "verticalPodAutoscaling": { # VerticalPodAutoscaling contains global, per-cluster information # Cluster-level Vertical Pod Autoscaling configuration.
        # required by Vertical Pod Autoscaler to automatically adjust
        # the resources of pods controlled by it.
      "enabled": True or False, # Enables vertical pod autoscaling.
    },
    "enableKubernetesAlpha": True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha
        # API groups (e.g. v1beta1) 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.
    "initialClusterVersion": "A String", # 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:
        #
        # - "latest": picks the highest valid Kubernetes version
        # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        # - "1.X.Y-gke.N": picks an explicit Kubernetes version
        # - "","-": picks the default Kubernetes version
    "nodeConfig": { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster's nodes.
        # For requests, this field should only be used in lieu of a
        # "node_pool" object, since this configuration (along with the
        # "initial_node_count") will be used to create a "NodePool" 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.
      "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
        "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
      },
      "machineType": "A String", # The name of a Google Compute Engine [machine
          # type](/compute/docs/machine-types) (e.g.
          # `n1-standard-1`).
          #
          # If unspecified, the default machine type is
          # `n1-standard-1`.
      "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
        "enableIntegrityMonitoring": 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.
        "enableSecureBoot": 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.
      },
      "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
          #
          # If unspecified, the default disk type is 'pd-standard'
      "tags": [ # 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.
        "A String",
      ],
      "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
          # https://cloud.google.com/compute/docs/instances/preemptible for more
          # inforamtion about preemptible VM instances.
      "labels": { # 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'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/
        "a_key": "A String",
      },
      "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
          # no Service Account is specified, the "default" service account is used.
      "oauthScopes": [ # The set of Google API scopes to be made available on all of the
          # node VMs under the "default" 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](/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.
        "A String",
      ],
      "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
            # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
            #
            # For more information, including usage and the valid values, see:
            # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
          "key": "A String", # Key for taint.
          "effect": "A String", # Effect for taint.
          "value": "A String", # Value for taint.
        },
      ],
      "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
          # workloads on the node pool.
        "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
            # workloads running on the node.
      },
      "diskSizeGb": 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.
      "accelerators": [ # 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.
          "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
          "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
              # [here](/compute/docs/gpus/#Introduction)
        },
      ],
      "minCpuPlatform": "A String", # 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
          # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
          # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
          # information, read [how to specify min CPU
          # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
      "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
          #
          # The limit for this value is dependant upon the maximum number of
          # disks available on a machine per zone. See:
          # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
          # for more information.
      "imageType": "A String", # The image type to use for this node. Note that for a given image type,
          # the latest version of it will be used.
      "metadata": { # 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:
          #  "cluster-location"
          #  "cluster-name"
          #  "cluster-uid"
          #  "configure-sh"
          #  "containerd-configure-sh"
          #  "enable-oslogin"
          #  "gci-ensure-gke-docker"
          #  "gci-update-strategy"
          #  "instance-template"
          #  "kube-env"
          #  "startup-script"
          #  "user-data"
          #  "disable-address-manager"
          #  "windows-startup-script-ps1"
          #  "common-psm1"
          #  "k8s-node-setup-psm1"
          #  "install-ssh-psm1"
          #  "user-profile-psm1"
          #  "serial-port-logging-enable"
          # 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'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.
        "a_key": "A String",
      },
    },
    "clusterIpv4Cidr": "A String", # 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`.
    "subnetwork": "A String", # The name of the Google Compute Engine
        # [subnetwork](/compute/docs/subnetworks) to which the
        # cluster is connected. On output this shows the subnetwork ID instead of
        # the name.
    "resourceLabels": { # The resource labels for the cluster to use to annotate any related
        # Google Compute Engine resources.
      "a_key": "A String",
    },
    "selfLink": "A String", # [Output only] Server-defined URL for the resource.
    "tpuIpv4CidrBlock": "A String", # [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`).
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to update.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
      # a cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to update.
        # This field has been deprecated and replaced by the name field.
    "enabled": True or False, # Whether ABAC authorization will be enabled in the cluster.
    "name": "A String", # The name (project, location, cluster id) of the cluster to set legacy abac.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # ListClustersResponse is the result of ListClustersRequest.
    "clusters": [ # A list of clusters in the project in the specified zone, or
        # across all ones.
      { # A Google Kubernetes Engine cluster.
        "nodeIpv4CidrSize": 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.
        "maintenancePolicy": { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # Configure the maintenance policy for this cluster.
          "window": { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
            "dailyMaintenanceWindow": { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
              "duration": "A String", # [Output only] Duration of the time window, automatically chosen to be
                  # smallest possible in the given scenario.
              "startTime": "A String", # Time within the maintenance window to start the maintenance operations.
                  # It must be in format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
            },
          },
        },
        "networkPolicy": { # Configuration options for the NetworkPolicy feature. # Configuration options for the NetworkPolicy feature.
            # https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
          "enabled": True or False, # Whether network policy is enabled on the cluster.
          "provider": "A String", # The selected network policy provider.
        },
        "loggingService": "A String", # The logging service the cluster should use to write logs.
            # Currently available options:
            #
            # * `logging.googleapis.com` - the Google Cloud Logging service.
            # * `none` - no logs will be exported from the cluster.
            # * if left as an empty string,`logging.googleapis.com` will be used.
        "masterAuthorizedNetworksConfig": { # Configuration options for the master authorized networks feature. Enabled # The configuration options for master authorized networks feature.
            # 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.
          "enabled": True or False, # Whether or not master authorized networks is enabled.
          "cidrBlocks": [ # cidr_blocks define up to 10 external networks that could access
              # Kubernetes master through HTTPS.
            { # CidrBlock contains an optional name and one CIDR block.
              "displayName": "A String", # display_name is an optional field for users to identify CIDR blocks.
              "cidrBlock": "A String", # cidr_block must be specified in CIDR notation.
            },
          ],
        },
        "addonsConfig": { # Configuration for the addons that can be automatically spun up in the # Configurations for the various addons available to run in the cluster.
            # cluster, enabling additional functionality.
          "networkPolicyConfig": { # Configuration for NetworkPolicy. This only tracks whether the addon # 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.
              # is enabled or not on the Master, it does not track whether network policy
              # is enabled for the nodes.
            "disabled": True or False, # Whether NetworkPolicy is enabled for this cluster.
          },
          "cloudRunConfig": { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon. The `IstioConfig` addon must be
              # enabled in order to enable Cloud Run addon. This option can only be enabled
              # at cluster creation time.
            "disabled": True or False, # Whether Cloud Run addon is enabled for this cluster.
          },
          "httpLoadBalancing": { # Configuration options for the HTTP (L7) load balancing controller addon, # Configuration for the HTTP (L7) load balancing controller addon, which
              # makes it easy to set up HTTP load balancers for services in a cluster.
              # which makes it easy to set up HTTP load balancers for services in a cluster.
            "disabled": 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.
          },
          "horizontalPodAutoscaling": { # Configuration options for the horizontal pod autoscaling feature, which # 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.
              # increases or decreases the number of replica pods a replication controller
              # has based on the resource usage of the existing pods.
            "disabled": True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
                # When enabled, it ensures that a Heapster pod is running in the cluster,
                # which is also used by the Cloud Monitoring service.
          },
          "istioConfig": { # Configuration options for Istio addon. # Configuration for Istio, an open platform to connect, manage, and secure
              # microservices.
            "disabled": True or False, # Whether Istio is enabled for this cluster.
            "auth": "A String", # The specified Istio auth mode, either none, or mutual TLS.
          },
          "kubernetesDashboard": { # 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
            "disabled": True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
          },
        },
        "locations": [ # The list of Google Compute Engine
            # [zones](/compute/docs/zones#available) in which the cluster's nodes
            # should be located.
          "A String",
        ],
        "legacyAbac": { # Configuration for the legacy Attribute Based Access Control authorization # Configuration for the legacy ABAC authorization mode.
            # mode.
          "enabled": 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.
        },
        "enableTpu": True or False, # Enable the ability to use Cloud TPUs in this cluster.
        "defaultMaxPodsConstraint": { # 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.
          "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
        },
        "ipAllocationPolicy": { # Configuration for controlling how IPs are allocated in the cluster. # Configuration for cluster IP allocation.
          "clusterIpv4Cidr": "A String", # This field is deprecated, use cluster_ipv4_cidr_block.
          "useIpAliases": True or False, # Whether alias IPs will be used for pod IPs in the cluster.
          "nodeIpv4Cidr": "A String", # This field is deprecated, use node_ipv4_cidr_block.
          "clusterIpv4CidrBlock": "A String", # 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.
          "clusterSecondaryRangeName": "A String", # 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 and
              # create_subnetwork is false.
          "servicesIpv4CidrBlock": "A String", # 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.
          "createSubnetwork": 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.
          "nodeIpv4CidrBlock": "A String", # 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.
          "tpuIpv4CidrBlock": "A String", # 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.
          "allowRouteOverlap": True or False, # If true, allow allocation of cluster CIDR ranges that overlap with certain
              # kinds of network routes. By default we do not allow cluster CIDR ranges to
              # intersect with any user declared routes. With allow_route_overlap == true,
              # we allow overlapping with CIDR ranges that are larger than the cluster CIDR
              # range.
              #
              # If this field is set to true, then cluster and services CIDRs must be
              # fully-specified (e.g. `10.96.0.0/14`, but not `/14`), which means:
              # 1) When `use_ip_aliases` is true, `cluster_ipv4_cidr_block` and
              #    `services_ipv4_cidr_block` must be fully-specified.
              # 2) When `use_ip_aliases` is false, `cluster.cluster_ipv4_cidr` muse be
              #    fully-specified.
          "subnetworkName": "A String", # 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.
          "servicesSecondaryRangeName": "A String", # 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 and
              # create_subnetwork is false.
          "servicesIpv4Cidr": "A String", # This field is deprecated, use services_ipv4_cidr_block.
        },
        "network": "A String", # The name of the Google Compute Engine
            # [network](/compute/docs/networks-and-firewalls#networks) to which the
            # cluster is connected. If left unspecified, the `default` network
            # will be used. On output this shows the network ID instead of
            # the name.
        "zone": "A String", # [Output only] The name of the Google Compute Engine
            # [zone](/compute/docs/zones#available) in which the cluster
            # resides.
            # This field is deprecated, use location instead.
        "instanceGroupUrls": [ # Deprecated. Use node_pools.instance_group_urls.
          "A String",
        ],
        "networkConfig": { # NetworkConfig reports the relative names of network & subnetwork. # Configuration for cluster networking.
          "subnetwork": "A String", # Output only. The relative name of the Google Compute Engine
              # [subnetwork](/compute/docs/vpc) to which the cluster is connected.
              # Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
          "network": "A String", # Output only. The relative name of the Google Compute Engine
              # network(/compute/docs/networks-and-firewalls#networks) to which
              # the cluster is connected.
              # Example: projects/my-project/global/networks/my-network
          "enableIntraNodeVisibility": True or False, # Whether Intra-node visibility is enabled for this cluster.
              # This makes same node pod to pod traffic visible for VPC network.
        },
        "privateCluster": True or False, # If this is a private cluster setup. Private clusters are clusters that, by
            # default have no external IP addresses on the nodes and where nodes and the
            # master communicate over private IP addresses.
            # This field is deprecated, use private_cluster_config.enable_private_nodes
            # instead.
        "podSecurityPolicyConfig": { # Configuration for the PodSecurityPolicy feature. # Configuration for the PodSecurityPolicy feature.
          "enabled": True or False, # Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
              # must be valid under a PodSecurityPolicy to be created.
        },
        "location": "A String", # [Output only] The name of the Google Compute Engine
            # [zone](/compute/docs/regions-zones/regions-zones#available) or
            # [region](/compute/docs/regions-zones/regions-zones#available) in which
            # the cluster resides.
        "workloadIdentityConfig": { # Configuration for the use of Kubernetes Service Accounts in GCP IAM # Configuration for the use of Kubernetes Service Accounts in GCP IAM
            # policies.
            # policies.
          "identityNamespace": "A String", # IAM Identity Namespace to attach all Kubernetes Service Accounts to.
        },
        "resourceUsageExportConfig": { # Configuration for exporting cluster resource usages. # Configuration for exporting resource usages. Resource usage export is
            # disabled when this config unspecified.
          "bigqueryDestination": { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
            "datasetId": "A String", # The ID of a BigQuery Dataset.
          },
          "enableNetworkEgressMetering": 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.
          "consumptionMeteringConfig": { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
            "enabled": 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.
          },
        },
        "masterIpv4CidrBlock": "A String", # The IP prefix in CIDR notation to use for the hosted master network.
            # This prefix will be used for assigning private IP addresses to the
            # master or set of masters, as well as the ILB VIP.
            # This field is deprecated, use
            # private_cluster_config.master_ipv4_cidr_block instead.
        "conditions": [ # 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).
            "message": "A String", # Human-friendly representation of the condition
            "code": "A String", # Machine-friendly representation of the condition
          },
        ],
        "servicesIpv4Cidr": "A String", # [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.
        "statusMessage": "A String", # [Output only] Additional information about the current status of this
            # cluster, if available.
        "tierSettings": { # Cluster tier settings. # Cluster tier settings.
          "tier": "A String", # Cluster tier.
        },
        "status": "A String", # [Output only] The current status of this cluster.
        "currentMasterVersion": "A String", # [Output only] The current software version of the master endpoint.
        "description": "A String", # An optional description of this cluster.
        "databaseEncryption": { # Configuration of etcd encryption. # Configuration of etcd encryption.
          "state": "A String", # Denotes the state of etcd encryption.
          "keyName": "A String", # 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
        },
        "currentNodeVersion": "A String", # [Output only] Deprecated, use
            # [NodePool.version](/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools)
            # instead. The current version of the node software components.
            # If they are currently at multiple versions because they're in the process
            # of being upgraded, this reflects the minimum version of all nodes.
        "binaryAuthorization": { # Configuration for Binary Authorization. # Configuration for Binary Authorization.
          "enabled": True or False, # Enable Binary Authorization for this cluster. If enabled, all container
              # images will be validated by Google Binauthz.
        },
        "labelFingerprint": "A String", # The fingerprint of the set of labels for this cluster.
        "autoscaling": { # ClusterAutoscaling contains global, per-cluster information # Cluster-level autoscaling configuration.
            # required by Cluster Autoscaler to automatically adjust
            # the size of the cluster and create/delete
            # node pools based on the current needs.
          "autoprovisioningNodePoolDefaults": { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created # AutoprovisioningNodePoolDefaults contains defaults for a node pool
              # created by NAP.
              # by NAP.
            "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
                # service_account is specified, scopes should be empty.
            "oauthScopes": [ # Scopes that are used by NAP when creating node pools. If oauth_scopes are
                # specified, service_account should be empty.
              "A String",
            ],
          },
          "resourceLimits": [ # 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.
              "resourceType": "A String", # Resource name "cpu", "memory" or gpu-specific string.
              "minimum": "A String", # Minimum amount of the resource in the cluster.
              "maximum": "A String", # Maximum amount of the resource in the cluster.
            },
          ],
          "autoprovisioningLocations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
              # in which the NodePool's nodes can be created by NAP.
            "A String",
          ],
          "enableNodeAutoprovisioning": True or False, # Enables automatic node pool creation and deletion.
        },
        "masterAuth": { # The authentication information for accessing the master endpoint. # 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 "admin", a random password will be generated, and a client
            # certificate will be issued.
            # Authentication can be done using HTTP basic auth or using client
            # certificates.
          "username": "A String", # 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).
          "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate
              # to the cluster endpoint.
          "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to
              # authenticate to the cluster endpoint.
          "clientCertificateConfig": { # 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.
            "issueClientCertificate": True or False, # Issue a client certificate.
          },
          "password": "A String", # 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.
          "clusterCaCertificate": "A String",
        },
        "expireTime": "A String", # [Output only] The time the cluster will be automatically
            # deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        "initialNodeCount": 42, # The number of nodes to create in this cluster. You must ensure that your
            # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
            # 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
            # "node_pool" object, since this configuration (along with the
            # "node_config") will be used to create a "NodePool" 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.
        "nodePools": [ # The node pools associated with this cluster.
            # This field should not be set if "node_config" or "initial_node_count" are
            # specified.
          { # NodePool contains the name and configuration for a cluster's node pool.
              # Node pools are a set of nodes (i.e. VM'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.
            "status": "A String", # [Output only] The status of the nodes in this pool instance.
            "statusMessage": "A String", # [Output only] Additional information about the current status of this
                # node pool instance, if available.
            "management": { # NodeManagement defines the set of node management services turned on for the # NodeManagement configuration for this NodePool.
                # node pool.
              "autoRepair": True or False, # Whether the nodes will be automatically repaired.
              "upgradeOptions": { # AutoUpgradeOptions defines the set of options for the user to control how # Specifies the Auto Upgrade knobs for the node pool.
                  # the Auto Upgrades will proceed.
                "description": "A String", # [Output only] This field is set when upgrades are about to commence
                    # with the description of the upgrade.
                "autoUpgradeStartTime": "A String", # [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.
              },
              "autoUpgrade": True or False, # Whether the nodes will be automatically upgraded.
            },
            "name": "A String", # The name of the node pool.
            "instanceGroupUrls": [ # [Output only] The resource URLs of the [managed instance
                # groups](/compute/docs/instance-groups/creating-groups-of-managed-instances)
                # associated with this node pool.
              "A String",
            ],
            "autoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # Autoscaler configuration for this NodePool. Autoscaler is enabled
                # only if a valid configuration is present.
                # adjust the size of the node pool to the current cluster usage.
              "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
                  # max_node_count.
              "autoprovisioned": True or False, # Can this node pool be deleted automatically.
              "enabled": True or False, # Is autoscaling enabled for this node pool.
              "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
                  # has to enough quota to scale up the cluster.
            },
            "locations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
                # in which the NodePool's nodes should be located.
              "A String",
            ],
            "maxPodsConstraint": { # Constraints applied to pods. # The constraint on the maximum number of pods that can be run
                # simultaneously on a node in the node pool.
              "maxPodsPerNode": "A String", # Constraint enforced on the max num of pods per node.
            },
            "version": "A String", # The version of the Kubernetes of this node.
            "initialNodeCount": 42, # The initial node count for the pool. You must ensure that your
                # Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
                # is sufficient for this number of instances. You must also have available
                # firewall and routes quota.
            "podIpv4CidrSize": 42, # [Output only] The pod CIDR block size per node in this node pool.
            "config": { # Parameters that describe the nodes in a cluster. # The node configuration of the pool.
              "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
                "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
              },
              "machineType": "A String", # The name of a Google Compute Engine [machine
                  # type](/compute/docs/machine-types) (e.g.
                  # `n1-standard-1`).
                  #
                  # If unspecified, the default machine type is
                  # `n1-standard-1`.
              "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
                "enableIntegrityMonitoring": 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.
                "enableSecureBoot": 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.
              },
              "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
                  #
                  # If unspecified, the default disk type is 'pd-standard'
              "tags": [ # 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.
                "A String",
              ],
              "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
                  # https://cloud.google.com/compute/docs/instances/preemptible for more
                  # inforamtion about preemptible VM instances.
              "labels": { # 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'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/
                "a_key": "A String",
              },
              "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
                  # no Service Account is specified, the "default" service account is used.
              "oauthScopes": [ # The set of Google API scopes to be made available on all of the
                  # node VMs under the "default" 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](/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.
                "A String",
              ],
              "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
                    # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
                    #
                    # For more information, including usage and the valid values, see:
                    # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
                  "key": "A String", # Key for taint.
                  "effect": "A String", # Effect for taint.
                  "value": "A String", # Value for taint.
                },
              ],
              "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
                  # workloads on the node pool.
                "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
                    # workloads running on the node.
              },
              "diskSizeGb": 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.
              "accelerators": [ # 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.
                  "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
                  "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                      # [here](/compute/docs/gpus/#Introduction)
                },
              ],
              "minCpuPlatform": "A String", # 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
                  # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
                  # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
                  # information, read [how to specify min CPU
                  # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
              "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
                  #
                  # The limit for this value is dependant upon the maximum number of
                  # disks available on a machine per zone. See:
                  # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
                  # for more information.
              "imageType": "A String", # The image type to use for this node. Note that for a given image type,
                  # the latest version of it will be used.
              "metadata": { # 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:
                  #  "cluster-location"
                  #  "cluster-name"
                  #  "cluster-uid"
                  #  "configure-sh"
                  #  "containerd-configure-sh"
                  #  "enable-oslogin"
                  #  "gci-ensure-gke-docker"
                  #  "gci-update-strategy"
                  #  "instance-template"
                  #  "kube-env"
                  #  "startup-script"
                  #  "user-data"
                  #  "disable-address-manager"
                  #  "windows-startup-script-ps1"
                  #  "common-psm1"
                  #  "k8s-node-setup-psm1"
                  #  "install-ssh-psm1"
                  #  "user-profile-psm1"
                  #  "serial-port-logging-enable"
                  # 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'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.
                "a_key": "A String",
              },
            },
            "conditions": [ # 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).
                "message": "A String", # Human-friendly representation of the condition
                "code": "A String", # Machine-friendly representation of the condition
              },
            ],
            "selfLink": "A String", # [Output only] Server-defined URL for the resource.
          },
        ],
        "monitoringService": "A String", # The monitoring service the cluster should use to write metrics.
            # Currently available options:
            #
            # * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
            # * `none` - no metrics will be exported from the cluster.
            # * if left as an empty string, `monitoring.googleapis.com` will be used.
        "createTime": "A String", # [Output only] The time the cluster was created, in
            # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        "authenticatorGroupsConfig": { # Configuration for returning group information from authenticators. # Configuration controlling RBAC group membership information.
          "enabled": True or False, # Whether this cluster should return group membership lookups
              # during authentication using a group of security groups.
          "securityGroup": "A String", # The name of the security group-of-groups to be used. Only relevant
              # if enabled = true.
        },
        "privateClusterConfig": { # Configuration options for private clusters. # Configuration for private cluster.
          "enablePrivateEndpoint": True or False, # Whether the master's internal IP address is used as the cluster endpoint.
          "publicEndpoint": "A String", # Output only. The external IP address of this cluster's master endpoint.
          "enablePrivateNodes": 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.
          "privateEndpoint": "A String", # Output only. The internal IP address of this cluster's master endpoint.
          "masterIpv4CidrBlock": "A String", # 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's network.
          "enablePeeringRouteSharing": True or False, # Whether to enable route sharing over the network peering.
        },
        "endpoint": "A String", # [Output only] The IP address of this cluster'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.
        "currentNodeCount": 42, # [Output only]  The number of nodes currently in the cluster. Deprecated.
            # Call Kubernetes API directly to retrieve node information.
        "name": "A String", # The name of this cluster. The name must be unique within this project
            # and zone, 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.
        "verticalPodAutoscaling": { # VerticalPodAutoscaling contains global, per-cluster information # Cluster-level Vertical Pod Autoscaling configuration.
            # required by Vertical Pod Autoscaler to automatically adjust
            # the resources of pods controlled by it.
          "enabled": True or False, # Enables vertical pod autoscaling.
        },
        "enableKubernetesAlpha": True or False, # Kubernetes alpha features are enabled on this cluster. This includes alpha
            # API groups (e.g. v1beta1) 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.
        "initialClusterVersion": "A String", # 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:
            #
            # - "latest": picks the highest valid Kubernetes version
            # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
            # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
            # - "1.X.Y-gke.N": picks an explicit Kubernetes version
            # - "","-": picks the default Kubernetes version
        "nodeConfig": { # Parameters that describe the nodes in a cluster. # Parameters used in creating the cluster's nodes.
            # For requests, this field should only be used in lieu of a
            # "node_pool" object, since this configuration (along with the
            # "initial_node_count") will be used to create a "NodePool" 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.
          "sandboxConfig": { # SandboxConfig contains configurations of the sandbox to use for the node. # Sandbox configuration for this node.
            "sandboxType": "A String", # Type of the sandbox to use for the node (e.g. 'gvisor')
          },
          "machineType": "A String", # The name of a Google Compute Engine [machine
              # type](/compute/docs/machine-types) (e.g.
              # `n1-standard-1`).
              #
              # If unspecified, the default machine type is
              # `n1-standard-1`.
          "shieldedInstanceConfig": { # A set of Shielded Instance options. # Shielded Instance options.
            "enableIntegrityMonitoring": 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.
            "enableSecureBoot": 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.
          },
          "diskType": "A String", # Type of the disk attached to each node (e.g. 'pd-standard' or 'pd-ssd')
              #
              # If unspecified, the default disk type is 'pd-standard'
          "tags": [ # 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.
            "A String",
          ],
          "preemptible": True or False, # Whether the nodes are created as preemptible VM instances. See:
              # https://cloud.google.com/compute/docs/instances/preemptible for more
              # inforamtion about preemptible VM instances.
          "labels": { # 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'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/
            "a_key": "A String",
          },
          "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
              # no Service Account is specified, the "default" service account is used.
          "oauthScopes": [ # The set of Google API scopes to be made available on all of the
              # node VMs under the "default" 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](/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.
            "A String",
          ],
          "taints": [ # 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 comprised of three fields: key, value, and effect. Effect
                # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
                #
                # For more information, including usage and the valid values, see:
                # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
              "key": "A String", # Key for taint.
              "effect": "A String", # Effect for taint.
              "value": "A String", # Value for taint.
            },
          ],
          "workloadMetadataConfig": { # WorkloadMetadataConfig defines the metadata configuration to expose to # The workload metadata configuration for this node.
              # workloads on the node pool.
            "nodeMetadata": "A String", # NodeMetadata is the configuration for how to expose metadata to the
                # workloads running on the node.
          },
          "diskSizeGb": 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.
          "accelerators": [ # 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.
              "acceleratorCount": "A String", # The number of the accelerator cards exposed to an instance.
              "acceleratorType": "A String", # The accelerator type resource name. List of supported accelerators
                  # [here](/compute/docs/gpus/#Introduction)
            },
          ],
          "minCpuPlatform": "A String", # 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
              # <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
              # <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
              # information, read [how to specify min CPU
              # platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
          "localSsdCount": 42, # The number of local SSD disks to be attached to the node.
              #
              # The limit for this value is dependant upon the maximum number of
              # disks available on a machine per zone. See:
              # https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
              # for more information.
          "imageType": "A String", # The image type to use for this node. Note that for a given image type,
              # the latest version of it will be used.
          "metadata": { # 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:
              #  "cluster-location"
              #  "cluster-name"
              #  "cluster-uid"
              #  "configure-sh"
              #  "containerd-configure-sh"
              #  "enable-oslogin"
              #  "gci-ensure-gke-docker"
              #  "gci-update-strategy"
              #  "instance-template"
              #  "kube-env"
              #  "startup-script"
              #  "user-data"
              #  "disable-address-manager"
              #  "windows-startup-script-ps1"
              #  "common-psm1"
              #  "k8s-node-setup-psm1"
              #  "install-ssh-psm1"
              #  "user-profile-psm1"
              #  "serial-port-logging-enable"
              # 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'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.
            "a_key": "A String",
          },
        },
        "clusterIpv4Cidr": "A String", # 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`.
        "subnetwork": "A String", # The name of the Google Compute Engine
            # [subnetwork](/compute/docs/subnetworks) to which the
            # cluster is connected. On output this shows the subnetwork ID instead of
            # the name.
        "resourceLabels": { # The resource labels for the cluster to use to annotate any related
            # Google Compute Engine resources.
          "a_key": "A String",
        },
        "selfLink": "A String", # [Output only] Server-defined URL for the resource.
        "tpuIpv4CidrBlock": "A String", # [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`).
      },
    ],
    "missingZones": [ # If any zones are listed here, the list of clusters returned
        # may be missing those zones.
      "A String",
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="locations">locations(projectId, zone, clusterId, body, x__xgafv=None)</code>
  <pre>Sets the locations for a specific cluster.

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetLocationsRequest sets the locations of the cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "locations": [ # The desired list of Google Compute Engine
        # [zones](/compute/docs/zones#available) in which the cluster'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's primary zone.
      "A String",
    ],
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to set locations.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetLoggingServiceRequest sets the logging service of a cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "loggingService": "A String", # The logging service the cluster should use to write metrics.
        # Currently available options:
        # 
        # * "logging.googleapis.com" - the Google Cloud Logging service
        # * "none" - no metrics will be exported from the cluster
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to set logging.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # UpdateMasterRequest updates the master of the cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "masterVersion": "A String", # 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:
        # 
        # - "latest": picks the highest valid Kubernetes version
        # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
        # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
        # - "1.X.Y-gke.N": picks an explicit Kubernetes version
        # - "-": picks the default Kubernetes version
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to update.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetMonitoringServiceRequest sets the monitoring service of a cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "monitoringService": "A String", # The monitoring service the cluster should use to write metrics.
        # Currently available options:
        # 
        # * "monitoring.googleapis.com" - the Google Cloud Monitoring service
        # * "none" - no metrics will be exported from the cluster
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to set monitoring.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    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
    "name": "A String", # The name (project, location, cluster id) of the cluster to set labels.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://developers.google.com/console/help/new/#projectnumber).
        # This field has been deprecated and replaced by the name field.
    "labelFingerprint": "A String", # 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 <code>get()</code> request to the
        # resource to get the latest fingerprint.
    "clusterId": "A String", # Deprecated. The name of the cluster.
        # This field has been deprecated and replaced by the name field.
    "resourceLabels": { # The labels to set for that cluster.
      "a_key": "A String",
    },
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840). (required)
  zone: string, The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides. (required)
  clusterId: string, The name of the cluster to update. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
    "projectId": "A String", # The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
    "maintenancePolicy": { # MaintenancePolicy defines the maintenance policy to be used for the cluster. # The maintenance policy to be set for the cluster. An empty field
        # clears the existing maintenance policy.
      "window": { # MaintenanceWindow defines the maintenance window to be used for the cluster. # Specifies the maintenance window in which maintenance may be performed.
        "dailyMaintenanceWindow": { # Time window specified for daily maintenance operations. # DailyMaintenanceWindow specifies a daily maintenance operation window.
          "duration": "A String", # [Output only] Duration of the time window, automatically chosen to be
              # smallest possible in the given scenario.
          "startTime": "A String", # Time within the maintenance window to start the maintenance operations.
              # It must be in format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
        },
      },
    },
    "clusterId": "A String", # The name of the cluster to update.
    "name": "A String", # The name (project, location, cluster id) of the cluster to set maintenance
        # policy.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setMasterAuth">setMasterAuth(projectId, zone, clusterId, body, 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:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # SetMasterAuthRequest updates the admin password of a cluster.
    "name": "A String", # The name (project, location, cluster) of the cluster to set auth.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "update": { # The authentication information for accessing the master endpoint. # A description of the update.
        # Authentication can be done using HTTP basic auth or using client
        # certificates.
      "username": "A String", # 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).
      "clientKey": "A String", # [Output only] Base64-encoded private key used by clients to authenticate
          # to the cluster endpoint.
      "clientCertificate": "A String", # [Output only] Base64-encoded public certificate used by clients to
          # authenticate to the cluster endpoint.
      "clientCertificateConfig": { # 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.
        "issueClientCertificate": True or False, # Issue a client certificate.
      },
      "password": "A String", # 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.
      "clusterCaCertificate": "A String",
    },
    "action": "A String", # The exact form of action to be taken on the master auth.
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

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

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://developers.google.com/console/help/new/#projectnumber).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    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.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://developers.google.com/console/help/new/#projectnumber).
        # This field has been deprecated and replaced by the name field.
    "rotateCredentials": True or False, # Whether to rotate credentials during IP rotation.
    "clusterId": "A String", # Deprecated. The name of the cluster.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster id) of the cluster to start IP
        # rotation. Specified in the format 'projects/*/locations/*/clusters/*'.
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

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

Args:
  projectId: string, Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field. (required)
  zone: string, Deprecated. The name of the Google Compute Engine
[zone](/compute/docs/zones#available) in which the cluster
resides.
This field has been deprecated and replaced by the name field. (required)
  clusterId: string, Deprecated. The name of the cluster to upgrade.
This field has been deprecated and replaced by the name field. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # UpdateClusterRequest updates the settings of a cluster.
    "projectId": "A String", # Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    "clusterId": "A String", # Deprecated. The name of the cluster to upgrade.
        # This field has been deprecated and replaced by the name field.
    "update": { # ClusterUpdate describes an update to the cluster. Exactly one update can # A description of the update.
        # be applied to a cluster with each request, so at most one field can be
        # provided.
      "desiredPodSecurityPolicyConfig": { # Configuration for the PodSecurityPolicy feature. # The desired configuration options for the PodSecurityPolicy feature.
        "enabled": True or False, # Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
            # must be valid under a PodSecurityPolicy to be created.
      },
      "desiredIntraNodeVisibilityConfig": { # IntraNodeVisibilityConfig contains the desired config of the intra-node # The desired config of Intra-node visibility.
          # visibility on this cluster.
        "enabled": True or False, # Enables intra node visibility for this cluster.
      },
      "desiredLoggingService": "A String", # The logging service the cluster should use to write metrics.
          # Currently available options:
          #
          # * "logging.googleapis.com/kubernetes" - the Google Cloud Logging
          # service with Kubernetes-native resource model in Stackdriver
          # * "logging.googleapis.com" - the Google Cloud Logging service
          # * "none" - no logs will be exported from the cluster
      "desiredMasterAuthorizedNetworksConfig": { # Configuration options for the master authorized networks feature. Enabled # The desired configuration options for master authorized networks feature.
          # 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.
        "enabled": True or False, # Whether or not master authorized networks is enabled.
        "cidrBlocks": [ # cidr_blocks define up to 10 external networks that could access
            # Kubernetes master through HTTPS.
          { # CidrBlock contains an optional name and one CIDR block.
            "displayName": "A String", # display_name is an optional field for users to identify CIDR blocks.
            "cidrBlock": "A String", # cidr_block must be specified in CIDR notation.
          },
        ],
      },
      "desiredImageType": "A String", # The desired image type for the node pool.
          # NOTE: Set the "desired_node_pool" field as well.
      "desiredNodePoolId": "A String", # The node pool to be upgraded. This field is mandatory if
          # "desired_node_version", "desired_image_family",
          # "desired_node_pool_autoscaling", or "desired_workload_metadata_config"
          # is specified and there is more than one node pool on the cluster.
      "desiredAddonsConfig": { # Configuration for the addons that can be automatically spun up in the # Configurations for the various addons available to run in the cluster.
          # cluster, enabling additional functionality.
        "networkPolicyConfig": { # Configuration for NetworkPolicy. This only tracks whether the addon # 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.
            # is enabled or not on the Master, it does not track whether network policy
            # is enabled for the nodes.
          "disabled": True or False, # Whether NetworkPolicy is enabled for this cluster.
        },
        "cloudRunConfig": { # Configuration options for the Cloud Run feature. # Configuration for the Cloud Run addon. The `IstioConfig` addon must be
            # enabled in order to enable Cloud Run addon. This option can only be enabled
            # at cluster creation time.
          "disabled": True or False, # Whether Cloud Run addon is enabled for this cluster.
        },
        "httpLoadBalancing": { # Configuration options for the HTTP (L7) load balancing controller addon, # Configuration for the HTTP (L7) load balancing controller addon, which
            # makes it easy to set up HTTP load balancers for services in a cluster.
            # which makes it easy to set up HTTP load balancers for services in a cluster.
          "disabled": 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.
        },
        "horizontalPodAutoscaling": { # Configuration options for the horizontal pod autoscaling feature, which # 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.
            # increases or decreases the number of replica pods a replication controller
            # has based on the resource usage of the existing pods.
          "disabled": True or False, # Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
              # When enabled, it ensures that a Heapster pod is running in the cluster,
              # which is also used by the Cloud Monitoring service.
        },
        "istioConfig": { # Configuration options for Istio addon. # Configuration for Istio, an open platform to connect, manage, and secure
            # microservices.
          "disabled": True or False, # Whether Istio is enabled for this cluster.
          "auth": "A String", # The specified Istio auth mode, either none, or mutual TLS.
        },
        "kubernetesDashboard": { # 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
          "disabled": True or False, # Whether the Kubernetes Dashboard is enabled for this cluster.
        },
      },
      "desiredVerticalPodAutoscaling": { # VerticalPodAutoscaling contains global, per-cluster information # Cluster-level Vertical Pod Autoscaling configuration.
          # required by Vertical Pod Autoscaler to automatically adjust
          # the resources of pods controlled by it.
        "enabled": True or False, # Enables vertical pod autoscaling.
      },
      "desiredMasterVersion": "A String", # The Kubernetes version to change the master to. The only valid value is the
          # latest supported version.
          #
          # Users may specify either explicit versions offered by
          # Kubernetes Engine or version aliases, which have the following behavior:
          #
          # - "latest": picks the highest valid Kubernetes version
          # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
          # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
          # - "1.X.Y-gke.N": picks an explicit Kubernetes version
          # - "-": picks the default Kubernetes version
      "desiredLocations": [ # The desired list of Google Compute Engine
          # [zones](/compute/docs/zones#available) in which the cluster'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's primary zone.
        "A String",
      ],
      "desiredNodeVersion": "A String", # 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:
          #
          # - "latest": picks the highest valid Kubernetes version
          # - "1.X": picks the highest valid patch+gke.N patch in the 1.X version
          # - "1.X.Y": picks the highest valid gke.N patch in the 1.X.Y version
          # - "1.X.Y-gke.N": picks an explicit Kubernetes version
          # - "-": picks the Kubernetes master version
      "desiredMonitoringService": "A String", # The monitoring service the cluster should use to write metrics.
          # Currently available options:
          #
          # * "monitoring.googleapis.com/kubernetes" - the Google Cloud Monitoring
          # service with Kubernetes-native resource model in Stackdriver
          # * "monitoring.googleapis.com" - the Google Cloud Monitoring service
          # * "none" - no metrics will be exported from the cluster
      "desiredBinaryAuthorization": { # Configuration for Binary Authorization. # The desired configuration options for the Binary Authorization feature.
        "enabled": True or False, # Enable Binary Authorization for this cluster. If enabled, all container
            # images will be validated by Google Binauthz.
      },
      "desiredPrivateClusterConfig": { # Configuration options for private clusters. # The desired private cluster configuration.
        "enablePrivateEndpoint": True or False, # Whether the master's internal IP address is used as the cluster endpoint.
        "publicEndpoint": "A String", # Output only. The external IP address of this cluster's master endpoint.
        "enablePrivateNodes": 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.
        "privateEndpoint": "A String", # Output only. The internal IP address of this cluster's master endpoint.
        "masterIpv4CidrBlock": "A String", # 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's network.
        "enablePeeringRouteSharing": True or False, # Whether to enable route sharing over the network peering.
      },
      "desiredResourceUsageExportConfig": { # Configuration for exporting cluster resource usages. # The desired configuration for exporting resource usage.
        "bigqueryDestination": { # Parameters for using BigQuery as the destination of resource usage export. # Configuration to use BigQuery as usage export destination.
          "datasetId": "A String", # The ID of a BigQuery Dataset.
        },
        "enableNetworkEgressMetering": 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.
        "consumptionMeteringConfig": { # Parameters for controlling consumption metering. # Configuration to enable resource consumption metering.
          "enabled": 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.
        },
      },
      "desiredWorkloadIdentityConfig": { # Configuration for the use of Kubernetes Service Accounts in GCP IAM # Configuration for Workload Identity.
          # policies.
        "identityNamespace": "A String", # IAM Identity Namespace to attach all Kubernetes Service Accounts to.
      },
      "desiredClusterAutoscaling": { # ClusterAutoscaling contains global, per-cluster information # Cluster-level autoscaling configuration.
          # required by Cluster Autoscaler to automatically adjust
          # the size of the cluster and create/delete
          # node pools based on the current needs.
        "autoprovisioningNodePoolDefaults": { # AutoprovisioningNodePoolDefaults contains defaults for a node pool created # AutoprovisioningNodePoolDefaults contains defaults for a node pool
            # created by NAP.
            # by NAP.
          "serviceAccount": "A String", # The Google Cloud Platform Service Account to be used by the node VMs. If
              # service_account is specified, scopes should be empty.
          "oauthScopes": [ # Scopes that are used by NAP when creating node pools. If oauth_scopes are
              # specified, service_account should be empty.
            "A String",
          ],
        },
        "resourceLimits": [ # 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.
            "resourceType": "A String", # Resource name "cpu", "memory" or gpu-specific string.
            "minimum": "A String", # Minimum amount of the resource in the cluster.
            "maximum": "A String", # Maximum amount of the resource in the cluster.
          },
        ],
        "autoprovisioningLocations": [ # The list of Google Compute Engine [zones](/compute/docs/zones#available)
            # in which the NodePool's nodes can be created by NAP.
          "A String",
        ],
        "enableNodeAutoprovisioning": True or False, # Enables automatic node pool creation and deletion.
      },
      "desiredNodePoolAutoscaling": { # NodePoolAutoscaling contains information required by cluster autoscaler to # 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.
          # adjust the size of the node pool to the current cluster usage.
        "minNodeCount": 42, # Minimum number of nodes in the NodePool. Must be >= 1 and <=
            # max_node_count.
        "autoprovisioned": True or False, # Can this node pool be deleted automatically.
        "enabled": True or False, # Is autoscaling enabled for this node pool.
        "maxNodeCount": 42, # Maximum number of nodes in the NodePool. Must be >= min_node_count. There
            # has to enough quota to scale up the cluster.
      },
      "desiredDatabaseEncryption": { # Configuration of etcd encryption. # Configuration of etcd encryption.
        "state": "A String", # Denotes the state of etcd encryption.
        "keyName": "A String", # 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
      },
    },
    "zone": "A String", # Deprecated. The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the cluster
        # resides.
        # This field has been deprecated and replaced by the name field.
    "name": "A String", # The name (project, location, cluster) of the cluster to update.
        # Specified in the format 'projects/*/locations/*/clusters/*'.
  }

  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.
    "status": "A String", # The current status of the operation.
    "endTime": "A String", # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "name": "A String", # The server-assigned ID for the operation.
    "zone": "A String", # The name of the Google Compute Engine
        # [zone](/compute/docs/zones#available) in which the operation
        # is taking place.
        # This field is deprecated, use location instead.
    "location": "A String", # [Output only] The name of the Google Compute Engine
        # [zone](/compute/docs/regions-zones/regions-zones#available) or
        # [region](/compute/docs/regions-zones/regions-zones#available) in which
        # the cluster resides.
    "startTime": "A String", # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    "detail": "A String", # Detailed operation progress, if available.
    "clusterConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "statusMessage": "A String", # If an error has occurred, a textual description of the error.
    "operationType": "A String", # The operation type.
    "progress": { # Information about operation (or operation stage) progress. # [Output only] Progress information for an operation.
      "status": "A String", # Status of an operation stage.
          # Unset for single-stage operations.
      "metrics": [ # Progress metric bundle, for example:
          #   metrics: [{name: "nodes done",     int_value: 15},
          #             {name: "nodes total",    int_value: 32}]
          # or
          #   metrics: [{name: "progress",       double_value: 0.56},
          #             {name: "progress scale", double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          "stringValue": "A String", # For metrics with custom values (ratios, visual progress, etc.).
          "intValue": "A String", # For metrics with integer value.
          "name": "A String", # Metric name, required.
              # e.g., "nodes total", "percent done"
          "doubleValue": 3.14, # For metrics with floating point value.
        },
      ],
      "stages": [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      "name": "A String", # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
    },
    "nodepoolConditions": [ # 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).
        "message": "A String", # Human-friendly representation of the condition
        "code": "A String", # Machine-friendly representation of the condition
      },
    ],
    "selfLink": "A String", # Server-defined URL for the resource.
    "targetLink": "A String", # Server-defined URL for the target of the operation.
  }</pre>
</div>

</body></html>