# frozen_string_literal: true

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Container
      module V1beta1
        # Parameters that can be configured on Linux nodes.
        # @!attribute [rw] sysctls
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The Linux kernel parameters to be applied to the nodes and all pods running
        #     on the nodes.
        #
        #     The following parameters are supported.
        #
        #     net.core.busy_poll
        #     net.core.busy_read
        #     net.core.netdev_max_backlog
        #     net.core.rmem_max
        #     net.core.wmem_default
        #     net.core.wmem_max
        #     net.core.optmem_max
        #     net.core.somaxconn
        #     net.ipv4.tcp_rmem
        #     net.ipv4.tcp_wmem
        #     net.ipv4.tcp_tw_reuse
        # @!attribute [rw] cgroup_mode
        #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig::CgroupMode]
        #     cgroup_mode specifies the cgroup mode to be used on the node.
        class LinuxNodeConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class SysctlsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Possible cgroup modes that can be used.
          module CgroupMode
            # CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
            # The default for the GKE node OS image will be used.
            CGROUP_MODE_UNSPECIFIED = 0

            # CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
            # the node image.
            CGROUP_MODE_V1 = 1

            # CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
            # the node image.
            CGROUP_MODE_V2 = 2
          end
        end

        # Parameters that can be configured on Windows nodes.
        # Windows Node Config that define the parameters that will be used to
        # configure the Windows node pool settings
        # @!attribute [rw] os_version
        #   @return [::Google::Cloud::Container::V1beta1::WindowsNodeConfig::OSVersion]
        #     OSVersion specifies the Windows node config to be used on the node
        class WindowsNodeConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible OS version that can be used.
          module OSVersion
            # When OSVersion is not specified
            OS_VERSION_UNSPECIFIED = 0

            # LTSC2019 specifies to use LTSC2019 as the Windows Servercore Base Image
            OS_VERSION_LTSC2019 = 1

            # LTSC2022 specifies to use LTSC2022 as the Windows Servercore Base Image
            OS_VERSION_LTSC2022 = 2
          end
        end

        # Node kubelet configs.
        # @!attribute [rw] cpu_manager_policy
        #   @return [::String]
        #     Control the CPU management policy on the node.
        #     See
        #     https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/
        #
        #     The following values are allowed.
        #     * "none": the default, which represents the existing scheduling behavior.
        #     * "static": allows pods with certain resource characteristics to be granted
        #     increased CPU affinity and exclusivity on the node.
        #     The default value is 'none' if unspecified.
        # @!attribute [rw] cpu_cfs_quota
        #   @return [::Google::Protobuf::BoolValue]
        #     Enable CPU CFS quota enforcement for containers that specify CPU limits.
        #
        #     This option is enabled by default which makes kubelet use CFS quota
        #     (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to
        #     enforce container CPU limits. Otherwise, CPU limits will not be enforced at
        #     all.
        #
        #     Disable this option to mitigate CPU throttling problems while still having
        #     your pods to be in Guaranteed QoS class by specifying the CPU limits.
        #
        #     The default value is 'true' if unspecified.
        # @!attribute [rw] cpu_cfs_quota_period
        #   @return [::String]
        #     Set the CPU CFS quota period value 'cpu.cfs_period_us'.
        #
        #     The string must be a sequence of decimal numbers, each with optional
        #     fraction and a unit suffix, such as "300ms".
        #     Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
        #     The value must be a positive duration.
        # @!attribute [rw] pod_pids_limit
        #   @return [::Integer]
        #     Set the Pod PID limits. See
        #     https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits
        #
        #     Controls the maximum number of processes allowed to run in a pod. The value
        #     must be greater than or equal to 1024 and less than 4194304.
        # @!attribute [rw] insecure_kubelet_readonly_port_enabled
        #   @return [::Boolean]
        #     Enable or disable Kubelet read only port.
        class NodeKubeletConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Parameters that describe the nodes in a cluster.
        #
        # GKE Autopilot clusters do not
        # recognize parameters in `NodeConfig`. Use
        # {::Google::Cloud::Container::V1beta1::AutoprovisioningNodePoolDefaults AutoprovisioningNodePoolDefaults}
        # instead.
        # @!attribute [rw] machine_type
        #   @return [::String]
        #     The name of a Google Compute Engine [machine
        #     type](https://cloud.google.com/compute/docs/machine-types).
        #
        #     If unspecified, the default machine type is
        #     `e2-medium`.
        # @!attribute [rw] disk_size_gb
        #   @return [::Integer]
        #     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.
        # @!attribute [rw] oauth_scopes
        #   @return [::Array<::String>]
        #     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](https://cloud.google.com/container-registry/)).
        #
        #     If unspecified, no scopes are added, unless Cloud Logging or Cloud
        #     Monitoring are enabled, in which case their required scopes will be added.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     The Google Cloud Platform Service Account to be used by the node VMs.
        #     Specify the email address of the Service Account; otherwise, if no Service
        #     Account is specified, the "default" service account is used.
        # @!attribute [rw] metadata
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     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-metrics-enabled"
        #      - "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"
        #
        #     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.
        # @!attribute [rw] image_type
        #   @return [::String]
        #     The image type to use for this node. Note that for a given image type,
        #     the latest version of it will be used. Please see
        #     https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
        #     available image types.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     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/
        # @!attribute [rw] local_ssd_count
        #   @return [::Integer]
        #     The number of local SSD disks to be attached to the node.
        #
        #     The limit for this value is dependent upon the maximum number of
        #     disks available on a machine per zone. See:
        #     https://cloud.google.com/compute/docs/disks/local-ssd
        #     for more information.
        # @!attribute [rw] tags
        #   @return [::Array<::String>]
        #     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.
        # @!attribute [rw] preemptible
        #   @return [::Boolean]
        #     Whether the nodes are created as preemptible VM instances. See:
        #     https://cloud.google.com/compute/docs/instances/preemptible for more
        #     information about preemptible VM instances.
        # @!attribute [rw] accelerators
        #   @return [::Array<::Google::Cloud::Container::V1beta1::AcceleratorConfig>]
        #     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.
        # @!attribute [rw] sandbox_config
        #   @return [::Google::Cloud::Container::V1beta1::SandboxConfig]
        #     Sandbox configuration for this node.
        # @!attribute [rw] node_group
        #   @return [::String]
        #     Setting this field will assign instances of this
        #     pool to run on the specified node group. This is useful for running
        #     workloads on [sole tenant
        #     nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
        # @!attribute [rw] reservation_affinity
        #   @return [::Google::Cloud::Container::V1beta1::ReservationAffinity]
        #     The optional reservation affinity. Setting this field will apply
        #     the specified [Zonal Compute
        #     Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
        #     to this node pool.
        # @!attribute [rw] disk_type
        #   @return [::String]
        #     Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
        #     'pd-balanced')
        #
        #     If unspecified, the default disk type is 'pd-standard'
        # @!attribute [rw] min_cpu_platform
        #   @return [::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
        #     `minCpuPlatform: "Intel Haswell"` or
        #     `minCpuPlatform: "Intel Sandy Bridge"`. For more
        #     information, read [how to specify min CPU
        #     platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
        # @!attribute [rw] workload_metadata_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadMetadataConfig]
        #     The workload metadata configuration for this node.
        # @!attribute [rw] taints
        #   @return [::Array<::Google::Cloud::Container::V1beta1::NodeTaint>]
        #     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/
        # @!attribute [rw] boot_disk_kms_key
        #   @return [::String]
        #     The Customer Managed Encryption Key used to encrypt the boot disk attached
        #     to each node in the node pool. This should be of the form
        #     projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME].
        #     For more information about protecting resources with Cloud KMS Keys please
        #     see:
        #     https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        # @!attribute [rw] shielded_instance_config
        #   @return [::Google::Cloud::Container::V1beta1::ShieldedInstanceConfig]
        #     Shielded Instance options.
        # @!attribute [rw] linux_node_config
        #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig]
        #     Parameters that can be configured on Linux nodes.
        # @!attribute [rw] kubelet_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeKubeletConfig]
        #     Node kubelet configs.
        # @!attribute [rw] ephemeral_storage_config
        #   @return [::Google::Cloud::Container::V1beta1::EphemeralStorageConfig]
        #     Parameters for the ephemeral storage filesystem.
        #     If unspecified, ephemeral storage is backed by the boot disk.
        # @!attribute [rw] gcfs_config
        #   @return [::Google::Cloud::Container::V1beta1::GcfsConfig]
        #     GCFS (Google Container File System) configs.
        # @!attribute [rw] advanced_machine_features
        #   @return [::Google::Cloud::Container::V1beta1::AdvancedMachineFeatures]
        #     Advanced features for the Compute Engine VM.
        # @!attribute [rw] gvnic
        #   @return [::Google::Cloud::Container::V1beta1::VirtualNIC]
        #     Enable or disable gvnic on the node pool.
        # @!attribute [rw] spot
        #   @return [::Boolean]
        #     Spot flag for enabling Spot VM, which is a rebrand of
        #     the existing preemptible flag.
        # @!attribute [rw] confidential_nodes
        #   @return [::Google::Cloud::Container::V1beta1::ConfidentialNodes]
        #     Confidential nodes config.
        #     All the nodes in the node pool will be Confidential VM once enabled.
        # @!attribute [rw] fast_socket
        #   @return [::Google::Cloud::Container::V1beta1::FastSocket]
        #     Enable or disable NCCL fast socket for the node pool.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The resource labels for the node pool to use to annotate any related
        #     Google Compute Engine resources.
        # @!attribute [rw] logging_config
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolLoggingConfig]
        #     Logging configuration.
        # @!attribute [rw] windows_node_config
        #   @return [::Google::Cloud::Container::V1beta1::WindowsNodeConfig]
        #     Parameters that can be configured on Windows nodes.
        # @!attribute [rw] local_nvme_ssd_block_config
        #   @return [::Google::Cloud::Container::V1beta1::LocalNvmeSsdBlockConfig]
        #     Parameters for using raw-block Local NVMe SSDs.
        # @!attribute [rw] ephemeral_storage_local_ssd_config
        #   @return [::Google::Cloud::Container::V1beta1::EphemeralStorageLocalSsdConfig]
        #     Parameters for the node ephemeral storage using Local SSDs.
        #     If unspecified, ephemeral storage is backed by the boot disk.
        #     This field is functionally equivalent to the ephemeral_storage_config
        # @!attribute [rw] sole_tenant_config
        #   @return [::Google::Cloud::Container::V1beta1::SoleTenantConfig]
        #     Parameters for node pools to be backed by shared sole tenant node groups.
        # @!attribute [rw] host_maintenance_policy
        #   @return [::Google::Cloud::Container::V1beta1::HostMaintenancePolicy]
        #     HostMaintenancePolicy contains the desired maintenance policy for the
        #     Google Compute Engine hosts.
        # @!attribute [rw] resource_manager_tags
        #   @return [::Google::Cloud::Container::V1beta1::ResourceManagerTags]
        #     A map of resource manager tag keys and values to be attached to the nodes.
        # @!attribute [rw] enable_confidential_storage
        #   @return [::Boolean]
        #     Optional. Enable confidential storage on Hyperdisk.
        #     boot_disk_kms_key is required when enable_confidential_storage is true.
        #     This is only available for private preview.
        class NodeConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class MetadataEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class ResourceLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Specifies options for controlling advanced machine features.
        # @!attribute [rw] threads_per_core
        #   @return [::Integer]
        #     The number of threads per physical core. To disable simultaneous
        #     multithreading (SMT) set this to 1. If unset, the maximum number of threads
        #     supported per core by the underlying processor is assumed.
        class AdvancedMachineFeatures
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Parameters for node pool-level network config.
        # @!attribute [rw] create_pod_range
        #   @return [::Boolean]
        #     Input only. Whether to create a new range for pod IPs in this node pool.
        #     Defaults are provided for `pod_range` and `pod_ipv4_cidr_block` if they
        #     are not specified.
        #
        #     If neither `create_pod_range` or `pod_range` are specified, the
        #     cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is
        #     used.
        #
        #     Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
        #
        #     This field cannot be changed after the node pool has been created.
        # @!attribute [rw] pod_range
        #   @return [::String]
        #     The ID of the secondary range for pod IPs.
        #     If `create_pod_range` is true, this ID is used for the new range.
        #     If `create_pod_range` is false, uses an existing secondary range with this
        #     ID.
        #
        #     Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
        #
        #     This field cannot be changed after the node pool has been created.
        # @!attribute [rw] pod_ipv4_cidr_block
        #   @return [::String]
        #     The IP address range for pod IPs in this node pool.
        #
        #     Only applicable if `create_pod_range` is true.
        #
        #     Set to blank to have a range chosen with the default size.
        #
        #     Set to /netmask (e.g. `/14`) to have a range chosen with a specific
        #     netmask.
        #
        #     Set to a
        #     [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
        #     notation (e.g. `10.96.0.0/14`) to pick a specific range to use.
        #
        #     Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
        #
        #     This field cannot be changed after the node pool has been created.
        # @!attribute [rw] enable_private_nodes
        #   @return [::Boolean]
        #     Whether nodes have internal IP addresses only.
        #     If enable_private_nodes is not specified, then the value is derived from
        #     [cluster.privateClusterConfig.enablePrivateNodes][google.container.v1beta1.PrivateClusterConfig.enablePrivateNodes]
        # @!attribute [rw] network_performance_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeNetworkConfig::NetworkPerformanceConfig]
        #     Network bandwidth tier configuration.
        # @!attribute [rw] pod_cidr_overprovision_config
        #   @return [::Google::Cloud::Container::V1beta1::PodCIDROverprovisionConfig]
        #     [PRIVATE FIELD]
        #     Pod CIDR size overprovisioning config for the nodepool.
        #
        #     Pod CIDR size per node depends on max_pods_per_node. By default, the value
        #     of max_pods_per_node is rounded off to next power of 2 and we then double
        #     that to get the size of pod CIDR block per node.
        #     Example: max_pods_per_node of 30 would result in 64 IPs (/26).
        #
        #     This config can disable the doubling of IPs (we still round off to next
        #     power of 2)
        #     Example: max_pods_per_node of 30 will result in 32 IPs (/27) when
        #     overprovisioning is disabled.
        # @!attribute [rw] additional_node_network_configs
        #   @return [::Array<::Google::Cloud::Container::V1beta1::AdditionalNodeNetworkConfig>]
        #     We specify the additional node networks for this node pool using this list.
        #     Each node network corresponds to an additional interface
        # @!attribute [rw] additional_pod_network_configs
        #   @return [::Array<::Google::Cloud::Container::V1beta1::AdditionalPodNetworkConfig>]
        #     We specify the additional pod networks for this node pool using this list.
        #     Each pod network corresponds to an additional alias IP range for the node
        # @!attribute [r] pod_ipv4_range_utilization
        #   @return [::Float]
        #     Output only. [Output only] The utilization of the IPv4 range for the pod.
        #     The ratio is Usage/[Total number of IPs in the secondary range],
        #     Usage=numNodes*numZones*podIPsPerNode.
        class NodeNetworkConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Configuration of all network bandwidth tiers
          # @!attribute [rw] total_egress_bandwidth_tier
          #   @return [::Google::Cloud::Container::V1beta1::NodeNetworkConfig::NetworkPerformanceConfig::Tier]
          #     Specifies the total network bandwidth tier for the NodePool.
          # @!attribute [rw] external_ip_egress_bandwidth_tier
          #   @return [::Google::Cloud::Container::V1beta1::NodeNetworkConfig::NetworkPerformanceConfig::Tier]
          #     Specifies the network bandwidth tier for the NodePool for traffic to
          #     external/public IP addresses.
          class NetworkPerformanceConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Node network tier
            module Tier
              # Default value
              TIER_UNSPECIFIED = 0

              # Higher bandwidth, actual values based on VM size.
              TIER_1 = 1
            end
          end
        end

        # AdditionalNodeNetworkConfig is the configuration for additional node networks
        # within the NodeNetworkConfig message
        # @!attribute [rw] network
        #   @return [::String]
        #     Name of the VPC where the additional interface belongs
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Name of the subnetwork where the additional interface belongs
        class AdditionalNodeNetworkConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AdditionalPodNetworkConfig is the configuration for additional pod networks
        # within the NodeNetworkConfig message
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Name of the subnetwork where the additional pod network belongs
        # @!attribute [rw] secondary_pod_range
        #   @return [::String]
        #     The name of the secondary range on the subnet which provides IP address for
        #     this pod range
        # @!attribute [rw] max_pods_per_node
        #   @return [::Google::Cloud::Container::V1beta1::MaxPodsConstraint]
        #     The maximum number of pods per node which use this pod network
        class AdditionalPodNetworkConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A set of Shielded Instance options.
        # @!attribute [rw] enable_secure_boot
        #   @return [::Boolean]
        #     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.
        # @!attribute [rw] enable_integrity_monitoring
        #   @return [::Boolean]
        #     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.
        class ShieldedInstanceConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SandboxConfig contains configurations of the sandbox to use for the node.
        # @!attribute [rw] sandbox_type
        #   @return [::String]
        #     Type of the sandbox to use for the node (e.g. 'gvisor')
        # @!attribute [rw] type
        #   @return [::Google::Cloud::Container::V1beta1::SandboxConfig::Type]
        #     Type of the sandbox to use for the node.
        class SandboxConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible types of sandboxes.
          module Type
            # Default value. This should not be used.
            UNSPECIFIED = 0

            # Run sandbox using gvisor.
            GVISOR = 1
          end
        end

        # EphemeralStorageConfig contains configuration for the ephemeral storage
        # filesystem.
        # @!attribute [rw] local_ssd_count
        #   @return [::Integer]
        #     Number of local SSDs to use to back ephemeral storage. Uses NVMe
        #     interfaces. The limit for this value is dependent upon the maximum number
        #     of disk available on a machine per zone. See:
        #     https://cloud.google.com/compute/docs/disks/local-ssd
        #     for more information.
        #
        #     A zero (or unset) value has different meanings depending on machine type
        #     being used:
        #     1. For pre-Gen3 machines, which support flexible numbers of local ssds,
        #     zero (or unset) means to disable using local SSDs as ephemeral storage.
        #     2. For Gen3 machines which dictate a specific number of local ssds, zero
        #     (or unset) means to use the default number of local ssds that goes with
        #     that machine type. For example, for a c3-standard-8-lssd machine, 2 local
        #     ssds would be provisioned. For c3-standard-8 (which doesn't support local
        #     ssds), 0 will be provisioned. See
        #     https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds
        #     for more info.
        class EphemeralStorageConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # LocalNvmeSsdBlockConfig contains configuration for using raw-block local
        # NVMe SSDs
        # @!attribute [rw] local_ssd_count
        #   @return [::Integer]
        #     Number of local NVMe SSDs to use.  The limit for this value is dependent
        #     upon the maximum number of disk available on a machine per zone. See:
        #     https://cloud.google.com/compute/docs/disks/local-ssd
        #     for more information.
        #
        #     A zero (or unset) value has different meanings depending on machine type
        #     being used:
        #     1. For pre-Gen3 machines, which support flexible numbers of local ssds,
        #     zero (or unset) means to disable using local SSDs as ephemeral storage.
        #     2. For Gen3 machines which dictate a specific number of local ssds, zero
        #     (or unset) means to use the default number of local ssds that goes with
        #     that machine type. For example, for a c3-standard-8-lssd machine, 2 local
        #     ssds would be provisioned. For c3-standard-8 (which doesn't support local
        #     ssds), 0 will be provisioned. See
        #     https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds
        #     for more info.
        class LocalNvmeSsdBlockConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral
        # storage using Local SSDs.
        # @!attribute [rw] local_ssd_count
        #   @return [::Integer]
        #     Number of local SSDs to use to back ephemeral storage. Uses NVMe
        #     interfaces.
        #
        #     A zero (or unset) value has different meanings depending on machine type
        #     being used:
        #     1. For pre-Gen3 machines, which support flexible numbers of local ssds,
        #     zero (or unset) means to disable using local SSDs as ephemeral storage. The
        #     limit for this value is dependent upon the maximum number of disk
        #     available on a machine per zone. See:
        #     https://cloud.google.com/compute/docs/disks/local-ssd
        #     for more information.
        #     2. For Gen3 machines which dictate a specific number of local ssds, zero
        #     (or unset) means to use the default number of local ssds that goes with
        #     that machine type. For example, for a c3-standard-8-lssd machine, 2 local
        #     ssds would be provisioned. For c3-standard-8 (which doesn't support local
        #     ssds), 0 will be provisioned. See
        #     https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds
        #     for more info.
        class EphemeralStorageLocalSsdConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GcfsConfig contains configurations of Google Container File System.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether to use GCFS.
        class GcfsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
        # is the configuration of desired reservation which instances could take
        # capacity from.
        # @!attribute [rw] consume_reservation_type
        #   @return [::Google::Cloud::Container::V1beta1::ReservationAffinity::Type]
        #     Corresponds to the type of reservation consumption.
        # @!attribute [rw] key
        #   @return [::String]
        #     Corresponds to the label key of a reservation resource. To target a
        #     SPECIFIC_RESERVATION by name, specify
        #     "compute.googleapis.com/reservation-name" as the key and specify the name
        #     of your reservation as its value.
        # @!attribute [rw] values
        #   @return [::Array<::String>]
        #     Corresponds to the label value(s) of reservation resource(s).
        class ReservationAffinity
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Indicates whether to consume capacity from a reservation or not.
          module Type
            # Default value. This should not be used.
            UNSPECIFIED = 0

            # Do not consume from any reserved capacity.
            NO_RESERVATION = 1

            # Consume any reservation available.
            ANY_RESERVATION = 2

            # Must consume from a specific reservation. Must specify key value fields
            # for specifying the reservations.
            SPECIFIC_RESERVATION = 3
          end
        end

        # SoleTenantConfig contains the NodeAffinities to specify what shared sole
        # tenant node groups should back the node pool.
        # @!attribute [rw] node_affinities
        #   @return [::Array<::Google::Cloud::Container::V1beta1::SoleTenantConfig::NodeAffinity>]
        #     NodeAffinities used to match to a shared sole tenant node group.
        class SoleTenantConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Specifies the NodeAffinity key, values, and affinity operator according to
          # [shared sole tenant node group
          # affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
          # @!attribute [rw] key
          #   @return [::String]
          #     Key for NodeAffinity.
          # @!attribute [rw] operator
          #   @return [::Google::Cloud::Container::V1beta1::SoleTenantConfig::NodeAffinity::Operator]
          #     Operator for NodeAffinity.
          # @!attribute [rw] values
          #   @return [::Array<::String>]
          #     Values for NodeAffinity.
          class NodeAffinity
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Operator allows user to specify affinity or anti-affinity for the
            # given key values.
            module Operator
              # Invalid or unspecified affinity operator.
              OPERATOR_UNSPECIFIED = 0

              # Affinity operator.
              IN = 1

              # Anti-affinity operator.
              NOT_IN = 2
            end
          end
        end

        # HostMaintenancePolicy contains the maintenance policy for the hosts on which
        # the GKE VMs run on.
        # @!attribute [rw] maintenance_interval
        #   @return [::Google::Cloud::Container::V1beta1::HostMaintenancePolicy::MaintenanceInterval]
        #     Specifies the frequency of planned maintenance events.
        # @!attribute [rw] opportunistic_maintenance_strategy
        #   @return [::Google::Cloud::Container::V1beta1::HostMaintenancePolicy::OpportunisticMaintenanceStrategy]
        #     Strategy that will trigger maintenance on behalf of the customer.
        class HostMaintenancePolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Strategy that will trigger maintenance on behalf of the customer.
          # @!attribute [rw] node_idle_time_window
          #   @return [::Google::Protobuf::Duration]
          #     The amount of time that a node can remain idle (no customer owned
          #     workloads running), before triggering maintenance.
          # @!attribute [rw] maintenance_availability_window
          #   @return [::Google::Protobuf::Duration]
          #     The window of time that opportunistic maintenance can run. Example: A
          #     setting of 14 days implies that opportunistic maintenance can only be ran
          #     in the 2 weeks leading up to the scheduled maintenance date. Setting 28
          #     days allows opportunistic maintenance to run at any time in the scheduled
          #     maintenance window (all `PERIODIC` maintenance is set 28 days in
          #     advance).
          # @!attribute [rw] min_nodes_per_pool
          #   @return [::Integer]
          #     The minimum nodes required to be available in a pool. Blocks maintenance
          #     if it would cause the number of running nodes to dip below this value.
          class OpportunisticMaintenanceStrategy
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Allows selecting how infrastructure upgrades should be applied to the
          # cluster or node pool.
          module MaintenanceInterval
            # The maintenance interval is not explicitly specified.
            MAINTENANCE_INTERVAL_UNSPECIFIED = 0

            # Nodes are eligible to receive infrastructure and hypervisor updates as
            # they become available.  This may result in more maintenance operations
            # (live migrations or terminations) for the node than the PERIODIC option.
            AS_NEEDED = 1

            # Nodes receive infrastructure and hypervisor updates on a periodic basis,
            # minimizing the number of maintenance operations (live migrations or
            # terminations) on an individual VM.  This may mean underlying VMs will
            # take longer to receive an update than if it was configured for
            # AS_NEEDED.  Security updates will still be applied as soon
            # as they are available.
            PERIODIC = 2
          end
        end

        # Kubernetes taint is composed of three fields: key, value, and effect. Effect
        # can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
        #
        # See
        # [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration)
        # for more information, including usage and the valid values.
        # @!attribute [rw] key
        #   @return [::String]
        #     Key for taint.
        # @!attribute [rw] value
        #   @return [::String]
        #     Value for taint.
        # @!attribute [rw] effect
        #   @return [::Google::Cloud::Container::V1beta1::NodeTaint::Effect]
        #     Effect for taint.
        class NodeTaint
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible values for Effect in taint.
          module Effect
            # Not set
            EFFECT_UNSPECIFIED = 0

            # NoSchedule
            NO_SCHEDULE = 1

            # PreferNoSchedule
            PREFER_NO_SCHEDULE = 2

            # NoExecute
            NO_EXECUTE = 3
          end
        end

        # Collection of Kubernetes [node
        # taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration).
        # @!attribute [rw] taints
        #   @return [::Array<::Google::Cloud::Container::V1beta1::NodeTaint>]
        #     List of node taints.
        class NodeTaints
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Collection of node-level [Kubernetes
        # labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels).
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Map of node label keys and node label values.
        class NodeLabels
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Collection of [GCP
        # labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Map of node label keys and node label values.
        class ResourceLabels
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Collection of Compute Engine network tags that can be applied to a node's
        # underlying VM instance. (See `tags` field in
        # [`NodeConfig`](/kubernetes-engine/docs/reference/rest/v1/NodeConfig)).
        # @!attribute [rw] tags
        #   @return [::Array<::String>]
        #     List of network tags.
        class NetworkTags
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The authentication information for accessing the master endpoint.
        # Authentication can be done using HTTP basic auth or using client
        # certificates.
        # @!attribute [rw] username
        #   @return [::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).
        #
        #     Warning: basic authentication is deprecated, and will be removed in GKE
        #     control plane versions 1.19 and newer. For a list of recommended
        #     authentication methods, see:
        #     https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
        # @!attribute [rw] password
        #   @return [::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.
        #
        #     Warning: basic authentication is deprecated, and will be removed in GKE
        #     control plane versions 1.19 and newer. For a list of recommended
        #     authentication methods, see:
        #     https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
        # @!attribute [rw] client_certificate_config
        #   @return [::Google::Cloud::Container::V1beta1::ClientCertificateConfig]
        #     Configuration for client certificate authentication on the cluster. For
        #     clusters before v1.12, if no configuration is specified, a client
        #     certificate is issued.
        # @!attribute [rw] cluster_ca_certificate
        #   @return [::String]
        # @!attribute [rw] client_certificate
        #   @return [::String]
        #     [Output only] Base64-encoded public certificate used by clients to
        #     authenticate to the cluster endpoint.
        # @!attribute [rw] client_key
        #   @return [::String]
        #     [Output only] Base64-encoded private key used by clients to authenticate
        #     to the cluster endpoint.
        class MasterAuth
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for client certificates on the cluster.
        # @!attribute [rw] issue_client_certificate
        #   @return [::Boolean]
        #     Issue a client certificate.
        class ClientCertificateConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the addons that can be automatically spun up in the
        # cluster, enabling additional functionality.
        # @!attribute [rw] http_load_balancing
        #   @return [::Google::Cloud::Container::V1beta1::HttpLoadBalancing]
        #     Configuration for the HTTP (L7) load balancing controller addon, which
        #     makes it easy to set up HTTP load balancers for services in a cluster.
        # @!attribute [rw] horizontal_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::HorizontalPodAutoscaling]
        #     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.
        # @!attribute [rw] kubernetes_dashboard
        #   @return [::Google::Cloud::Container::V1beta1::KubernetesDashboard]
        #     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
        # @!attribute [rw] network_policy_config
        #   @return [::Google::Cloud::Container::V1beta1::NetworkPolicyConfig]
        #     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.
        # @!attribute [rw] istio_config
        #   @return [::Google::Cloud::Container::V1beta1::IstioConfig]
        #     Configuration for Istio, an open platform to connect, manage, and secure
        #     microservices.
        # @!attribute [rw] cloud_run_config
        #   @return [::Google::Cloud::Container::V1beta1::CloudRunConfig]
        #     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.
        # @!attribute [rw] dns_cache_config
        #   @return [::Google::Cloud::Container::V1beta1::DnsCacheConfig]
        #     Configuration for NodeLocalDNS, a dns cache running on cluster nodes
        # @!attribute [rw] config_connector_config
        #   @return [::Google::Cloud::Container::V1beta1::ConfigConnectorConfig]
        #     Configuration for the ConfigConnector add-on, a Kubernetes
        #     extension to manage hosted GCP services through the Kubernetes API
        # @!attribute [rw] gce_persistent_disk_csi_driver_config
        #   @return [::Google::Cloud::Container::V1beta1::GcePersistentDiskCsiDriverConfig]
        #     Configuration for the Compute Engine Persistent Disk CSI driver.
        # @!attribute [rw] kalm_config
        #   @return [::Google::Cloud::Container::V1beta1::KalmConfig]
        #     Configuration for the KALM addon, which manages the lifecycle of k8s
        #     applications.
        # @!attribute [rw] gcp_filestore_csi_driver_config
        #   @return [::Google::Cloud::Container::V1beta1::GcpFilestoreCsiDriverConfig]
        #     Configuration for the GCP Filestore CSI driver.
        # @!attribute [rw] gke_backup_agent_config
        #   @return [::Google::Cloud::Container::V1beta1::GkeBackupAgentConfig]
        #     Configuration for the Backup for GKE agent addon.
        # @!attribute [rw] gcs_fuse_csi_driver_config
        #   @return [::Google::Cloud::Container::V1beta1::GcsFuseCsiDriverConfig]
        #     Configuration for the Cloud Storage Fuse CSI driver.
        class AddonsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the HTTP (L7) load balancing controller addon,
        # which makes it easy to set up HTTP load balancers for services in a cluster.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     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.
        class HttpLoadBalancing
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the horizontal pod autoscaling feature, which
        # increases or decreases the number of replica pods a replication controller
        # has based on the resource usage of the existing pods.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
        #     When enabled, it ensures that metrics are collected into Stackdriver
        #     Monitoring.
        class HorizontalPodAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the Kubernetes Dashboard.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether the Kubernetes Dashboard is enabled for this cluster.
        class KubernetesDashboard
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # 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.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether NetworkPolicy is enabled for this cluster.
        class NetworkPolicyConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for NodeLocal DNSCache
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether NodeLocal DNSCache is enabled for this cluster.
        class DnsCacheConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the KALM addon.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether KALM is enabled for this cluster.
        class KalmConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the Backup for GKE Agent.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the Backup for GKE agent is enabled for this cluster.
        class GkeBackupAgentConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the Config Connector add-on.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Cloud Connector is enabled for this cluster.
        class ConfigConnectorConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the Compute Engine PD CSI driver.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the Compute Engine PD CSI driver is enabled for this cluster.
        class GcePersistentDiskCsiDriverConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the GCP Filestore CSI driver.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the GCP Filestore CSI driver is enabled for this cluster.
        class GcpFilestoreCsiDriverConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the Cloud Storage Fuse CSI driver.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
        class GcsFuseCsiDriverConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for controlling master global access settings.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whenever master is accessible globally or not.
        class PrivateClusterMasterGlobalAccessConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for private clusters.
        # @!attribute [rw] enable_private_nodes
        #   @return [::Boolean]
        #     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.
        # @!attribute [rw] enable_private_endpoint
        #   @return [::Boolean]
        #     Whether the master's internal IP address is used as the cluster endpoint.
        # @!attribute [rw] master_ipv4_cidr_block
        #   @return [::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.
        # @!attribute [rw] private_endpoint
        #   @return [::String]
        #     Output only. The internal IP address of this cluster's master endpoint.
        # @!attribute [rw] public_endpoint
        #   @return [::String]
        #     Output only. The external IP address of this cluster's master endpoint.
        # @!attribute [rw] peering_name
        #   @return [::String]
        #     Output only. The peering name in the customer VPC used by this cluster.
        # @!attribute [rw] master_global_access_config
        #   @return [::Google::Cloud::Container::V1beta1::PrivateClusterMasterGlobalAccessConfig]
        #     Controls master global access settings.
        # @!attribute [rw] private_endpoint_subnetwork
        #   @return [::String]
        #     Subnet to provision the master's private endpoint during cluster creation.
        #     Specified in projects/*/regions/*/subnetworks/* format.
        class PrivateClusterConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for Istio addon.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether Istio is enabled for this cluster.
        # @!attribute [rw] auth
        #   @return [::Google::Cloud::Container::V1beta1::IstioConfig::IstioAuthMode]
        #     The specified Istio auth mode, either none, or mutual TLS.
        class IstioConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Istio auth mode, https://istio.io/docs/concepts/security/mutual-tls.html
          module IstioAuthMode
            # auth not enabled
            AUTH_NONE = 0

            # auth mutual TLS enabled
            AUTH_MUTUAL_TLS = 1
          end
        end

        # Configuration options for the Cloud Run feature.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Whether Cloud Run addon is enabled for this cluster.
        # @!attribute [rw] load_balancer_type
        #   @return [::Google::Cloud::Container::V1beta1::CloudRunConfig::LoadBalancerType]
        #     Which load balancer type is installed for Cloud Run.
        class CloudRunConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Load balancer type of ingress service of Cloud Run.
          module LoadBalancerType
            # Load balancer type for Cloud Run is unspecified.
            LOAD_BALANCER_TYPE_UNSPECIFIED = 0

            # Install external load balancer for Cloud Run.
            LOAD_BALANCER_TYPE_EXTERNAL = 1

            # Install internal load balancer for Cloud Run.
            LOAD_BALANCER_TYPE_INTERNAL = 2
          end
        end

        # Configuration options for the master authorized networks feature. Enabled
        # master authorized networks will disallow all external traffic to access
        # Kubernetes master through HTTPS except traffic from the given CIDR blocks,
        # Google Compute Engine Public IPs and Google Prod IPs.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether or not master authorized networks is enabled.
        # @!attribute [rw] cidr_blocks
        #   @return [::Array<::Google::Cloud::Container::V1beta1::MasterAuthorizedNetworksConfig::CidrBlock>]
        #     cidr_blocks define up to 10 external networks that could access
        #     Kubernetes master through HTTPS.
        # @!attribute [rw] gcp_public_cidrs_access_enabled
        #   @return [::Boolean]
        #     Whether master is accessbile via Google Compute Engine Public IP addresses.
        class MasterAuthorizedNetworksConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # CidrBlock contains an optional name and one CIDR block.
          # @!attribute [rw] display_name
          #   @return [::String]
          #     display_name is an optional field for users to identify CIDR blocks.
          # @!attribute [rw] cidr_block
          #   @return [::String]
          #     cidr_block must be specified in CIDR notation.
          class CidrBlock
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Configuration for the legacy Attribute Based Access Control authorization
        # mode.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     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.
        class LegacyAbac
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration options for the NetworkPolicy feature.
        # https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
        # @!attribute [rw] provider
        #   @return [::Google::Cloud::Container::V1beta1::NetworkPolicy::Provider]
        #     The selected network policy provider.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether network policy is enabled on the cluster.
        class NetworkPolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Allowed Network Policy providers.
          module Provider
            # Not set
            PROVIDER_UNSPECIFIED = 0

            # Tigera (Calico Felix).
            CALICO = 1
          end
        end

        # [PRIVATE FIELD]
        # Config for pod CIDR size overprovisioning.
        # @!attribute [rw] disable
        #   @return [::Boolean]
        #     Whether Pod CIDR overprovisioning is disabled.
        #     Note: Pod CIDR overprovisioning is enabled by default.
        class PodCIDROverprovisionConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for controlling how IPs are allocated in the cluster.
        # @!attribute [rw] use_ip_aliases
        #   @return [::Boolean]
        #     Whether alias IPs will be used for pod IPs in the cluster.
        #     This is used in conjunction with use_routes. It cannot
        #     be true if use_routes is true. If both use_ip_aliases and use_routes are
        #     false, then the server picks the default IP allocation mode
        # @!attribute [rw] create_subnetwork
        #   @return [::Boolean]
        #     Whether a new subnetwork will be created automatically for the cluster.
        #
        #     This field is only applicable when `use_ip_aliases` is true.
        # @!attribute [rw] subnetwork_name
        #   @return [::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.
        # @!attribute [rw] cluster_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use cluster_ipv4_cidr_block.
        # @!attribute [rw] node_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use node_ipv4_cidr_block.
        # @!attribute [rw] services_ipv4_cidr
        #   @return [::String]
        #     This field is deprecated, use services_ipv4_cidr_block.
        # @!attribute [rw] cluster_secondary_range_name
        #   @return [::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.
        # @!attribute [rw] services_secondary_range_name
        #   @return [::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.
        # @!attribute [rw] cluster_ipv4_cidr_block
        #   @return [::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.
        # @!attribute [rw] node_ipv4_cidr_block
        #   @return [::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.
        # @!attribute [rw] services_ipv4_cidr_block
        #   @return [::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.
        # @!attribute [rw] allow_route_overlap
        #   @return [::Boolean]
        #     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.
        # @!attribute [rw] tpu_ipv4_cidr_block
        #   @return [::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.
        #     This field is deprecated, use cluster.tpu_config.ipv4_cidr_block instead.
        # @!attribute [rw] use_routes
        #   @return [::Boolean]
        #     Whether routes will be used for pod IPs in the cluster.
        #     This is used in conjunction with use_ip_aliases. It cannot be true if
        #     use_ip_aliases is true. If both use_ip_aliases and use_routes are false,
        #     then the server picks the default IP allocation mode
        # @!attribute [rw] stack_type
        #   @return [::Google::Cloud::Container::V1beta1::IPAllocationPolicy::StackType]
        #     IP stack type
        # @!attribute [rw] ipv6_access_type
        #   @return [::Google::Cloud::Container::V1beta1::IPAllocationPolicy::IPv6AccessType]
        #     The ipv6 access type (internal or external) when create_subnetwork is true
        # @!attribute [rw] pod_cidr_overprovision_config
        #   @return [::Google::Cloud::Container::V1beta1::PodCIDROverprovisionConfig]
        #     [PRIVATE FIELD]
        #     Pod CIDR size overprovisioning config for the cluster.
        #
        #     Pod CIDR size per node depends on max_pods_per_node. By default, the value
        #     of max_pods_per_node is doubled and then rounded off to next power of 2 to
        #     get the size of pod CIDR block per node.
        #     Example: max_pods_per_node of 30 would result in 64 IPs (/26).
        #
        #     This config can disable the doubling of IPs (we still round off to next
        #     power of 2)
        #     Example: max_pods_per_node of 30 will result in 32 IPs (/27) when
        #     overprovisioning is disabled.
        # @!attribute [r] subnet_ipv6_cidr_block
        #   @return [::String]
        #     Output only. [Output only] The subnet's IPv6 CIDR block used by nodes and
        #     pods.
        # @!attribute [r] services_ipv6_cidr_block
        #   @return [::String]
        #     Output only. [Output only] The services IPv6 CIDR block for the cluster.
        # @!attribute [r] additional_pod_ranges_config
        #   @return [::Google::Cloud::Container::V1beta1::AdditionalPodRangesConfig]
        #     Output only. [Output only] The additional pod ranges that are added to the
        #     cluster. These pod ranges can be used by new node pools to allocate pod IPs
        #     automatically. Once the range is removed it will not show up in
        #     IPAllocationPolicy.
        # @!attribute [r] default_pod_ipv4_range_utilization
        #   @return [::Float]
        #     Output only. [Output only] The utilization of the cluster default IPv4
        #     range for the pod. The ratio is Usage/[Total number of IPs in the secondary
        #     range], Usage=numNodes*numZones*podIPsPerNode.
        class IPAllocationPolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible values for IP stack type
          module StackType
            # By default, the clusters will be IPV4 only
            STACK_TYPE_UNSPECIFIED = 0

            # The value used if the cluster is a IPV4 only
            IPV4 = 1

            # The value used if the cluster is a dual stack cluster
            IPV4_IPV6 = 2
          end

          # IPv6 access type
          module IPv6AccessType
            # Default value, will be defaulted as type external.
            IPV6_ACCESS_TYPE_UNSPECIFIED = 0

            # Access type internal (all v6 addresses are internal IPs)
            INTERNAL = 1

            # Access type external (all v6 addresses are external IPs)
            EXTERNAL = 2
          end
        end

        # Configuration for Binary Authorization.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     This field is deprecated. Leave this unset and instead configure
        #     BinaryAuthorization using evaluation_mode. If evaluation_mode is set to
        #     anything other than EVALUATION_MODE_UNSPECIFIED, this field is ignored.
        # @!attribute [rw] evaluation_mode
        #   @return [::Google::Cloud::Container::V1beta1::BinaryAuthorization::EvaluationMode]
        #     Mode of operation for binauthz policy evaluation. If unspecified, defaults
        #     to DISABLED.
        # @!attribute [rw] policy_bindings
        #   @return [::Array<::Google::Cloud::Container::V1beta1::BinaryAuthorization::PolicyBinding>]
        #     Optional. Binauthz policies that apply to this cluster.
        class BinaryAuthorization
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Binauthz policy that applies to this cluster.
          # @!attribute [rw] name
          #   @return [::String]
          #     The relative resource name of the binauthz platform policy to audit. GKE
          #     platform policies have the following format:
          #     `projects/{project_number}/platforms/gke/policies/{policy_id}`.
          class PolicyBinding
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Binary Authorization mode of operation.
          module EvaluationMode
            # Default value
            EVALUATION_MODE_UNSPECIFIED = 0

            # Disable BinaryAuthorization
            DISABLED = 1

            # Enforce Kubernetes admission requests with BinaryAuthorization using the
            # project's singleton policy. This is equivalent to setting the
            # enabled boolean to true.
            PROJECT_SINGLETON_POLICY_ENFORCE = 2

            # Use Binary Authorization Continuous Validation with the policies
            # specified in policy_bindings.
            POLICY_BINDINGS = 5

            # Use Binary Authorization Continuous Validation with the policies
            # specified in policy_bindings and enforce Kubernetes admission requests
            # with Binary Authorization using the project's singleton policy.
            POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE = 6
          end
        end

        # Configuration for the PodSecurityPolicy feature.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
        #     must be valid under a PodSecurityPolicy to be created.
        class PodSecurityPolicyConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for returning group information from authenticators.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether this cluster should return group membership lookups
        #     during authentication using a group of security groups.
        # @!attribute [rw] security_group
        #   @return [::String]
        #     The name of the security group-of-groups to be used. Only relevant
        #     if enabled = true.
        class AuthenticatorGroupsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Telemetry integration for the cluster.
        # @!attribute [rw] type
        #   @return [::Google::Cloud::Container::V1beta1::ClusterTelemetry::Type]
        #     Type of the integration.
        class ClusterTelemetry
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Type of the integration.
          module Type
            # Not set.
            UNSPECIFIED = 0

            # Monitoring integration is disabled.
            DISABLED = 1

            # Monitoring integration is enabled.
            ENABLED = 2

            # Only system components are monitored and logged.
            SYSTEM_ONLY = 3
          end
        end

        # A Google Kubernetes Engine cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name of this cluster. The name must be unique within this project
        #     and location (e.g. zone or region), and can be up to 40 characters with
        #     the following restrictions:
        #
        #     * Lowercase letters, numbers, and hyphens only.
        #     * Must start with a letter.
        #     * Must end with a number or a letter.
        # @!attribute [rw] description
        #   @return [::String]
        #     An optional description of this cluster.
        # @!attribute [rw] initial_node_count
        #   @return [::Integer]
        #     The number of nodes to create in this cluster. You must ensure that your
        #     Compute Engine [resource quota](https://cloud.google.com/compute/quotas)
        #     is sufficient for this number of instances. You must also have available
        #     firewall and routes quota.
        #     For requests, this field should only be used in lieu of a
        #     "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.
        # @!attribute [rw] node_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeConfig]
        #     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.
        # @!attribute [rw] master_auth
        #   @return [::Google::Cloud::Container::V1beta1::MasterAuth]
        #     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.
        # @!attribute [rw] logging_service
        #   @return [::String]
        #     The logging service the cluster should use to write logs.
        #     Currently available options:
        #
        #     * `logging.googleapis.com/kubernetes` - The Cloud Logging
        #     service with a Kubernetes-native resource model
        #     * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
        #       available as of GKE 1.15).
        #     * `none` - no logs will be exported from the cluster.
        #
        #     If left as an empty string,`logging.googleapis.com/kubernetes` will be
        #     used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
        # @!attribute [rw] monitoring_service
        #   @return [::String]
        #     The monitoring service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * "monitoring.googleapis.com/kubernetes" - The Cloud Monitoring
        #     service with a Kubernetes-native resource model
        #     * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
        #       longer available as of GKE 1.15).
        #     * `none` - No metrics will be exported from the cluster.
        #
        #     If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
        #     used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
        # @!attribute [rw] network
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
        #     to which the cluster is connected. If left unspecified, the `default`
        #     network will be used. On output this shows the network ID instead of the
        #     name.
        # @!attribute [rw] cluster_ipv4_cidr
        #   @return [::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`.
        # @!attribute [rw] addons_config
        #   @return [::Google::Cloud::Container::V1beta1::AddonsConfig]
        #     Configurations for the various addons available to run in the cluster.
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which
        #     the cluster is connected. On output this shows the subnetwork ID instead of
        #     the name.
        # @!attribute [rw] node_pools
        #   @return [::Array<::Google::Cloud::Container::V1beta1::NodePool>]
        #     The node pools associated with this cluster.
        #     This field should not be set if "node_config" or "initial_node_count" are
        #     specified.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     The list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster's nodes should be located.
        #
        #     This field provides a default value if
        #     [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
        #     are not specified during node pool creation.
        #
        #     Warning: changing cluster locations will update the
        #     [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
        #     of all node pools and will result in nodes being added and/or removed.
        # @!attribute [rw] enable_kubernetes_alpha
        #   @return [::Boolean]
        #     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.
        # @!attribute [rw] enable_k8s_beta_apis
        #   @return [::Google::Cloud::Container::V1beta1::K8sBetaAPIConfig]
        #     Kubernetes open source beta apis enabled on the cluster. Only beta apis.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     The resource labels for the cluster to use to annotate any related
        #     Google Compute Engine resources.
        # @!attribute [rw] label_fingerprint
        #   @return [::String]
        #     The fingerprint of the set of labels for this cluster.
        # @!attribute [rw] legacy_abac
        #   @return [::Google::Cloud::Container::V1beta1::LegacyAbac]
        #     Configuration for the legacy ABAC authorization mode.
        # @!attribute [rw] network_policy
        #   @return [::Google::Cloud::Container::V1beta1::NetworkPolicy]
        #     Configuration options for the NetworkPolicy feature.
        # @!attribute [rw] ip_allocation_policy
        #   @return [::Google::Cloud::Container::V1beta1::IPAllocationPolicy]
        #     Configuration for cluster IP allocation.
        # @!attribute [rw] master_authorized_networks_config
        #   @return [::Google::Cloud::Container::V1beta1::MasterAuthorizedNetworksConfig]
        #     The configuration options for master authorized networks feature.
        # @!attribute [rw] maintenance_policy
        #   @return [::Google::Cloud::Container::V1beta1::MaintenancePolicy]
        #     Configure the maintenance policy for this cluster.
        # @!attribute [rw] binary_authorization
        #   @return [::Google::Cloud::Container::V1beta1::BinaryAuthorization]
        #     Configuration for Binary Authorization.
        # @!attribute [rw] pod_security_policy_config
        #   @return [::Google::Cloud::Container::V1beta1::PodSecurityPolicyConfig]
        #     Configuration for the PodSecurityPolicy feature.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::ClusterAutoscaling]
        #     Cluster-level autoscaling configuration.
        # @!attribute [rw] network_config
        #   @return [::Google::Cloud::Container::V1beta1::NetworkConfig]
        #     Configuration for cluster networking.
        # @!attribute [rw] private_cluster
        #   @return [::Boolean]
        #     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.
        # @!attribute [rw] master_ipv4_cidr_block
        #   @return [::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.
        # @!attribute [rw] default_max_pods_constraint
        #   @return [::Google::Cloud::Container::V1beta1::MaxPodsConstraint]
        #     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.
        # @!attribute [rw] resource_usage_export_config
        #   @return [::Google::Cloud::Container::V1beta1::ResourceUsageExportConfig]
        #     Configuration for exporting resource usages. Resource usage export is
        #     disabled when this config unspecified.
        # @!attribute [rw] authenticator_groups_config
        #   @return [::Google::Cloud::Container::V1beta1::AuthenticatorGroupsConfig]
        #     Configuration controlling RBAC group membership information.
        # @!attribute [rw] private_cluster_config
        #   @return [::Google::Cloud::Container::V1beta1::PrivateClusterConfig]
        #     Configuration for private cluster.
        # @!attribute [rw] vertical_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::VerticalPodAutoscaling]
        #     Cluster-level Vertical Pod Autoscaling configuration.
        # @!attribute [rw] shielded_nodes
        #   @return [::Google::Cloud::Container::V1beta1::ShieldedNodes]
        #     Shielded Nodes configuration.
        # @!attribute [rw] release_channel
        #   @return [::Google::Cloud::Container::V1beta1::ReleaseChannel]
        #     Release channel configuration. If left unspecified on cluster creation and
        #     a version is specified, the cluster is enrolled in the most mature release
        #     channel where the version is available (first checking STABLE, then
        #     REGULAR, and finally RAPID). Otherwise, if no release channel
        #     configuration and no version is specified, the cluster is enrolled in the
        #     REGULAR channel with its default version.
        # @!attribute [rw] workload_identity_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadIdentityConfig]
        #     Configuration for the use of Kubernetes Service Accounts in GCP IAM
        #     policies.
        # @!attribute [rw] workload_certificates
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadCertificates]
        #     Configuration for issuance of mTLS keys and certificates to Kubernetes
        #     pods.
        # @!attribute [rw] mesh_certificates
        #   @return [::Google::Cloud::Container::V1beta1::MeshCertificates]
        #     Configuration for issuance of mTLS keys and certificates to Kubernetes
        #     pods.
        # @!attribute [rw] workload_alts_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadALTSConfig]
        #     Configuration for direct-path (via ALTS) with workload identity.
        # @!attribute [rw] cost_management_config
        #   @return [::Google::Cloud::Container::V1beta1::CostManagementConfig]
        #     Configuration for the fine-grained cost management feature.
        # @!attribute [rw] cluster_telemetry
        #   @return [::Google::Cloud::Container::V1beta1::ClusterTelemetry]
        #     Telemetry integration for the cluster.
        # @!attribute [rw] tpu_config
        #   @return [::Google::Cloud::Container::V1beta1::TpuConfig]
        #     Configuration for Cloud TPU support;
        # @!attribute [rw] notification_config
        #   @return [::Google::Cloud::Container::V1beta1::NotificationConfig]
        #     Notification configuration of the cluster.
        # @!attribute [rw] confidential_nodes
        #   @return [::Google::Cloud::Container::V1beta1::ConfidentialNodes]
        #     Configuration of Confidential Nodes.
        #     All the nodes in the cluster will be Confidential VM once enabled.
        # @!attribute [rw] identity_service_config
        #   @return [::Google::Cloud::Container::V1beta1::IdentityServiceConfig]
        #     Configuration for Identity Service component.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     [Output only] Server-defined URL for the resource.
        # @!attribute [rw] zone
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field is deprecated, use location instead.
        # @!attribute [rw] endpoint
        #   @return [::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.
        # @!attribute [rw] initial_cluster_version
        #   @return [::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
        # @!attribute [rw] current_master_version
        #   @return [::String]
        #     [Output only] The current software version of the master endpoint.
        # @!attribute [rw] current_node_version
        #   @return [::String]
        #     [Output only] Deprecated, use
        #     [NodePool.version](https://cloud.google.com/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.
        # @!attribute [rw] create_time
        #   @return [::String]
        #     [Output only] The time the cluster was created, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1beta1::Cluster::Status]
        #     [Output only] The current status of this cluster.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     [Output only] Deprecated. Use conditions instead.
        #     Additional information about the current status of this
        #     cluster, if available.
        # @!attribute [rw] node_ipv4_cidr_size
        #   @return [::Integer]
        #     [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.
        # @!attribute [rw] services_ipv4_cidr
        #   @return [::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.
        # @!attribute [rw] instance_group_urls
        #   @return [::Array<::String>]
        #     Deprecated. Use node_pools.instance_group_urls.
        # @!attribute [rw] current_node_count
        #   @return [::Integer]
        #     [Output only]  The number of nodes currently in the cluster. Deprecated.
        #     Call Kubernetes API directly to retrieve node information.
        # @!attribute [rw] expire_time
        #   @return [::String]
        #     [Output only] The time the cluster will be automatically
        #     deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] location
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        #     or
        #     [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        #     in which the cluster resides.
        # @!attribute [rw] enable_tpu
        #   @return [::Boolean]
        #     Enable the ability to use Cloud TPUs in this cluster.
        #     This field is deprecated, use tpu_config.enabled instead.
        # @!attribute [rw] tpu_ipv4_cidr_block
        #   @return [::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`).
        # @!attribute [rw] database_encryption
        #   @return [::Google::Cloud::Container::V1beta1::DatabaseEncryption]
        #     Configuration of etcd encryption.
        # @!attribute [rw] conditions
        #   @return [::Array<::Google::Cloud::Container::V1beta1::StatusCondition>]
        #     Which conditions caused the current cluster state.
        # @!attribute [rw] master
        #   @return [::Google::Cloud::Container::V1beta1::Master]
        #     Configuration for master components.
        # @!attribute [rw] autopilot
        #   @return [::Google::Cloud::Container::V1beta1::Autopilot]
        #     Autopilot configuration for the cluster.
        # @!attribute [r] id
        #   @return [::String]
        #     Output only. Unique id for the cluster.
        # @!attribute [rw] node_pool_defaults
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolDefaults]
        #     Default NodePool settings for the entire cluster. These settings are
        #     overridden if specified on the specific NodePool object.
        # @!attribute [rw] logging_config
        #   @return [::Google::Cloud::Container::V1beta1::LoggingConfig]
        #     Logging configuration for the cluster.
        # @!attribute [rw] monitoring_config
        #   @return [::Google::Cloud::Container::V1beta1::MonitoringConfig]
        #     Monitoring configuration for the cluster.
        # @!attribute [rw] node_pool_auto_config
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolAutoConfig]
        #     Node pool configs that apply to all auto-provisioned node pools
        #     in autopilot clusters and node auto-provisioning enabled clusters.
        # @!attribute [rw] protect_config
        #   @return [::Google::Cloud::Container::V1beta1::ProtectConfig]
        #     Deprecated: Use SecurityPostureConfig instead.
        #     Enable/Disable Protect API features for the cluster.
        # @!attribute [rw] etag
        #   @return [::String]
        #     This checksum is computed by the server based on the value of cluster
        #     fields, and may be sent on update requests to ensure the client has an
        #     up-to-date value before proceeding.
        # @!attribute [rw] fleet
        #   @return [::Google::Cloud::Container::V1beta1::Fleet]
        #     Fleet information for the cluster.
        # @!attribute [rw] security_posture_config
        #   @return [::Google::Cloud::Container::V1beta1::SecurityPostureConfig]
        #     Enable/Disable Security Posture API features for the cluster.
        # @!attribute [rw] enterprise_config
        #   @return [::Google::Cloud::Container::V1beta1::EnterpriseConfig]
        #     GKE Enterprise Configuration.
        class Cluster
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class ResourceLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # The current status of the cluster.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The PROVISIONING state indicates the cluster is being created.
            PROVISIONING = 1

            # The RUNNING state indicates the cluster has been created and is fully
            # usable.
            RUNNING = 2

            # The RECONCILING state indicates that some work is actively being done on
            # the cluster, such as upgrading the master or node software. Details can
            # be found in the `statusMessage` field.
            RECONCILING = 3

            # The STOPPING state indicates the cluster is being deleted.
            STOPPING = 4

            # The ERROR state indicates the cluster may be unusable. Details
            # can be found in the `statusMessage` field.
            ERROR = 5

            # The DEGRADED state indicates the cluster requires user action to restore
            # full functionality. Details can be found in the `statusMessage` field.
            DEGRADED = 6
          end
        end

        # Kubernetes open source beta apis enabled on the cluster.
        # @!attribute [rw] enabled_apis
        #   @return [::Array<::String>]
        #     api name, e.g. storage.k8s.io/v1beta1/csistoragecapacities.
        class K8sBetaAPIConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # WorkloadConfig defines the flags to enable or disable the
        # workload configurations for the cluster.
        # @!attribute [rw] audit_mode
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadConfig::Mode]
        #     Sets which mode of auditing should be used for the cluster's workloads.
        class WorkloadConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Mode defines how to audit the workload configs.
          module Mode
            # Default value meaning that no mode has been specified.
            MODE_UNSPECIFIED = 0

            # This disables Workload Configuration auditing on the cluster,
            # meaning that nothing is surfaced.
            DISABLED = 1

            # Applies the default set of policy auditing to a cluster's workloads.
            BASIC = 4

            # Surfaces configurations that are not in line with the
            # Pod Security Standard Baseline policy.
            BASELINE = 2

            # Surfaces configurations that are not in line with the
            # Pod Security Standard Restricted policy.
            RESTRICTED = 3
          end
        end

        # ProtectConfig defines the flags needed to enable/disable features for the
        # Protect API.
        # @!attribute [rw] workload_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadConfig]
        #     WorkloadConfig defines which actions are enabled for a cluster's workload
        #     configurations.
        # @!attribute [rw] workload_vulnerability_mode
        #   @return [::Google::Cloud::Container::V1beta1::ProtectConfig::WorkloadVulnerabilityMode]
        #     Sets which mode to use for Protect workload vulnerability scanning feature.
        class ProtectConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # WorkloadVulnerabilityMode defines mode to perform vulnerability scanning.
          module WorkloadVulnerabilityMode
            # Default value not specified.
            WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED = 0

            # Disables Workload Vulnerability Scanning feature on the cluster.
            DISABLED = 1

            # Applies basic vulnerability scanning settings for cluster workloads.
            BASIC = 2
          end
        end

        # SecurityPostureConfig defines the flags needed to enable/disable features for
        # the Security Posture API.
        # @!attribute [rw] mode
        #   @return [::Google::Cloud::Container::V1beta1::SecurityPostureConfig::Mode]
        #     Sets which mode to use for Security Posture features.
        # @!attribute [rw] vulnerability_mode
        #   @return [::Google::Cloud::Container::V1beta1::SecurityPostureConfig::VulnerabilityMode]
        #     Sets which mode to use for vulnerability scanning.
        class SecurityPostureConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Mode defines enablement mode for GKE Security posture features.
          module Mode
            # Default value not specified.
            MODE_UNSPECIFIED = 0

            # Disables Security Posture features on the cluster.
            DISABLED = 1

            # Applies Security Posture features on the cluster.
            BASIC = 2
          end

          # VulnerabilityMode defines enablement mode for vulnerability scanning.
          module VulnerabilityMode
            # Default value not specified.
            VULNERABILITY_MODE_UNSPECIFIED = 0

            # Disables vulnerability scanning on the cluster.
            VULNERABILITY_DISABLED = 1

            # Applies basic vulnerability scanning on the cluster.
            VULNERABILITY_BASIC = 2

            # Applies the Security Posture's vulnerability on cluster Enterprise level
            # features.
            VULNERABILITY_ENTERPRISE = 3
          end
        end

        # Subset of Nodepool message that has defaults.
        # @!attribute [rw] node_config_defaults
        #   @return [::Google::Cloud::Container::V1beta1::NodeConfigDefaults]
        #     Subset of NodeConfig message that has defaults.
        class NodePoolDefaults
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Subset of NodeConfig message that has defaults.
        # @!attribute [rw] gcfs_config
        #   @return [::Google::Cloud::Container::V1beta1::GcfsConfig]
        #     GCFS (Google Container File System, also known as Riptide) options.
        # @!attribute [rw] logging_config
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolLoggingConfig]
        #     Logging configuration for node pools.
        # @!attribute [rw] host_maintenance_policy
        #   @return [::Google::Cloud::Container::V1beta1::HostMaintenancePolicy]
        #     HostMaintenancePolicy contains the desired maintenance policy for the
        #     Google Compute Engine hosts.
        class NodeConfigDefaults
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # node pool configs that apply to all auto-provisioned node pools
        # in autopilot clusters and node auto-provisioning enabled clusters
        # @!attribute [rw] network_tags
        #   @return [::Google::Cloud::Container::V1beta1::NetworkTags]
        #     The list of instance tags applied to all nodes. Tags are used to identify
        #     valid sources or targets for network firewalls and are specified by
        #     the client during cluster creation. Each tag within the list
        #     must comply with RFC1035.
        # @!attribute [rw] resource_manager_tags
        #   @return [::Google::Cloud::Container::V1beta1::ResourceManagerTags]
        #     Resource manager tag keys and values to be attached to the nodes
        #     for managing Compute Engine firewalls using Network Firewall Policies.
        class NodePoolAutoConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ClusterUpdate describes an update to the cluster. Exactly one update can
        # be applied to a cluster with each request, so at most one field can be
        # provided.
        # @!attribute [rw] desired_node_version
        #   @return [::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
        # @!attribute [rw] desired_monitoring_service
        #   @return [::String]
        #     The monitoring service the cluster should use to write metrics.
        #     Currently available options:
        #
        #     * "monitoring.googleapis.com/kubernetes" - The Cloud Monitoring
        #     service with a Kubernetes-native resource model
        #     * `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
        #       longer available as of GKE 1.15).
        #     * `none` - No metrics will be exported from the cluster.
        #
        #     If left as an empty string,`monitoring.googleapis.com/kubernetes` will be
        #     used for GKE 1.14+ or `monitoring.googleapis.com` for earlier versions.
        # @!attribute [rw] desired_addons_config
        #   @return [::Google::Cloud::Container::V1beta1::AddonsConfig]
        #     Configurations for the various addons available to run in the cluster.
        # @!attribute [rw] desired_node_pool_id
        #   @return [::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.
        # @!attribute [rw] desired_image_type
        #   @return [::String]
        #     The desired image type for the node pool.
        #     NOTE: Set the "desired_node_pool" field as well.
        # @!attribute [rw] desired_node_pool_autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolAutoscaling]
        #     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.
        # @!attribute [rw] desired_locations
        #   @return [::Array<::String>]
        #     The desired list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster's nodes should be located.
        #
        #     This list must always include the cluster's primary zone.
        #
        #     Warning: changing cluster locations will update the locations of all node
        #     pools and will result in nodes being added and/or removed.
        # @!attribute [rw] desired_master_authorized_networks_config
        #   @return [::Google::Cloud::Container::V1beta1::MasterAuthorizedNetworksConfig]
        #     The desired configuration options for master authorized networks feature.
        # @!attribute [rw] desired_pod_security_policy_config
        #   @return [::Google::Cloud::Container::V1beta1::PodSecurityPolicyConfig]
        #     The desired configuration options for the PodSecurityPolicy feature.
        # @!attribute [rw] desired_cluster_autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::ClusterAutoscaling]
        #     Cluster-level autoscaling configuration.
        # @!attribute [rw] desired_binary_authorization
        #   @return [::Google::Cloud::Container::V1beta1::BinaryAuthorization]
        #     The desired configuration options for the Binary Authorization feature.
        # @!attribute [rw] desired_logging_service
        #   @return [::String]
        #     The logging service the cluster should use to write logs.
        #     Currently available options:
        #
        #     * `logging.googleapis.com/kubernetes` - The Cloud Logging
        #     service with a Kubernetes-native resource model
        #     * `logging.googleapis.com` - The legacy Cloud Logging service (no longer
        #       available as of GKE 1.15).
        #     * `none` - no logs will be exported from the cluster.
        #
        #     If left as an empty string,`logging.googleapis.com/kubernetes` will be
        #     used for GKE 1.14+ or `logging.googleapis.com` for earlier versions.
        # @!attribute [rw] desired_resource_usage_export_config
        #   @return [::Google::Cloud::Container::V1beta1::ResourceUsageExportConfig]
        #     The desired configuration for exporting resource usage.
        # @!attribute [rw] desired_vertical_pod_autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::VerticalPodAutoscaling]
        #     Cluster-level Vertical Pod Autoscaling configuration.
        # @!attribute [rw] desired_private_cluster_config
        #   @return [::Google::Cloud::Container::V1beta1::PrivateClusterConfig]
        #     The desired private cluster configuration.
        # @!attribute [rw] desired_intra_node_visibility_config
        #   @return [::Google::Cloud::Container::V1beta1::IntraNodeVisibilityConfig]
        #     The desired config of Intra-node visibility.
        # @!attribute [rw] desired_default_snat_status
        #   @return [::Google::Cloud::Container::V1beta1::DefaultSnatStatus]
        #     The desired status of whether to disable default sNAT for this cluster.
        # @!attribute [rw] desired_cluster_telemetry
        #   @return [::Google::Cloud::Container::V1beta1::ClusterTelemetry]
        #     The desired telemetry integration for the cluster.
        # @!attribute [rw] desired_release_channel
        #   @return [::Google::Cloud::Container::V1beta1::ReleaseChannel]
        #     The desired release channel configuration.
        # @!attribute [rw] desired_tpu_config
        #   @return [::Google::Cloud::Container::V1beta1::TpuConfig]
        #     The desired Cloud TPU configuration.
        # @!attribute [rw] desired_l4ilb_subsetting_config
        #   @return [::Google::Cloud::Container::V1beta1::ILBSubsettingConfig]
        #     The desired L4 Internal Load Balancer Subsetting configuration.
        # @!attribute [rw] desired_datapath_provider
        #   @return [::Google::Cloud::Container::V1beta1::DatapathProvider]
        #     The desired datapath provider for the cluster.
        # @!attribute [rw] desired_private_ipv6_google_access
        #   @return [::Google::Cloud::Container::V1beta1::PrivateIPv6GoogleAccess]
        #     The desired state of IPv6 connectivity to Google Services.
        # @!attribute [rw] desired_notification_config
        #   @return [::Google::Cloud::Container::V1beta1::NotificationConfig]
        #     The desired notification configuration.
        # @!attribute [rw] desired_master_version
        #   @return [::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
        # @!attribute [rw] desired_gcfs_config
        #   @return [::Google::Cloud::Container::V1beta1::GcfsConfig]
        #     The desired GCFS config for the cluster.
        # @!attribute [rw] desired_database_encryption
        #   @return [::Google::Cloud::Container::V1beta1::DatabaseEncryption]
        #     Configuration of etcd encryption.
        # @!attribute [rw] desired_workload_identity_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadIdentityConfig]
        #     Configuration for Workload Identity.
        # @!attribute [rw] desired_workload_certificates
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadCertificates]
        #     Configuration for issuance of mTLS keys and certificates to Kubernetes
        #     pods.
        # @!attribute [rw] desired_mesh_certificates
        #   @return [::Google::Cloud::Container::V1beta1::MeshCertificates]
        #     Configuration for issuance of mTLS keys and certificates to Kubernetes
        #     pods.
        # @!attribute [rw] desired_workload_alts_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadALTSConfig]
        #     Configuration for direct-path (via ALTS) with workload identity.
        # @!attribute [rw] desired_shielded_nodes
        #   @return [::Google::Cloud::Container::V1beta1::ShieldedNodes]
        #     Configuration for Shielded Nodes.
        # @!attribute [rw] desired_cost_management_config
        #   @return [::Google::Cloud::Container::V1beta1::CostManagementConfig]
        #     The desired configuration for the fine-grained cost management feature.
        # @!attribute [rw] desired_master
        #   @return [::Google::Cloud::Container::V1beta1::Master]
        #     Configuration for master components.
        # @!attribute [rw] desired_dns_config
        #   @return [::Google::Cloud::Container::V1beta1::DNSConfig]
        #     DNSConfig contains clusterDNS config for this cluster.
        # @!attribute [rw] desired_service_external_ips_config
        #   @return [::Google::Cloud::Container::V1beta1::ServiceExternalIPsConfig]
        #     ServiceExternalIPsConfig specifies the config for the use of Services with
        #     ExternalIPs field.
        # @!attribute [rw] desired_authenticator_groups_config
        #   @return [::Google::Cloud::Container::V1beta1::AuthenticatorGroupsConfig]
        #     AuthenticatorGroupsConfig specifies the config for the cluster security
        #     groups settings.
        # @!attribute [rw] desired_logging_config
        #   @return [::Google::Cloud::Container::V1beta1::LoggingConfig]
        #     The desired logging configuration.
        # @!attribute [rw] desired_monitoring_config
        #   @return [::Google::Cloud::Container::V1beta1::MonitoringConfig]
        #     The desired monitoring configuration.
        # @!attribute [rw] desired_identity_service_config
        #   @return [::Google::Cloud::Container::V1beta1::IdentityServiceConfig]
        #     The desired Identity Service component configuration.
        # @!attribute [rw] desired_enable_private_endpoint
        #   @return [::Boolean]
        #     Enable/Disable private endpoint for the cluster's master.
        # @!attribute [rw] desired_node_pool_auto_config_network_tags
        #   @return [::Google::Cloud::Container::V1beta1::NetworkTags]
        #     The desired network tags that apply to all auto-provisioned node pools
        #     in autopilot clusters and node auto-provisioning enabled clusters.
        # @!attribute [rw] desired_protect_config
        #   @return [::Google::Cloud::Container::V1beta1::ProtectConfig]
        #     Deprecated: Use DesiredSecurityPostureConfig instead.
        #     Enable/Disable Protect API features for the cluster.
        # @!attribute [rw] desired_gateway_api_config
        #   @return [::Google::Cloud::Container::V1beta1::GatewayAPIConfig]
        #     The desired config of Gateway API on this cluster.
        # @!attribute [rw] etag
        #   @return [::String]
        #     The current etag of the cluster.
        #     If an etag is provided and does not match the current etag of the cluster,
        #     update will be blocked and an ABORTED error will be returned.
        # @!attribute [rw] desired_node_pool_logging_config
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolLoggingConfig]
        #     The desired node pool logging configuration defaults for the cluster.
        # @!attribute [rw] desired_fleet
        #   @return [::Google::Cloud::Container::V1beta1::Fleet]
        #     The desired fleet configuration for the cluster.
        # @!attribute [rw] desired_stack_type
        #   @return [::Google::Cloud::Container::V1beta1::StackType]
        #     The desired stack type of the cluster.
        #     If a stack type is provided and does not match the current stack type of
        #     the cluster, update will attempt to change the stack type to the new type.
        # @!attribute [rw] additional_pod_ranges_config
        #   @return [::Google::Cloud::Container::V1beta1::AdditionalPodRangesConfig]
        #     The additional pod ranges to be added to the cluster. These pod ranges
        #     can be used by node pools to allocate pod IPs.
        # @!attribute [rw] removed_additional_pod_ranges_config
        #   @return [::Google::Cloud::Container::V1beta1::AdditionalPodRangesConfig]
        #     The additional pod ranges that are to be removed from the cluster.
        #     The pod ranges specified here must have been specified earlier in the
        #     'additional_pod_ranges_config' argument.
        # @!attribute [rw] enable_k8s_beta_apis
        #   @return [::Google::Cloud::Container::V1beta1::K8sBetaAPIConfig]
        #     Kubernetes open source beta apis enabled on the cluster. Only beta apis
        # @!attribute [rw] desired_security_posture_config
        #   @return [::Google::Cloud::Container::V1beta1::SecurityPostureConfig]
        #     Enable/Disable Security Posture API features for the cluster.
        # @!attribute [rw] desired_network_performance_config
        #   @return [::Google::Cloud::Container::V1beta1::NetworkConfig::ClusterNetworkPerformanceConfig]
        #     The desired network performance config.
        # @!attribute [rw] desired_enable_fqdn_network_policy
        #   @return [::Boolean]
        #     Enable/Disable FQDN Network Policy for the cluster.
        # @!attribute [rw] desired_autopilot_workload_policy_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadPolicyConfig]
        #     The desired workload policy configuration for the autopilot cluster.
        # @!attribute [rw] desired_k8s_beta_apis
        #   @return [::Google::Cloud::Container::V1beta1::K8sBetaAPIConfig]
        #     Beta APIs enabled for cluster.
        # @!attribute [rw] desired_host_maintenance_policy
        #   @return [::Google::Cloud::Container::V1beta1::HostMaintenancePolicy]
        #     HostMaintenancePolicy contains the desired maintenance policy for the
        #     Google Compute Engine hosts.
        # @!attribute [rw] desired_node_pool_auto_config_resource_manager_tags
        #   @return [::Google::Cloud::Container::V1beta1::ResourceManagerTags]
        #     The desired resource manager tags that apply to all auto-provisioned node
        #     pools in autopilot clusters and node auto-provisioning enabled clusters.
        # @!attribute [rw] desired_in_transit_encryption_config
        #   @return [::Google::Cloud::Container::V1beta1::InTransitEncryptionConfig]
        #     Specify the details of in-transit encryption.
        class ClusterUpdate
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AdditionalPodRangesConfig is the configuration for additional pod secondary
        # ranges supporting the ClusterUpdate message.
        # @!attribute [rw] pod_range_names
        #   @return [::Array<::String>]
        #     Name for pod secondary ipv4 range which has the actual range defined ahead.
        # @!attribute [r] pod_range_info
        #   @return [::Array<::Google::Cloud::Container::V1beta1::RangeInfo>]
        #     Output only. [Output only] Information for additional pod range.
        class AdditionalPodRangesConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # RangeInfo contains the range name and the range utilization by this cluster.
        # @!attribute [r] range_name
        #   @return [::String]
        #     Output only. [Output only] Name of a range.
        # @!attribute [r] utilization
        #   @return [::Float]
        #     Output only. [Output only] The utilization of the range.
        class RangeInfo
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # This operation resource represents operations that may have happened or are
        # happening on the cluster. All fields are output only.
        # @!attribute [rw] name
        #   @return [::String]
        #     The server-assigned ID for the operation.
        # @!attribute [rw] zone
        #   @return [::String]
        #     The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     operation is taking place. This field is deprecated, use location instead.
        # @!attribute [rw] operation_type
        #   @return [::Google::Cloud::Container::V1beta1::Operation::Type]
        #     The operation type.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1beta1::Operation::Status]
        #     The current status of the operation.
        # @!attribute [rw] detail
        #   @return [::String]
        #     Detailed operation progress, if available.
        # @!attribute [r] status_message
        #   @return [::String]
        #     Output only. If an error has occurred, a textual description of the error.
        #     Deprecated. Use field error instead.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     Server-defined URI for the operation. Example:
        #     `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
        # @!attribute [rw] target_link
        #   @return [::String]
        #     Server-defined URI for the target of the operation. The format of this is a
        #     URI to the resource being modified (such as a cluster, node pool, or node).
        #     For node pool repairs, there may be multiple nodes being repaired, but only
        #     one will be the target.
        #
        #     Examples:
        #
        #     -
        #     ##
        #     `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster`
        #
        #     ##
        #     `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np`
        #
        #     `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
        # @!attribute [rw] location
        #   @return [::String]
        #     [Output only] The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        #     or
        #     [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        #     in which the cluster resides.
        # @!attribute [rw] start_time
        #   @return [::String]
        #     [Output only] The time the operation started, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [rw] end_time
        #   @return [::String]
        #     [Output only] The time the operation completed, in
        #     [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        # @!attribute [r] progress
        #   @return [::Google::Cloud::Container::V1beta1::OperationProgress]
        #     Output only. [Output only] Progress information for an operation.
        # @!attribute [rw] cluster_conditions
        #   @return [::Array<::Google::Cloud::Container::V1beta1::StatusCondition>]
        #     Which conditions caused the current cluster state.
        #     Deprecated. Use field error instead.
        # @!attribute [rw] nodepool_conditions
        #   @return [::Array<::Google::Cloud::Container::V1beta1::StatusCondition>]
        #     Which conditions caused the current node pool state.
        #     Deprecated. Use field error instead.
        # @!attribute [rw] error
        #   @return [::Google::Rpc::Status]
        #     The error result of the operation in case of failure.
        class Operation
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Current status of the operation.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The operation has been created.
            PENDING = 1

            # The operation is currently running.
            RUNNING = 2

            # The operation is done, either cancelled or completed.
            DONE = 3

            # The operation is aborting.
            ABORTING = 4
          end

          # Operation type categorizes the operation.
          module Type
            # Not set.
            TYPE_UNSPECIFIED = 0

            # The cluster is being created. The cluster should be assumed to be
            # unusable until the operation finishes.
            #
            # In the event of the operation failing, the cluster will enter the [ERROR
            # state][Cluster.Status.ERROR] and eventually be deleted.
            CREATE_CLUSTER = 1

            # The cluster is being deleted. The cluster should be assumed to be
            # unusable as soon as this operation starts.
            #
            # In the event of the operation failing, the cluster will enter the [ERROR
            # state][Cluster.Status.ERROR] and the deletion will be automatically
            # retried until completed.
            DELETE_CLUSTER = 2

            # The [cluster
            # version][google.container.v1beta1.ClusterUpdate.desired_master_version]
            # is being updated. Note that this includes "upgrades" to the same version,
            # which are simply a recreation. This also includes
            # [auto-upgrades](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#upgrading_automatically).
            # For more details, see [documentation on cluster
            # upgrades](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#cluster_upgrades).
            UPGRADE_MASTER = 3

            # A node pool is being updated. Despite calling this an "upgrade", this
            # includes most forms of updates to node pools. This also includes
            # [auto-upgrades](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-upgrades).
            #
            # This operation sets the
            # {::Google::Cloud::Container::V1beta1::Operation#progress progress} field and may be
            # {::Google::Cloud::Container::V1beta1::ClusterManager::Client#cancel_operation canceled}.
            #
            # The upgrade strategy depends on [node pool
            # configuration](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pool-upgrade-strategies).
            # The nodes are generally still usable during this operation.
            UPGRADE_NODES = 4

            # A problem has been detected with the control plane and is being repaired.
            # This operation type is initiated by GKE. For more details, see
            # [documentation on
            # repairs](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs).
            REPAIR_CLUSTER = 5

            # The cluster is being updated. This is a broad category of operations and
            # includes operations that only change metadata as well as those that must
            # recreate the entire cluster. If the control plane must be recreated, this
            # will cause temporary downtime for zonal clusters.
            #
            # Some features require recreating the nodes as well. Those will be
            # recreated as separate operations and the update may not be completely
            # functional until the node pools recreations finish. Node recreations will
            # generally follow [maintenance
            # policies](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions).
            #
            # Some GKE-initiated operations use this type. This includes certain types
            # of auto-upgrades and incident mitigations.
            UPDATE_CLUSTER = 6

            # A node pool is being created. The node pool should be assumed to be
            # unusable until this operation finishes. In the event of an error, the
            # node pool may be partially created.
            #
            # If enabled, [node
            # autoprovisioning](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning)
            # may have automatically initiated such operations.
            CREATE_NODE_POOL = 7

            # The node pool is being deleted. The node pool should be assumed to be
            # unusable as soon as this operation starts.
            DELETE_NODE_POOL = 8

            # The node pool's
            # {::Google::Cloud::Container::V1beta1::NodePool#management manamagent} field is being
            # updated. These operations only update metadata and may be concurrent with
            # most other operations.
            SET_NODE_POOL_MANAGEMENT = 9

            # A problem has been detected with nodes and [they are being
            # repaired](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair).
            # This operation type is initiated by GKE, typically automatically. This
            # operation may be concurrent with other operations and there may be
            # multiple repairs occurring on the same node pool.
            AUTO_REPAIR_NODES = 10

            # Unused. Automatic node upgrade uses
            # {::Google::Cloud::Container::V1beta1::Operation::Type::UPGRADE_NODES UPGRADE_NODES}.
            AUTO_UPGRADE_NODES = 11

            # Unused. Updating labels uses
            # {::Google::Cloud::Container::V1beta1::Operation::Type::UPDATE_CLUSTER UPDATE_CLUSTER}.
            SET_LABELS = 12

            # Unused. Updating master auth uses
            # {::Google::Cloud::Container::V1beta1::Operation::Type::UPDATE_CLUSTER UPDATE_CLUSTER}.
            SET_MASTER_AUTH = 13

            # The node pool is being resized. With the exception of resizing to or from
            # size zero, the node pool is generally usable during this operation.
            SET_NODE_POOL_SIZE = 14

            # Unused. Updating network policy uses
            # {::Google::Cloud::Container::V1beta1::Operation::Type::UPDATE_CLUSTER UPDATE_CLUSTER}.
            SET_NETWORK_POLICY = 15

            # Unused. Updating maintenance policy uses
            # {::Google::Cloud::Container::V1beta1::Operation::Type::UPDATE_CLUSTER UPDATE_CLUSTER}.
            SET_MAINTENANCE_POLICY = 16

            # The control plane is being resized. This operation type is initiated by
            # GKE. These operations are often performed preemptively to ensure that the
            # control plane has sufficient resources and is not typically an indication
            # of issues. For more details, see
            # [documentation on
            # resizes](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs).
            RESIZE_CLUSTER = 18

            # Fleet features of GKE Enterprise are being upgraded. The cluster should
            # be assumed to be blocked for other upgrades until the operation finishes.
            FLEET_FEATURE_UPGRADE = 19
          end
        end

        # Information about operation (or operation stage) progress.
        # @!attribute [rw] name
        #   @return [::String]
        #     A non-parameterized string describing an operation stage.
        #     Unset for single-stage operations.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1beta1::Operation::Status]
        #     Status of an operation stage.
        #     Unset for single-stage operations.
        # @!attribute [rw] metrics
        #   @return [::Array<::Google::Cloud::Container::V1beta1::OperationProgress::Metric>]
        #     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}]
        # @!attribute [rw] stages
        #   @return [::Array<::Google::Cloud::Container::V1beta1::OperationProgress>]
        #     Substages of an operation or a stage.
        class OperationProgress
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Progress metric is (string, int|float|string) pair.
          # @!attribute [rw] name
          #   @return [::String]
          #     Required. Metric name, e.g., "nodes total", "percent done".
          # @!attribute [rw] int_value
          #   @return [::Integer]
          #     For metrics with integer value.
          # @!attribute [rw] double_value
          #   @return [::Float]
          #     For metrics with floating point value.
          # @!attribute [rw] string_value
          #   @return [::String]
          #     For metrics with custom values (ratios, visual progress, etc.).
          class Metric
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # CreateClusterRequest creates a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the parent
        #     field.
        # @!attribute [rw] cluster
        #   @return [::Google::Cloud::Container::V1beta1::Cluster]
        #     Required. A [cluster
        #     resource](https://cloud.google.com/container-engine/reference/rest/v1beta1/projects.locations.clusters)
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project and location) where the cluster will be created.
        #     Specified in the format `projects/*/locations/*`.
        class CreateClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetClusterRequest gets the settings of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to retrieve.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to retrieve.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class GetClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateClusterRequest updates the settings of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] update
        #   @return [::Google::Cloud::Container::V1beta1::ClusterUpdate]
        #     Required. A description of the update.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to update.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class UpdateClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolVersionRequest updates the version of a node pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_version
        #   @return [::String]
        #     Required. 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
        # @!attribute [rw] image_type
        #   @return [::String]
        #     Required. The desired image type for the node pool. Please see
        #     https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
        #     available image types.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     The desired list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the
        #     node pool's nodes should be located. Changing the locations for a node pool
        #     will result in nodes being either created or removed from the node pool,
        #     depending on whether locations are being added or removed.
        # @!attribute [rw] workload_metadata_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadMetadataConfig]
        #     The desired workload metadata config for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool) of the node pool to
        #     update. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        # @!attribute [rw] upgrade_settings
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpgradeSettings]
        #     Upgrade settings control disruption and speed of the upgrade.
        # @!attribute [rw] tags
        #   @return [::Google::Cloud::Container::V1beta1::NetworkTags]
        #     The desired network tags to be applied to all nodes in the node pool.
        #     If this field is not present, the tags will not be changed. Otherwise,
        #     the existing network tags will be *replaced* with the provided tags.
        # @!attribute [rw] taints
        #   @return [::Google::Cloud::Container::V1beta1::NodeTaints]
        #     The desired node taints to be applied to all nodes in the node pool.
        #     If this field is not present, the taints will not be changed. Otherwise,
        #     the existing node taints will be *replaced* with the provided taints.
        # @!attribute [rw] labels
        #   @return [::Google::Cloud::Container::V1beta1::NodeLabels]
        #     The desired node labels to be applied to all nodes in the node pool.
        #     If this field is not present, the labels will not be changed. Otherwise,
        #     the existing node labels will be *replaced* with the provided labels.
        # @!attribute [rw] linux_node_config
        #   @return [::Google::Cloud::Container::V1beta1::LinuxNodeConfig]
        #     Parameters that can be configured on Linux nodes.
        # @!attribute [rw] kubelet_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeKubeletConfig]
        #     Node kubelet configs.
        # @!attribute [rw] node_network_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeNetworkConfig]
        #     Node network config.
        # @!attribute [rw] gcfs_config
        #   @return [::Google::Cloud::Container::V1beta1::GcfsConfig]
        #     GCFS config.
        # @!attribute [rw] confidential_nodes
        #   @return [::Google::Cloud::Container::V1beta1::ConfidentialNodes]
        #     Confidential nodes config.
        #     All the nodes in the node pool will be Confidential VM once enabled.
        # @!attribute [rw] gvnic
        #   @return [::Google::Cloud::Container::V1beta1::VirtualNIC]
        #     Enable or disable gvnic on the node pool.
        # @!attribute [rw] etag
        #   @return [::String]
        #     The current etag of the node pool.
        #     If an etag is provided and does not match the current etag of the node
        #     pool, update will be blocked and an ABORTED error will be returned.
        # @!attribute [rw] fast_socket
        #   @return [::Google::Cloud::Container::V1beta1::FastSocket]
        #     Enable or disable NCCL fast socket for the node pool.
        # @!attribute [rw] logging_config
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolLoggingConfig]
        #     Logging configuration.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Cloud::Container::V1beta1::ResourceLabels]
        #     The resource labels for the node pool to use to annotate any related
        #     Google Compute Engine resources.
        # @!attribute [rw] windows_node_config
        #   @return [::Google::Cloud::Container::V1beta1::WindowsNodeConfig]
        #     Parameters that can be configured on Windows nodes.
        # @!attribute [rw] machine_type
        #   @return [::String]
        #     Optional. The desired machine type for nodes in the node pool.
        #     Initiates an upgrade operation that migrates the nodes in the
        #     node pool to the specified machine type.
        # @!attribute [rw] disk_type
        #   @return [::String]
        #     Optional. The desired disk type for nodes in the node pool.
        #     Initiates an upgrade operation that migrates the nodes in the
        #     node pool to the specified disk type.
        # @!attribute [rw] disk_size_gb
        #   @return [::Integer]
        #     Optional. The desired disk size for nodes in the node pool.
        #     Initiates an upgrade operation that migrates the nodes in the
        #     node pool to the specified disk size.
        # @!attribute [rw] resource_manager_tags
        #   @return [::Google::Cloud::Container::V1beta1::ResourceManagerTags]
        #     Desired resource manager tag keys and values to be attached to the nodes
        #     for managing Compute Engine firewalls using Network Firewall Policies.
        #     Existing tags will be replaced with new values.
        class UpdateNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolAutoscaling]
        #     Required. Autoscaling configuration for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool) of the node pool to set
        #     autoscaler settings. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolAutoscalingRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

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

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

        # SetAddonsRequest sets the addons associated with the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] addons_config
        #   @return [::Google::Cloud::Container::V1beta1::AddonsConfig]
        #     Required. The desired configurations for the various addons available to
        #     run in the cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set addons.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetAddonsConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetLocationsRequest sets the locations of the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     Required. The desired list of Google Compute Engine
        #     [zones](https://cloud.google.com/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.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set locations.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLocationsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateMasterRequest updates the master of the cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] master_version
        #   @return [::String]
        #     Required. The Kubernetes version to change the master to.
        #
        #     Users may specify either explicit versions offered by
        #     Kubernetes Engine or version aliases, which have the following behavior:
        #
        #     - "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
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to update.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class UpdateMasterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetMasterAuthRequest updates the admin password of a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to upgrade.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] action
        #   @return [::Google::Cloud::Container::V1beta1::SetMasterAuthRequest::Action]
        #     Required. The exact form of action to be taken on the master auth.
        # @!attribute [rw] update
        #   @return [::Google::Cloud::Container::V1beta1::MasterAuth]
        #     Required. A description of the update.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to set auth.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetMasterAuthRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Operation type: what type update to perform.
          module Action
            # Operation is unknown and will error out.
            UNKNOWN = 0

            # Set the password to a user generated value.
            SET_PASSWORD = 1

            # Generate a new password and set it to that.
            GENERATE_PASSWORD = 2

            # Set the username.  If an empty username is provided, basic authentication
            # is disabled for the cluster.  If a non-empty username is provided, basic
            # authentication is enabled, with either a provided password or a generated
            # one.
            SET_USERNAME = 3
          end
        end

        # DeleteClusterRequest deletes a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to delete.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to delete.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class DeleteClusterRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListClustersRequest lists clusters.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides, or "-" for all zones. This field has been deprecated and
        #     replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::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.
        class ListClustersRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListClustersResponse is the result of ListClustersRequest.
        # @!attribute [rw] clusters
        #   @return [::Array<::Google::Cloud::Container::V1beta1::Cluster>]
        #     A list of clusters in the project in the specified zone, or
        #     across all ones.
        # @!attribute [rw] missing_zones
        #   @return [::Array<::String>]
        #     If any zones are listed here, the list of clusters returned
        #     may be missing those zones.
        class ListClustersResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetOperationRequest gets a single operation.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] operation_id
        #   @return [::String]
        #     Required. Deprecated. The server-assigned `name` of the operation.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, operation id) of the operation to get.
        #     Specified in the format `projects/*/locations/*/operations/*`.
        class GetOperationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListOperationsRequest lists operations.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) to return
        #     operations for, or `-` for all zones. This field has been deprecated and
        #     replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project and location) where the operations will be listed.
        #     Specified in the format `projects/*/locations/*`.
        #     Location "-" matches all zones and all regions.
        class ListOperationsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CancelOperationRequest cancels a single operation.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     operation resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] operation_id
        #   @return [::String]
        #     Required. Deprecated. The server-assigned `name` of the operation.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, operation id) of the operation to cancel.
        #     Specified in the format `projects/*/locations/*/operations/*`.
        class CancelOperationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListOperationsResponse is the result of ListOperationsRequest.
        # @!attribute [rw] operations
        #   @return [::Array<::Google::Cloud::Container::V1beta1::Operation>]
        #     A list of operations in the project in the specified zone.
        # @!attribute [rw] missing_zones
        #   @return [::Array<::String>]
        #     If any zones are listed here, the list of operations returned
        #     may be missing the operations from those zones.
        class ListOperationsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Gets the current Kubernetes Engine service configuration.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) to return
        #     operations for. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project and location) of the server config to get,
        #     specified in the format `projects/*/locations/*`.
        class GetServerConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Kubernetes Engine service configuration.
        # @!attribute [rw] default_cluster_version
        #   @return [::String]
        #     Version of Kubernetes the service deploys by default.
        # @!attribute [rw] valid_node_versions
        #   @return [::Array<::String>]
        #     List of valid node upgrade target versions, in descending order.
        # @!attribute [rw] default_image_type
        #   @return [::String]
        #     Default image type.
        # @!attribute [rw] valid_image_types
        #   @return [::Array<::String>]
        #     List of valid image types.
        # @!attribute [rw] valid_master_versions
        #   @return [::Array<::String>]
        #     List of valid master versions, in descending order.
        # @!attribute [rw] channels
        #   @return [::Array<::Google::Cloud::Container::V1beta1::ServerConfig::ReleaseChannelConfig>]
        #     List of release channel configurations.
        # @!attribute [rw] windows_version_maps
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Container::V1beta1::WindowsVersions}]
        #     Maps of Kubernetes version and supported Windows server versions.
        class ServerConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # ReleaseChannelConfig exposes configuration for a release channel.
          # @!attribute [rw] channel
          #   @return [::Google::Cloud::Container::V1beta1::ReleaseChannel::Channel]
          #     The release channel this configuration applies to.
          # @!attribute [rw] default_version
          #   @return [::String]
          #     The default version for newly created clusters on the channel.
          # @!attribute [rw] available_versions
          #   @return [::Array<::Google::Cloud::Container::V1beta1::ServerConfig::ReleaseChannelConfig::AvailableVersion>]
          #     Deprecated.
          #     This field has been deprecated and replaced with the valid_versions
          #     field.
          # @!attribute [rw] valid_versions
          #   @return [::Array<::String>]
          #     List of valid versions for the channel.
          class ReleaseChannelConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Deprecated.
            # @!attribute [rw] version
            #   @return [::String]
            #     Kubernetes version.
            # @!attribute [rw] reason
            #   @return [::String]
            #     Reason for availability.
            class AvailableVersion
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Container::V1beta1::WindowsVersions]
          class WindowsVersionMapsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Best effort provisioning.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     When this is enabled, cluster/node pool creations will ignore non-fatal
        #     errors like stockout to best provision as many nodes as possible right now
        #     and eventually bring up all target number of nodes
        # @!attribute [rw] min_provision_nodes
        #   @return [::Integer]
        #     Minimum number of nodes to be provisioned to be considered as succeeded,
        #     and the rest of nodes will be provisioned gradually and eventually when
        #     stockout issue has been resolved.
        class BestEffortProvisioning
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Windows server versions.
        # @!attribute [rw] windows_versions
        #   @return [::Array<::Google::Cloud::Container::V1beta1::WindowsVersions::WindowsVersion>]
        #     List of Windows server versions.
        class WindowsVersions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Windows server version.
          # @!attribute [rw] image_type
          #   @return [::String]
          #     Windows server image type
          # @!attribute [rw] os_version
          #   @return [::String]
          #     Windows server build number
          # @!attribute [rw] support_end_date
          #   @return [::Google::Type::Date]
          #     Mainstream support end date
          class WindowsVersion
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # CreateNodePoolRequest creates a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the parent
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] node_pool
        #   @return [::Google::Cloud::Container::V1beta1::NodePool]
        #     Required. The node pool to create.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project, location, cluster name) where the node pool will be
        #     created. Specified in the format
        #     `projects/*/locations/*/clusters/*`.
        class CreateNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DeleteNodePoolRequest deletes a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to delete.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to
        #     delete. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class DeleteNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListNodePoolsRequest lists the node pool(s) for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the parent
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the parent field.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The parent (project, location, cluster name) where the node pools will be
        #     listed. Specified in the format `projects/*/locations/*/clusters/*`.
        class ListNodePoolsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetNodePoolRequest retrieves a node pool for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to
        #     get. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class GetNodePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Settings for blue-green upgrade.
        # @!attribute [rw] standard_rollout_policy
        #   @return [::Google::Cloud::Container::V1beta1::BlueGreenSettings::StandardRolloutPolicy]
        #     Standard policy for the blue-green upgrade.
        # @!attribute [rw] node_pool_soak_duration
        #   @return [::Google::Protobuf::Duration]
        #     Time needed after draining entire blue pool. After this period, blue pool
        #     will be cleaned up.
        class BlueGreenSettings
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Standard rollout policy is the default policy for blue-green.
          # @!attribute [rw] batch_percentage
          #   @return [::Float]
          #     Percentage of the blue pool nodes to drain in a batch.
          #     The range of this field should be (0.0, 1.0].
          # @!attribute [rw] batch_node_count
          #   @return [::Integer]
          #     Number of blue nodes to drain in a batch.
          # @!attribute [rw] batch_soak_duration
          #   @return [::Google::Protobuf::Duration]
          #     Soak time after each batch gets drained. Default to zero.
          class StandardRolloutPolicy
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # 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.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name of the node pool.
        # @!attribute [rw] config
        #   @return [::Google::Cloud::Container::V1beta1::NodeConfig]
        #     The node configuration of the pool.
        # @!attribute [rw] initial_node_count
        #   @return [::Integer]
        #     The initial node count for the pool. You must ensure that your
        #     Compute Engine [resource quota](https://cloud.google.com/compute/quotas)
        #     is sufficient for this number of instances. You must also have available
        #     firewall and routes quota.
        # @!attribute [rw] locations
        #   @return [::Array<::String>]
        #     The list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the
        #     NodePool's nodes should be located.
        #
        #     If this value is unspecified during node pool creation, the
        #     [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations)
        #     value will be used, instead.
        #
        #     Warning: changing node pool locations will result in nodes being added
        #     and/or removed.
        # @!attribute [rw] network_config
        #   @return [::Google::Cloud::Container::V1beta1::NodeNetworkConfig]
        #     Networking configuration for this NodePool. If specified, it overrides the
        #     cluster-level defaults.
        # @!attribute [rw] self_link
        #   @return [::String]
        #     [Output only] Server-defined URL for the resource.
        # @!attribute [rw] version
        #   @return [::String]
        #     The version of Kubernetes running on this NodePool's nodes. If unspecified,
        #     it defaults as described
        #     [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).
        # @!attribute [rw] instance_group_urls
        #   @return [::Array<::String>]
        #     [Output only] The resource URLs of the [managed instance
        #     groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances)
        #     associated with this node pool.
        #     During the node pool blue-green upgrade operation, the URLs contain both
        #     blue and green resources.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::Status]
        #     [Output only] The status of the nodes in this pool instance.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     [Output only] Deprecated. Use conditions instead.
        #     Additional information about the current status of this
        #     node pool instance, if available.
        # @!attribute [rw] autoscaling
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolAutoscaling]
        #     Autoscaler configuration for this NodePool. Autoscaler is enabled
        #     only if a valid configuration is present.
        # @!attribute [rw] management
        #   @return [::Google::Cloud::Container::V1beta1::NodeManagement]
        #     NodeManagement configuration for this NodePool.
        # @!attribute [rw] max_pods_constraint
        #   @return [::Google::Cloud::Container::V1beta1::MaxPodsConstraint]
        #     The constraint on the maximum number of pods that can be run
        #     simultaneously on a node in the node pool.
        # @!attribute [rw] conditions
        #   @return [::Array<::Google::Cloud::Container::V1beta1::StatusCondition>]
        #     Which conditions caused the current node pool state.
        # @!attribute [rw] pod_ipv4_cidr_size
        #   @return [::Integer]
        #     [Output only] The pod CIDR block size per node in this node pool.
        # @!attribute [rw] upgrade_settings
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpgradeSettings]
        #     Upgrade settings control disruption and speed of the upgrade.
        # @!attribute [rw] placement_policy
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::PlacementPolicy]
        #     Specifies the node placement policy.
        # @!attribute [r] update_info
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpdateInfo]
        #     Output only. [Output only] Update info contains relevant information during
        #     a node pool update.
        # @!attribute [rw] etag
        #   @return [::String]
        #     This checksum is computed by the server based on the value of node pool
        #     fields, and may be sent on update requests to ensure the client has an
        #     up-to-date value before proceeding.
        # @!attribute [rw] queued_provisioning
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::QueuedProvisioning]
        #     Specifies the configuration of queued provisioning.
        # @!attribute [rw] best_effort_provisioning
        #   @return [::Google::Cloud::Container::V1beta1::BestEffortProvisioning]
        #     Enable best effort provisioning for nodes
        class NodePool
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # These upgrade settings control the level of parallelism and the level of
          # disruption caused by an upgrade.
          #
          # maxUnavailable controls the number of nodes that can be simultaneously
          # unavailable.
          #
          # maxSurge controls the number of additional nodes that can be added to the
          # node pool temporarily for the time of the upgrade to increase the number of
          # available nodes.
          #
          # (maxUnavailable + maxSurge) determines the level of parallelism (how many
          # nodes are being upgraded at the same time).
          #
          # Note: upgrades inevitably introduce some disruption since workloads need to
          # be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
          # this holds true. (Disruption stays within the limits of
          # PodDisruptionBudget, if it is configured.)
          #
          # Consider a hypothetical node pool with 5 nodes having maxSurge=2,
          # maxUnavailable=1. This means the upgrade process upgrades 3 nodes
          # simultaneously. It creates 2 additional (upgraded) nodes, then it brings
          # down 3 old (not yet upgraded) nodes at the same time. This ensures that
          # there are always at least 4 nodes available.
          #
          # These upgrade settings configure the upgrade strategy for the node pool.
          # Use strategy to switch between the strategies applied to the node pool.
          #
          # If the strategy is SURGE, use max_surge and max_unavailable to control
          # the level of parallelism and the level of disruption caused by upgrade.
          # 1. maxSurge controls the number of additional nodes that can be added to
          # the node pool temporarily for the time of the upgrade to increase the
          # number of available nodes.
          # 2. maxUnavailable controls the number of nodes that can be simultaneously
          # unavailable.
          # 3. (maxUnavailable + maxSurge) determines the level of parallelism (how
          # many nodes are being upgraded at the same time).
          #
          # If the strategy is BLUE_GREEN, use blue_green_settings to configure the
          # blue-green upgrade related settings.
          # 1. standard_rollout_policy is the default policy. The policy is used to
          # control the way blue pool gets drained. The draining is executed in the
          # batch mode. The batch size could be specified as either percentage of the
          # node pool size or the number of nodes. batch_soak_duration is the soak
          # time after each batch gets drained.
          # 2. node_pool_soak_duration is the soak time after all blue nodes are
          # drained. After this period, the blue pool nodes will be deleted.
          # @!attribute [rw] max_surge
          #   @return [::Integer]
          #     The maximum number of nodes that can be created beyond the current size
          #     of the node pool during the upgrade process.
          # @!attribute [rw] max_unavailable
          #   @return [::Integer]
          #     The maximum number of nodes that can be simultaneously unavailable during
          #     the upgrade process. A node is considered available if its status is
          #     Ready.
          # @!attribute [rw] strategy
          #   @return [::Google::Cloud::Container::V1beta1::NodePoolUpdateStrategy]
          #     Update strategy of the node pool.
          # @!attribute [rw] blue_green_settings
          #   @return [::Google::Cloud::Container::V1beta1::BlueGreenSettings]
          #     Settings for blue-green upgrade strategy.
          class UpgradeSettings
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # UpdateInfo contains resource (instance groups, etc), status and other
          # intermediate information relevant to a node pool upgrade.
          # @!attribute [rw] blue_green_info
          #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpdateInfo::BlueGreenInfo]
          #     Information of a blue-green upgrade.
          class UpdateInfo
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Information relevant to blue-green upgrade.
            # @!attribute [rw] phase
            #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpdateInfo::BlueGreenInfo::Phase]
            #     Current blue-green upgrade phase.
            # @!attribute [rw] blue_instance_group_urls
            #   @return [::Array<::String>]
            #     The resource URLs of the [managed instance groups]
            #     (/compute/docs/instance-groups/creating-groups-of-managed-instances)
            #     associated with blue pool.
            # @!attribute [rw] green_instance_group_urls
            #   @return [::Array<::String>]
            #     The resource URLs of the [managed instance groups]
            #     (/compute/docs/instance-groups/creating-groups-of-managed-instances)
            #     associated with green pool.
            # @!attribute [rw] blue_pool_deletion_start_time
            #   @return [::String]
            #     Time to start deleting blue pool to complete blue-green upgrade,
            #     in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
            # @!attribute [rw] green_pool_version
            #   @return [::String]
            #     Version of green pool.
            class BlueGreenInfo
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods

              # Phase represents the different stages blue-green upgrade is running in.
              module Phase
                # Unspecified phase.
                PHASE_UNSPECIFIED = 0

                # blue-green upgrade has been initiated.
                UPDATE_STARTED = 1

                # Start creating green pool nodes.
                CREATING_GREEN_POOL = 2

                # Start cordoning blue pool nodes.
                CORDONING_BLUE_POOL = 3

                # Start waiting after cordoning the blue pool and before draining it.
                WAITING_TO_DRAIN_BLUE_POOL = 8

                # Start draining blue pool nodes.
                DRAINING_BLUE_POOL = 4

                # Start soaking time after draining entire blue pool.
                NODE_POOL_SOAKING = 5

                # Start deleting blue nodes.
                DELETING_BLUE_POOL = 6

                # Rollback has been initiated.
                ROLLBACK_STARTED = 7
              end
            end
          end

          # PlacementPolicy defines the placement policy used by the node pool.
          # @!attribute [rw] type
          #   @return [::Google::Cloud::Container::V1beta1::NodePool::PlacementPolicy::Type]
          #     The type of placement.
          # @!attribute [rw] tpu_topology
          #   @return [::String]
          #     TPU placement topology for pod slice node pool.
          #     https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
          # @!attribute [rw] policy_name
          #   @return [::String]
          #     If set, refers to the name of a custom resource policy supplied by the
          #     user. The resource policy must be in the same project and region as the
          #     node pool. If not found, InvalidArgument error is returned.
          class PlacementPolicy
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Type defines the type of placement policy.
            module Type
              # TYPE_UNSPECIFIED specifies no requirements on nodes
              # placement.
              TYPE_UNSPECIFIED = 0

              # COMPACT specifies node placement in the same availability domain to
              # ensure low communication latency.
              COMPACT = 1
            end
          end

          # QueuedProvisioning defines the queued provisioning used by the node pool.
          # @!attribute [rw] enabled
          #   @return [::Boolean]
          #     Denotes that this nodepool is QRM specific, meaning nodes can be only
          #     obtained through queuing via the Cluster Autoscaler ProvisioningRequest
          #     API.
          class QueuedProvisioning
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # The current status of the node pool instance.
          module Status
            # Not set.
            STATUS_UNSPECIFIED = 0

            # The PROVISIONING state indicates the node pool is being created.
            PROVISIONING = 1

            # The RUNNING state indicates the node pool has been created
            # and is fully usable.
            RUNNING = 2

            # The RUNNING_WITH_ERROR state indicates the node pool has been created
            # and is partially usable. Some error state has occurred and some
            # functionality may be impaired. Customer may need to reissue a request
            # or trigger a new update.
            RUNNING_WITH_ERROR = 3

            # The RECONCILING state indicates that some work is actively being done on
            # the node pool, such as upgrading node software. Details can
            # be found in the `statusMessage` field.
            RECONCILING = 4

            # The STOPPING state indicates the node pool is being deleted.
            STOPPING = 5

            # The ERROR state indicates the node pool may be unusable. Details
            # can be found in the `statusMessage` field.
            ERROR = 6
          end
        end

        # NodeManagement defines the set of node management services turned on for the
        # node pool.
        # @!attribute [rw] auto_upgrade
        #   @return [::Boolean]
        #     Whether the nodes will be automatically upgraded.
        # @!attribute [rw] auto_repair
        #   @return [::Boolean]
        #     Whether the nodes will be automatically repaired.
        # @!attribute [rw] upgrade_options
        #   @return [::Google::Cloud::Container::V1beta1::AutoUpgradeOptions]
        #     Specifies the Auto Upgrade knobs for the node pool.
        class NodeManagement
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AutoUpgradeOptions defines the set of options for the user to control how
        # the Auto Upgrades will proceed.
        # @!attribute [rw] auto_upgrade_start_time
        #   @return [::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.
        # @!attribute [rw] description
        #   @return [::String]
        #     [Output only] This field is set when upgrades are about to commence
        #     with the description of the upgrade.
        class AutoUpgradeOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # MaintenancePolicy defines the maintenance policy to be used for the cluster.
        # @!attribute [rw] window
        #   @return [::Google::Cloud::Container::V1beta1::MaintenanceWindow]
        #     Specifies the maintenance window in which maintenance may be performed.
        # @!attribute [rw] resource_version
        #   @return [::String]
        #     A hash identifying the version of this policy, so that updates to fields of
        #     the policy won't accidentally undo intermediate changes (and so that users
        #     of the API unaware of some fields won't accidentally remove other fields).
        #     Make a `get()` request to the cluster to get the current
        #     resource version and include it with requests to set the policy.
        class MaintenancePolicy
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # MaintenanceWindow defines the maintenance window to be used for the cluster.
        # @!attribute [rw] daily_maintenance_window
        #   @return [::Google::Cloud::Container::V1beta1::DailyMaintenanceWindow]
        #     DailyMaintenanceWindow specifies a daily maintenance operation window.
        # @!attribute [rw] recurring_window
        #   @return [::Google::Cloud::Container::V1beta1::RecurringTimeWindow]
        #     RecurringWindow specifies some number of recurring time periods for
        #     maintenance to occur. The time windows may be overlapping. If no
        #     maintenance windows are set, maintenance can occur at any time.
        # @!attribute [rw] maintenance_exclusions
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Container::V1beta1::TimeWindow}]
        #     Exceptions to maintenance window. Non-emergency maintenance should not
        #     occur in these windows.
        class MaintenanceWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Container::V1beta1::TimeWindow]
          class MaintenanceExclusionsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Represents an arbitrary window of time.
        # @!attribute [rw] maintenance_exclusion_options
        #   @return [::Google::Cloud::Container::V1beta1::MaintenanceExclusionOptions]
        #     MaintenanceExclusionOptions provides maintenance exclusion related
        #     options.
        # @!attribute [rw] start_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The time that the window first starts.
        # @!attribute [rw] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The time that the window ends. The end time should take place after the
        #     start time.
        class TimeWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents the Maintenance exclusion option.
        # @!attribute [rw] scope
        #   @return [::Google::Cloud::Container::V1beta1::MaintenanceExclusionOptions::Scope]
        #     Scope specifies the upgrade scope which upgrades are blocked by the
        #     exclusion.
        class MaintenanceExclusionOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Scope of exclusion.
          module Scope
            # NO_UPGRADES excludes all upgrades, including patch upgrades and minor
            # upgrades across control planes and nodes. This is the default exclusion
            # behavior.
            NO_UPGRADES = 0

            # NO_MINOR_UPGRADES excludes all minor upgrades for the cluster, only
            # patches are allowed.
            NO_MINOR_UPGRADES = 1

            # NO_MINOR_OR_NODE_UPGRADES excludes all minor upgrades for the cluster,
            # and also exclude all node pool upgrades. Only control
            # plane patches are allowed.
            NO_MINOR_OR_NODE_UPGRADES = 2
          end
        end

        # Represents an arbitrary window of time that recurs.
        # @!attribute [rw] window
        #   @return [::Google::Cloud::Container::V1beta1::TimeWindow]
        #     The window of the first recurrence.
        # @!attribute [rw] recurrence
        #   @return [::String]
        #     An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how
        #     this window reccurs. They go on for the span of time between the start and
        #     end time.
        #
        #     For example, to have something repeat every weekday, you'd use:
        #     `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR`
        #
        #     To repeat some window daily (equivalent to the DailyMaintenanceWindow):
        #     `FREQ=DAILY`
        #
        #     For the first weekend of every month:
        #     `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU`
        #
        #     This specifies how frequently the window starts. Eg, if you wanted to have
        #     a 9-5 UTC-4 window every weekday, you'd use something like:
        #     ```
        #     start time = 2019-01-01T09:00:00-0400
        #     end time = 2019-01-01T17:00:00-0400
        #     recurrence = FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
        #     ```
        #
        #     Windows can span multiple days. Eg, to make the window encompass every
        #     weekend from midnight Saturday till the last minute of Sunday UTC:
        #     ```
        #     start time = 2019-01-05T00:00:00Z
        #     end time = 2019-01-07T23:59:00Z
        #     recurrence = FREQ=WEEKLY;BYDAY=SA
        #     ```
        #
        #     Note the start and end time's specific dates are largely arbitrary except
        #     to specify duration of the window and when it first starts.
        #     The FREQ values of HOURLY, MINUTELY, and SECONDLY are not supported.
        class RecurringTimeWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Time window specified for daily maintenance operations.
        # @!attribute [rw] start_time
        #   @return [::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.
        # @!attribute [rw] duration
        #   @return [::String]
        #     [Output only] Duration of the time window, automatically chosen to be
        #     smallest possible in the given scenario.
        class DailyMaintenanceWindow
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolManagementRequest sets the node management properties of a node
        # pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] management
        #   @return [::Google::Cloud::Container::V1beta1::NodeManagement]
        #     Required. NodeManagement configuration for the node pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to set
        #     management properties. Specified in the format
        #     `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolManagementRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetNodePoolSizeRequest sets the size of a node pool.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_count
        #   @return [::Integer]
        #     Required. The desired node count for the pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to set
        #     size.
        #     Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
        class SetNodePoolSizeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CompleteNodePoolUpgradeRequest sets the name of target node pool to complete
        # upgrade.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node pool to
        #     complete upgrade.
        #     Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
        class CompleteNodePoolUpgradeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
        # NodePool upgrade. This will be an no-op if the last upgrade successfully
        # completed.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to rollback.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] node_pool_id
        #   @return [::String]
        #     Required. Deprecated. The name of the node pool to rollback.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster, node pool id) of the node poll to
        #     rollback upgrade.
        #     Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
        # @!attribute [rw] respect_pdb
        #   @return [::Boolean]
        #     Option for rollback to ignore the PodDisruptionBudget.
        #     Default value is false.
        class RollbackNodePoolUpgradeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListNodePoolsResponse is the result of ListNodePoolsRequest.
        # @!attribute [rw] node_pools
        #   @return [::Array<::Google::Cloud::Container::V1beta1::NodePool>]
        #     A list of node pools for a cluster.
        class ListNodePoolsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ClusterAutoscaling contains global, per-cluster information
        # required by Cluster Autoscaler to automatically adjust
        # the size of the cluster and create/delete
        # node pools based on the current needs.
        # @!attribute [rw] enable_node_autoprovisioning
        #   @return [::Boolean]
        #     Enables automatic node pool creation and deletion.
        # @!attribute [rw] resource_limits
        #   @return [::Array<::Google::Cloud::Container::V1beta1::ResourceLimit>]
        #     Contains global constraints regarding minimum and maximum
        #     amount of resources in the cluster.
        # @!attribute [rw] autoscaling_profile
        #   @return [::Google::Cloud::Container::V1beta1::ClusterAutoscaling::AutoscalingProfile]
        #     Defines autoscaling behaviour.
        # @!attribute [rw] autoprovisioning_node_pool_defaults
        #   @return [::Google::Cloud::Container::V1beta1::AutoprovisioningNodePoolDefaults]
        #     AutoprovisioningNodePoolDefaults contains defaults for a node pool
        #     created by NAP.
        # @!attribute [rw] autoprovisioning_locations
        #   @return [::Array<::String>]
        #     The list of Google Compute Engine
        #     [zones](https://cloud.google.com/compute/docs/zones#available) in which the
        #     NodePool's nodes can be created by NAP.
        class ClusterAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Defines possible options for autoscaling_profile field.
          module AutoscalingProfile
            # No change to autoscaling configuration.
            PROFILE_UNSPECIFIED = 0

            # Prioritize optimizing utilization of resources.
            OPTIMIZE_UTILIZATION = 1

            # Use default (balanced) autoscaling configuration.
            BALANCED = 2
          end
        end

        # AutoprovisioningNodePoolDefaults contains defaults for a node pool created
        # by NAP.
        # @!attribute [rw] oauth_scopes
        #   @return [::Array<::String>]
        #     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](https://cloud.google.com/container-registry/)).
        #
        #     If unspecified, no scopes are added, unless Cloud Logging or Cloud
        #     Monitoring are enabled, in which case their required scopes will be added.
        # @!attribute [rw] service_account
        #   @return [::String]
        #     The Google Cloud Platform Service Account to be used by the node VMs.
        #     Specify the email address of the Service Account; otherwise, if no Service
        #     Account is specified, the "default" service account is used.
        # @!attribute [rw] upgrade_settings
        #   @return [::Google::Cloud::Container::V1beta1::NodePool::UpgradeSettings]
        #     Upgrade settings control disruption and speed of the upgrade.
        # @!attribute [rw] management
        #   @return [::Google::Cloud::Container::V1beta1::NodeManagement]
        #     NodeManagement configuration for this NodePool.
        # @!attribute [rw] min_cpu_platform
        #   @return [::String]
        #     Deprecated. Minimum CPU platform to be used for NAP created node pools.
        #     The instance may be scheduled on the specified or newer CPU platform.
        #     Applicable values are the friendly names of CPU platforms, such as
        #     minCpuPlatform: Intel Haswell or
        #     minCpuPlatform: Intel Sandy Bridge. For more
        #     information, read [how to specify min CPU
        #     platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
        #     This field is deprecated, min_cpu_platform should be specified using
        #     `cloud.google.com/requested-min-cpu-platform` label selector on the pod.
        #     To unset the min cpu platform field pass "automatic"
        #     as field value.
        # @!attribute [rw] disk_size_gb
        #   @return [::Integer]
        #     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.
        # @!attribute [rw] disk_type
        #   @return [::String]
        #     Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
        #     'pd-balanced')
        #
        #     If unspecified, the default disk type is 'pd-standard'
        # @!attribute [rw] shielded_instance_config
        #   @return [::Google::Cloud::Container::V1beta1::ShieldedInstanceConfig]
        #     Shielded Instance options.
        # @!attribute [rw] boot_disk_kms_key
        #   @return [::String]
        #     The Customer Managed Encryption Key used to encrypt the boot disk attached
        #     to each node in the node pool. This should be of the form
        #     projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME].
        #     For more information about protecting resources with Cloud KMS Keys please
        #     see:
        #     https://cloud.google.com/compute/docs/disks/customer-managed-encryption
        # @!attribute [rw] image_type
        #   @return [::String]
        #     The image type to use for NAP created node. Please see
        #     https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
        #     available image types.
        # @!attribute [rw] insecure_kubelet_readonly_port_enabled
        #   @return [::Boolean]
        #     Enable or disable Kubelet read only port.
        class AutoprovisioningNodePoolDefaults
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Contains information about amount of some resource in the cluster.
        # For memory, value should be in GB.
        # @!attribute [rw] resource_type
        #   @return [::String]
        #     Resource name "cpu", "memory" or gpu-specific string.
        # @!attribute [rw] minimum
        #   @return [::Integer]
        #     Minimum amount of the resource in the cluster.
        # @!attribute [rw] maximum
        #   @return [::Integer]
        #     Maximum amount of the resource in the cluster.
        class ResourceLimit
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # NodePoolAutoscaling contains information required by cluster autoscaler to
        # adjust the size of the node pool to the current cluster usage.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Is autoscaling enabled for this node pool.
        # @!attribute [rw] min_node_count
        #   @return [::Integer]
        #     Minimum number of nodes for one location in the NodePool. Must be >= 1 and
        #     <= max_node_count.
        # @!attribute [rw] max_node_count
        #   @return [::Integer]
        #     Maximum number of nodes for one location in the NodePool. Must be >=
        #     min_node_count. There has to be enough quota to scale up the cluster.
        # @!attribute [rw] autoprovisioned
        #   @return [::Boolean]
        #     Can this node pool be deleted automatically.
        # @!attribute [rw] location_policy
        #   @return [::Google::Cloud::Container::V1beta1::NodePoolAutoscaling::LocationPolicy]
        #     Location policy used when scaling up a nodepool.
        # @!attribute [rw] total_min_node_count
        #   @return [::Integer]
        #     Minimum number of nodes in the node pool. Must be greater than 1 less than
        #     total_max_node_count.
        #     The total_*_node_count fields are mutually exclusive with the *_node_count
        #     fields.
        # @!attribute [rw] total_max_node_count
        #   @return [::Integer]
        #     Maximum number of nodes in the node pool. Must be greater than
        #     total_min_node_count. There has to be enough quota to scale up the cluster.
        #     The total_*_node_count fields are mutually exclusive with the *_node_count
        #     fields.
        class NodePoolAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Location policy specifies how zones are picked when scaling up the
          # nodepool.
          module LocationPolicy
            # Not set.
            LOCATION_POLICY_UNSPECIFIED = 0

            # BALANCED is a best effort policy that aims to balance the sizes of
            # different zones.
            BALANCED = 1

            # ANY policy picks zones that have the highest capacity available.
            ANY = 2
          end
        end

        # 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
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] resource_labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Required. The labels to set for that cluster.
        # @!attribute [rw] label_fingerprint
        #   @return [::String]
        #     Required. The fingerprint of the previous set of labels for this resource,
        #     used to detect conflicts. The fingerprint is initially generated by
        #     Kubernetes Engine and changes after every request to modify or update
        #     labels. You must always provide an up-to-date fingerprint hash when
        #     updating or changing labels. Make a `get()` request to the
        #     resource to get the latest fingerprint.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to set labels.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLabelsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class ResourceLabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
        # a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster to update.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Required. Whether ABAC authorization will be enabled in the cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to set legacy
        #     abac. Specified in the format `projects/*/locations/*/clusters/*`.
        class SetLegacyAbacRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # StartIPRotationRequest creates a new IP for the cluster and then performs
        # a node upgrade on each node pool to point to the new IP.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to start IP
        #     rotation. Specified in the format `projects/*/locations/*/clusters/*`.
        # @!attribute [rw] rotate_credentials
        #   @return [::Boolean]
        #     Whether to rotate credentials during IP rotation.
        class StartIPRotationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CompleteIPRotationRequest moves the cluster master back into single-IP mode.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to complete IP
        #     rotation. Specified in the format `projects/*/locations/*/clusters/*`.
        class CompleteIPRotationRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AcceleratorConfig represents a Hardware Accelerator request.
        # @!attribute [rw] accelerator_count
        #   @return [::Integer]
        #     The number of the accelerator cards exposed to an instance.
        # @!attribute [rw] accelerator_type
        #   @return [::String]
        #     The accelerator type resource name. List of supported accelerators
        #     [here](https://cloud.google.com/compute/docs/gpus)
        # @!attribute [rw] gpu_partition_size
        #   @return [::String]
        #     Size of partitions to create on the GPU. Valid values are described in the
        #     NVIDIA [mig user
        #     guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
        # @!attribute [rw] max_time_shared_clients_per_gpu
        #   @return [::Integer]
        #     The number of time-shared GPU resources to expose for each physical GPU.
        # @!attribute [rw] gpu_sharing_config
        #   @return [::Google::Cloud::Container::V1beta1::GPUSharingConfig]
        #     The configuration for GPU sharing options.
        # @!attribute [rw] gpu_driver_installation_config
        #   @return [::Google::Cloud::Container::V1beta1::GPUDriverInstallationConfig]
        #     The configuration for auto installation of GPU driver.
        class AcceleratorConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GPUSharingConfig represents the GPU sharing configuration for Hardware
        # Accelerators.
        # @!attribute [rw] max_shared_clients_per_gpu
        #   @return [::Integer]
        #     The max number of containers that can share a physical GPU.
        # @!attribute [rw] gpu_sharing_strategy
        #   @return [::Google::Cloud::Container::V1beta1::GPUSharingConfig::GPUSharingStrategy]
        #     The type of GPU sharing strategy to enable on the GPU node.
        class GPUSharingConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The type of GPU sharing strategy currently provided.
          module GPUSharingStrategy
            # Default value.
            GPU_SHARING_STRATEGY_UNSPECIFIED = 0

            # GPUs are time-shared between containers.
            TIME_SHARING = 1
          end
        end

        # GPUDriverInstallationConfig specifies the version of GPU driver to be auto
        # installed.
        # @!attribute [rw] gpu_driver_version
        #   @return [::Google::Cloud::Container::V1beta1::GPUDriverInstallationConfig::GPUDriverVersion]
        #     Mode for how the GPU driver is installed.
        class GPUDriverInstallationConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The GPU driver version to install.
          module GPUDriverVersion
            # Default value is to not install any GPU driver.
            GPU_DRIVER_VERSION_UNSPECIFIED = 0

            # Disable GPU driver auto installation and needs manual installation
            INSTALLATION_DISABLED = 1

            # "Default" GPU driver in COS and Ubuntu.
            DEFAULT = 2

            # "Latest" GPU driver in COS.
            LATEST = 3
          end
        end

        # ManagedPrometheusConfig defines the configuration for
        # Google Cloud Managed Service for Prometheus.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enable Managed Collection.
        class ManagedPrometheusConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # WorkloadMetadataConfig defines the metadata configuration to expose to
        # workloads on the node pool.
        # @!attribute [rw] node_metadata
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadMetadataConfig::NodeMetadata]
        #     NodeMetadata is the configuration for how to expose metadata to the
        #     workloads running on the node.
        # @!attribute [rw] mode
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadMetadataConfig::Mode]
        #     Mode is the configuration for how to expose metadata to workloads running
        #     on the node pool.
        class WorkloadMetadataConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # NodeMetadata is the configuration for if and how to expose the node
          # metadata to the workload running on the node.
          module NodeMetadata
            # Not set.
            UNSPECIFIED = 0

            # Prevent workloads not in hostNetwork from accessing certain VM metadata,
            # specifically kube-env, which contains Kubelet credentials, and the
            # instance identity token.
            #
            # Metadata concealment is a temporary security solution available while the
            # bootstrapping process for cluster nodes is being redesigned with
            # significant security improvements.  This feature is scheduled to be
            # deprecated in the future and later removed.
            SECURE = 1

            # Expose all VM metadata to pods.
            EXPOSE = 2

            # Run the GKE Metadata Server on this node. The GKE Metadata Server exposes
            # a metadata API to workloads that is compatible with the V1 Compute
            # Metadata APIs exposed by the Compute Engine and App Engine Metadata
            # Servers. This feature can only be enabled if Workload Identity is enabled
            # at the cluster level.
            GKE_METADATA_SERVER = 3
          end

          # Mode is the configuration for how to expose metadata to workloads running
          # on the node.
          module Mode
            # Not set.
            MODE_UNSPECIFIED = 0

            # Expose all Compute Engine metadata to pods.
            GCE_METADATA = 1

            # Run the GKE Metadata Server on this node. The GKE Metadata Server exposes
            # a metadata API to workloads that is compatible with the V1 Compute
            # Metadata APIs exposed by the Compute Engine and App Engine Metadata
            # Servers. This feature can only be enabled if Workload Identity is enabled
            # at the cluster level.
            GKE_METADATA = 2
          end
        end

        # SetNetworkPolicyRequest enables/disables network policy for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. Deprecated. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. Deprecated. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides. This field has been deprecated and replaced by the name
        #     field.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. Deprecated. The name of the cluster.
        #     This field has been deprecated and replaced by the name field.
        # @!attribute [rw] network_policy
        #   @return [::Google::Cloud::Container::V1beta1::NetworkPolicy]
        #     Required. Configuration options for the NetworkPolicy feature.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to set networking
        #     policy. Specified in the format `projects/*/locations/*/clusters/*`.
        class SetNetworkPolicyRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
        # @!attribute [rw] project_id
        #   @return [::String]
        #     Required. The Google Developers Console [project ID or project
        #     number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
        # @!attribute [rw] zone
        #   @return [::String]
        #     Required. The name of the Google Compute Engine
        #     [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        #     cluster resides.
        # @!attribute [rw] cluster_id
        #   @return [::String]
        #     Required. The name of the cluster to update.
        # @!attribute [rw] maintenance_policy
        #   @return [::Google::Cloud::Container::V1beta1::MaintenancePolicy]
        #     Required. The maintenance policy to be set for the cluster. An empty field
        #     clears the existing maintenance policy.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster name) of the cluster to set
        #     maintenance policy.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class SetMaintenancePolicyRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListLocationsRequest is used to request the locations that offer GKE.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. Contains the name of the resource requested.
        #     Specified in the format `projects/*`.
        class ListLocationsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListLocationsResponse returns the list of all GKE locations and their
        # recommendation state.
        # @!attribute [rw] locations
        #   @return [::Array<::Google::Cloud::Container::V1beta1::Location>]
        #     A full list of GKE locations.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Only return ListLocationsResponse that occur after the page_token. This
        #     value should be populated from the ListLocationsResponse.next_page_token if
        #     that response token was set (which happens when listing more Locations than
        #     fit in a single ListLocationsResponse).
        class ListLocationsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Location returns the location name, and if the location is recommended
        # for GKE cluster scheduling.
        # @!attribute [rw] type
        #   @return [::Google::Cloud::Container::V1beta1::Location::LocationType]
        #     Contains the type of location this Location is for.
        #     Regional or Zonal.
        # @!attribute [rw] name
        #   @return [::String]
        #     Contains the name of the resource requested.
        #     Specified in the format `projects/*/locations/*`.
        # @!attribute [rw] recommended
        #   @return [::Boolean]
        #     Whether the location is recommended for GKE cluster scheduling.
        class Location
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # LocationType is the type of GKE location, regional or zonal.
          module LocationType
            # LOCATION_TYPE_UNSPECIFIED means the location type was not determined.
            LOCATION_TYPE_UNSPECIFIED = 0

            # A GKE Location where Zonal clusters can be created.
            ZONE = 1

            # A GKE Location where Regional clusters can be created.
            REGION = 2
          end
        end

        # StatusCondition describes why a cluster or a node pool has a certain status
        # (e.g., ERROR or DEGRADED).
        # @!attribute [rw] code
        #   @return [::Google::Cloud::Container::V1beta1::StatusCondition::Code]
        #     Machine-friendly representation of the condition
        #     Deprecated. Use canonical_code instead.
        # @!attribute [rw] message
        #   @return [::String]
        #     Human-friendly representation of the condition
        # @!attribute [rw] canonical_code
        #   @return [::Google::Rpc::Code]
        #     Canonical code of the condition.
        class StatusCondition
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Code for each condition
          module Code
            # UNKNOWN indicates a generic condition.
            UNKNOWN = 0

            # GCE_STOCKOUT indicates that Google Compute Engine resources are
            # temporarily unavailable.
            GCE_STOCKOUT = 1

            # GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
            # service account.
            GKE_SERVICE_ACCOUNT_DELETED = 2

            # Google Compute Engine quota was exceeded.
            GCE_QUOTA_EXCEEDED = 3

            # Cluster state was manually changed by an SRE due to a system logic error.
            SET_BY_OPERATOR = 4

            # Unable to perform an encrypt operation against the CloudKMS key used for
            # etcd level encryption.
            CLOUD_KMS_KEY_ERROR = 7

            # Cluster CA is expiring soon.
            # More codes TBA
            CA_EXPIRING = 9
          end
        end

        # NetworkConfig reports the relative names of network & subnetwork.
        # @!attribute [rw] network
        #   @return [::String]
        #     Output only. The relative name of the Google Compute Engine
        #     {::Google::Cloud::Container::V1beta1::NetworkConfig#network network}(https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
        #     to which the cluster is connected. Example:
        #     projects/my-project/global/networks/my-network
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Output only. The relative name of the Google Compute Engine
        #     [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the
        #     cluster is connected. Example:
        #     projects/my-project/regions/us-central1/subnetworks/my-subnet
        # @!attribute [rw] enable_intra_node_visibility
        #   @return [::Boolean]
        #     Whether Intra-node visibility is enabled for this cluster.
        #     This makes same node pod to pod traffic visible for VPC network.
        # @!attribute [rw] default_snat_status
        #   @return [::Google::Cloud::Container::V1beta1::DefaultSnatStatus]
        #     Whether the cluster disables default in-node sNAT rules. In-node sNAT rules
        #     will be disabled when default_snat_status is disabled. When disabled is set
        #     to false, default IP masquerade rules will be applied to the nodes to
        #     prevent sNAT on cluster internal traffic.
        # @!attribute [rw] enable_l4ilb_subsetting
        #   @return [::Boolean]
        #     Whether L4ILB Subsetting is enabled for this cluster.
        # @!attribute [rw] datapath_provider
        #   @return [::Google::Cloud::Container::V1beta1::DatapathProvider]
        #     The desired datapath provider for this cluster. By default, uses the
        #     IPTables-based kube-proxy implementation.
        # @!attribute [rw] private_ipv6_google_access
        #   @return [::Google::Cloud::Container::V1beta1::PrivateIPv6GoogleAccess]
        #     The desired state of IPv6 connectivity to Google Services.
        #     By default, no private IPv6 access to or from Google Services (all access
        #     will be via IPv4)
        # @!attribute [rw] dns_config
        #   @return [::Google::Cloud::Container::V1beta1::DNSConfig]
        #     DNSConfig contains clusterDNS config for this cluster.
        # @!attribute [rw] service_external_ips_config
        #   @return [::Google::Cloud::Container::V1beta1::ServiceExternalIPsConfig]
        #     ServiceExternalIPsConfig specifies if services with externalIPs field are
        #     blocked or not.
        # @!attribute [rw] gateway_api_config
        #   @return [::Google::Cloud::Container::V1beta1::GatewayAPIConfig]
        #     GatewayAPIConfig contains the desired config of Gateway API on this
        #     cluster.
        # @!attribute [rw] enable_multi_networking
        #   @return [::Boolean]
        #     Whether multi-networking is enabled for this cluster.
        # @!attribute [rw] network_performance_config
        #   @return [::Google::Cloud::Container::V1beta1::NetworkConfig::ClusterNetworkPerformanceConfig]
        #     Network bandwidth tier configuration.
        # @!attribute [rw] enable_fqdn_network_policy
        #   @return [::Boolean]
        #     Whether FQDN Network Policy is enabled on this cluster.
        # @!attribute [rw] in_transit_encryption_config
        #   @return [::Google::Cloud::Container::V1beta1::InTransitEncryptionConfig]
        #     Specify the details of in-transit encryption.
        class NetworkConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Configuration of all network bandwidth tiers
          # @!attribute [rw] total_egress_bandwidth_tier
          #   @return [::Google::Cloud::Container::V1beta1::NetworkConfig::ClusterNetworkPerformanceConfig::Tier]
          #     Specifies the total network bandwidth tier for the NodePool.
          class ClusterNetworkPerformanceConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Node network tier
            module Tier
              # Default value
              TIER_UNSPECIFIED = 0

              # Higher bandwidth, actual values based on VM size.
              TIER_1 = 1
            end
          end
        end

        # GatewayAPIConfig contains the desired config of Gateway API on this cluster.
        # @!attribute [rw] channel
        #   @return [::Google::Cloud::Container::V1beta1::GatewayAPIConfig::Channel]
        #     The Gateway API release channel to use for Gateway API.
        class GatewayAPIConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Channel describes if/how Gateway API should be installed and implemented in
          # a cluster.
          module Channel
            # Default value.
            CHANNEL_UNSPECIFIED = 0

            # Gateway API support is disabled
            CHANNEL_DISABLED = 1

            # Gateway API support is enabled, experimental CRDs are installed
            CHANNEL_EXPERIMENTAL = 3

            # Gateway API support is enabled, standard CRDs are installed
            CHANNEL_STANDARD = 4
          end
        end

        # Config to block services with externalIPs field.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Services with ExternalIPs field are allowed or not.
        class ServiceExternalIPsConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListUsableSubnetworksRequest requests the list of usable subnetworks.
        # available to a user for creating clusters.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent project where subnetworks are usable.
        #     Specified in the format `projects/*`.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Filtering currently only supports equality on the networkProjectId and must
        #     be in the form: "networkProjectId=[PROJECTID]", where `networkProjectId`
        #     is the project which owns the listed subnetworks. This defaults to the
        #     parent project ID.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The max number of results per page that should be returned. If the number
        #     of available results is larger than `page_size`, a `next_page_token` is
        #     returned which can be used to get the next page of results in subsequent
        #     requests. Acceptable values are 0 to 500, inclusive. (Default: 500)
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Specifies a page token to use. Set this to the nextPageToken returned by
        #     previous list requests to get the next page of results.
        class ListUsableSubnetworksRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListUsableSubnetworksResponse is the response of
        # ListUsableSubnetworksRequest.
        # @!attribute [rw] subnetworks
        #   @return [::Array<::Google::Cloud::Container::V1beta1::UsableSubnetwork>]
        #     A list of usable subnetworks in the specified network project.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     This token allows you to get the next page of results for list requests.
        #     If the number of results is larger than `page_size`, use the
        #     `next_page_token` as a value for the query parameter `page_token` in the
        #     next request. The value will become empty when there are no more pages.
        class ListUsableSubnetworksResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Secondary IP range of a usable subnetwork.
        # @!attribute [rw] range_name
        #   @return [::String]
        #     The name associated with this subnetwork secondary range, used when adding
        #     an alias IP range to a VM instance.
        # @!attribute [rw] ip_cidr_range
        #   @return [::String]
        #     The range of IP addresses belonging to this subnetwork secondary range.
        # @!attribute [rw] status
        #   @return [::Google::Cloud::Container::V1beta1::UsableSubnetworkSecondaryRange::Status]
        #     This field is to determine the status of the secondary range programmably.
        class UsableSubnetworkSecondaryRange
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Status shows the current usage of a secondary IP range.
          module Status
            # UNKNOWN is the zero value of the Status enum. It's not a valid status.
            UNKNOWN = 0

            # UNUSED denotes that this range is unclaimed by any cluster.
            UNUSED = 1

            # IN_USE_SERVICE denotes that this range is claimed by a cluster for
            # services. It cannot be used for other clusters.
            IN_USE_SERVICE = 2

            # IN_USE_SHAREABLE_POD denotes this range was created by the network admin
            # and is currently claimed by a cluster for pods. It can only be used by
            # other clusters as a pod range.
            IN_USE_SHAREABLE_POD = 3

            # IN_USE_MANAGED_POD denotes this range was created by GKE and is claimed
            # for pods. It cannot be used for other clusters.
            IN_USE_MANAGED_POD = 4
          end
        end

        # UsableSubnetwork resource returns the subnetwork name, its associated network
        # and the primary CIDR range.
        # @!attribute [rw] subnetwork
        #   @return [::String]
        #     Subnetwork Name.
        #     Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
        # @!attribute [rw] network
        #   @return [::String]
        #     Network Name.
        #     Example: projects/my-project/global/networks/my-network
        # @!attribute [rw] ip_cidr_range
        #   @return [::String]
        #     The range of internal addresses that are owned by this subnetwork.
        # @!attribute [rw] secondary_ip_ranges
        #   @return [::Array<::Google::Cloud::Container::V1beta1::UsableSubnetworkSecondaryRange>]
        #     Secondary IP ranges.
        # @!attribute [rw] status_message
        #   @return [::String]
        #     A human readable status message representing the reasons for cases where
        #     the caller cannot use the secondary ranges under the subnet. For example if
        #     the secondary_ip_ranges is empty due to a permission issue, an insufficient
        #     permission message will be given by status_message.
        class UsableSubnetwork
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # VerticalPodAutoscaling contains global, per-cluster information
        # required by Vertical Pod Autoscaler to automatically adjust
        # the resources of pods controlled by it.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enables vertical pod autoscaling.
        class VerticalPodAutoscaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DefaultSnatStatus contains the desired state of whether default sNAT should
        # be disabled on the cluster.
        # @!attribute [rw] disabled
        #   @return [::Boolean]
        #     Disables cluster default sNAT rules.
        class DefaultSnatStatus
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # IntraNodeVisibilityConfig contains the desired config of the intra-node
        # visibility on this cluster.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enables intra node visibility for this cluster.
        class IntraNodeVisibilityConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer
        # subsetting on this cluster.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enables l4 ILB subsetting for this cluster
        class ILBSubsettingConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DNSConfig contains the desired set of options for configuring clusterDNS.
        # @!attribute [rw] cluster_dns
        #   @return [::Google::Cloud::Container::V1beta1::DNSConfig::Provider]
        #     cluster_dns indicates which in-cluster DNS provider should be used.
        # @!attribute [rw] cluster_dns_scope
        #   @return [::Google::Cloud::Container::V1beta1::DNSConfig::DNSScope]
        #     cluster_dns_scope indicates the scope of access to cluster DNS records.
        # @!attribute [rw] cluster_dns_domain
        #   @return [::String]
        #     cluster_dns_domain is the suffix used for all cluster service records.
        class DNSConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Provider lists the various in-cluster DNS providers.
          module Provider
            # Default value
            PROVIDER_UNSPECIFIED = 0

            # Use GKE default DNS provider(kube-dns) for DNS resolution.
            PLATFORM_DEFAULT = 1

            # Use CloudDNS for DNS resolution.
            CLOUD_DNS = 2

            # Use KubeDNS for DNS resolution.
            KUBE_DNS = 3
          end

          # DNSScope lists the various scopes of access to cluster DNS records.
          module DNSScope
            # Default value, will be inferred as cluster scope.
            DNS_SCOPE_UNSPECIFIED = 0

            # DNS records are accessible from within the cluster.
            CLUSTER_SCOPE = 1

            # DNS records are accessible from within the VPC.
            VPC_SCOPE = 2
          end
        end

        # Constraints applied to pods.
        # @!attribute [rw] max_pods_per_node
        #   @return [::Integer]
        #     Constraint enforced on the max num of pods per node.
        class MaxPodsConstraint
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for the use of Kubernetes Service Accounts in GCP IAM
        # policies.
        # @!attribute [rw] identity_namespace
        #   @return [::String]
        #     IAM Identity Namespace to attach all Kubernetes Service Accounts to.
        # @!attribute [rw] workload_pool
        #   @return [::String]
        #     The workload pool to attach all Kubernetes service accounts to.
        # @!attribute [rw] identity_provider
        #   @return [::String]
        #     identity provider is the third party identity provider.
        class WorkloadIdentityConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for direct-path (via ALTS) with workload identity.
        # @!attribute [rw] enable_alts
        #   @return [::Google::Protobuf::BoolValue]
        #     enable_alts controls whether the alts handshaker should be enabled or not
        #     for direct-path.
        #
        #     Requires Workload Identity
        #     ({::Google::Cloud::Container::V1beta1::WorkloadIdentityConfig#workload_pool workload_pool}
        #     must be non-empty).
        class WorkloadALTSConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
        # @!attribute [rw] enable_certificates
        #   @return [::Google::Protobuf::BoolValue]
        #     enable_certificates controls issuance of workload mTLS certificates.
        #
        #     If set, the GKE Workload Identity Certificates controller and node agent
        #     will be deployed in the cluster, which can then be configured by creating a
        #     WorkloadCertificateConfig Custom Resource.
        #
        #     Requires Workload Identity
        #     ({::Google::Cloud::Container::V1beta1::WorkloadIdentityConfig#workload_pool workload_pool}
        #     must be non-empty).
        class WorkloadCertificates
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
        # @!attribute [rw] enable_certificates
        #   @return [::Google::Protobuf::BoolValue]
        #     enable_certificates controls issuance of workload mTLS certificates.
        #
        #     If set, the GKE Workload Identity Certificates controller and node agent
        #     will be deployed in the cluster, which can then be configured by creating a
        #     WorkloadCertificateConfig Custom Resource.
        #
        #     Requires Workload Identity
        #     ([workload_pool][google.container.v1alpha1.WorkloadIdentityConfig.workload_pool]
        #     must be non-empty).
        class MeshCertificates
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration of etcd encryption.
        # @!attribute [rw] key_name
        #   @return [::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
        # @!attribute [rw] state
        #   @return [::Google::Cloud::Container::V1beta1::DatabaseEncryption::State]
        #     The desired state of etcd encryption.
        class DatabaseEncryption
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # State of etcd encryption.
          module State
            # Should never be set
            UNKNOWN = 0

            # Secrets in etcd are encrypted.
            ENCRYPTED = 1

            # Secrets in etcd are stored in plain text (at etcd level) - this is
            # unrelated to Compute Engine level full disk encryption.
            DECRYPTED = 2
          end
        end

        # Configuration for exporting cluster resource usages.
        # @!attribute [rw] bigquery_destination
        #   @return [::Google::Cloud::Container::V1beta1::ResourceUsageExportConfig::BigQueryDestination]
        #     Configuration to use BigQuery as usage export destination.
        # @!attribute [rw] enable_network_egress_metering
        #   @return [::Boolean]
        #     Whether to enable network egress metering for this cluster. If enabled, a
        #     daemonset will be created in the cluster to meter network egress traffic.
        # @!attribute [rw] consumption_metering_config
        #   @return [::Google::Cloud::Container::V1beta1::ResourceUsageExportConfig::ConsumptionMeteringConfig]
        #     Configuration to enable resource consumption metering.
        class ResourceUsageExportConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Parameters for using BigQuery as the destination of resource usage export.
          # @!attribute [rw] dataset_id
          #   @return [::String]
          #     The ID of a BigQuery Dataset.
          class BigQueryDestination
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Parameters for controlling consumption metering.
          # @!attribute [rw] enabled
          #   @return [::Boolean]
          #     Whether to enable consumption metering for this cluster. If enabled, a
          #     second BigQuery table will be created to hold resource consumption
          #     records.
          class ConsumptionMeteringConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Configuration of Shielded Nodes feature.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Shielded Nodes features are enabled on all nodes in this cluster.
        class ShieldedNodes
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration of gVNIC feature.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether gVNIC features are enabled in the node pool.
        class VirtualNIC
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration of Fast Socket feature.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Fast Socket features are enabled in the node pool.
        class FastSocket
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetOpenIDConfigRequest gets the OIDC discovery document for the
        # cluster. See the OpenID Connect Discovery 1.0 specification for details.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The cluster (project, location, cluster name) to get the discovery document
        #     for. Specified in the format `projects/*/locations/*/clusters/*`.
        class GetOpenIDConfigRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
        # See the OpenID Connect Discovery 1.0 specification for details.
        # @!attribute [rw] issuer
        #   @return [::String]
        #     OIDC Issuer.
        # @!attribute [rw] jwks_uri
        #   @return [::String]
        #     JSON Web Key uri.
        # @!attribute [rw] response_types_supported
        #   @return [::Array<::String>]
        #     Supported response types.
        # @!attribute [rw] subject_types_supported
        #   @return [::Array<::String>]
        #     Supported subject types.
        # @!attribute [rw] id_token_signing_alg_values_supported
        #   @return [::Array<::String>]
        #     supported ID Token signing Algorithms.
        # @!attribute [rw] claims_supported
        #   @return [::Array<::String>]
        #     Supported claims.
        # @!attribute [rw] grant_types
        #   @return [::Array<::String>]
        #     Supported grant types.
        class GetOpenIDConfigResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetJSONWebKeysRequest gets the public component of the keys used by the
        # cluster to sign token requests. This will be the jwks_uri for the discover
        # document returned by getOpenIDConfig. See the OpenID Connect
        # Discovery 1.0 specification for details.
        # @!attribute [rw] parent
        #   @return [::String]
        #     The cluster (project, location, cluster name) to get keys for. Specified in
        #     the format `projects/*/locations/*/clusters/*`.
        class GetJSONWebKeysRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Jwk is a JSON Web Key as specified in RFC 7517
        # @!attribute [rw] kty
        #   @return [::String]
        #     Key Type.
        # @!attribute [rw] alg
        #   @return [::String]
        #     Algorithm.
        # @!attribute [rw] use
        #   @return [::String]
        #     Permitted uses for the public keys.
        # @!attribute [rw] kid
        #   @return [::String]
        #     Key ID.
        # @!attribute [rw] n
        #   @return [::String]
        #     Used for RSA keys.
        # @!attribute [rw] e
        #   @return [::String]
        #     Used for RSA keys.
        # @!attribute [rw] x
        #   @return [::String]
        #     Used for ECDSA keys.
        # @!attribute [rw] y
        #   @return [::String]
        #     Used for ECDSA keys.
        # @!attribute [rw] crv
        #   @return [::String]
        #     Used for ECDSA keys.
        class Jwk
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc 7517
        # @!attribute [rw] keys
        #   @return [::Array<::Google::Cloud::Container::V1beta1::Jwk>]
        #     The public component of the keys used by the cluster to sign token
        #     requests.
        class GetJSONWebKeysResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CheckAutopilotCompatibilityRequest requests getting the blockers for the
        # given operation in the cluster.
        # @!attribute [rw] name
        #   @return [::String]
        #     The name (project, location, cluster) of the cluster to retrieve.
        #     Specified in the format `projects/*/locations/*/clusters/*`.
        class CheckAutopilotCompatibilityRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AutopilotCompatibilityIssue contains information about a specific
        # compatibility issue with Autopilot mode.
        # @!attribute [rw] last_observation
        #   @return [::Google::Protobuf::Timestamp]
        #     The last time when this issue was observed.
        # @!attribute [rw] constraint_type
        #   @return [::String]
        #     The constraint type of the issue.
        # @!attribute [rw] incompatibility_type
        #   @return [::Google::Cloud::Container::V1beta1::AutopilotCompatibilityIssue::IssueType]
        #     The incompatibility type of this issue.
        # @!attribute [rw] subjects
        #   @return [::Array<::String>]
        #     The name of the resources which are subject to this issue.
        # @!attribute [rw] documentation_url
        #   @return [::String]
        #     A URL to a public documnetation, which addresses resolving this issue.
        # @!attribute [rw] description
        #   @return [::String]
        #     The description of the issue.
        class AutopilotCompatibilityIssue
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The type of the reported issue.
          module IssueType
            # Default value, should not be used.
            UNSPECIFIED = 0

            # Indicates that the issue is a known incompatibility between the
            # cluster and Autopilot mode.
            INCOMPATIBILITY = 1

            # Indicates the issue is an incompatibility if customers take no further
            # action to resolve.
            ADDITIONAL_CONFIG_REQUIRED = 2

            # Indicates the issue is not an incompatibility, but depending on the
            # workloads business logic, there is a potential that they won't work on
            # Autopilot.
            PASSED_WITH_OPTIONAL_CONFIG = 3
          end
        end

        # CheckAutopilotCompatibilityResponse has a list of compatibility issues.
        # @!attribute [rw] issues
        #   @return [::Array<::Google::Cloud::Container::V1beta1::AutopilotCompatibilityIssue>]
        #     The list of issues for the given operation.
        # @!attribute [rw] summary
        #   @return [::String]
        #     The summary of the autopilot compatibility response.
        class CheckAutopilotCompatibilityResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ReleaseChannel indicates which release channel a cluster is
        # subscribed to. Release channels are arranged in order of risk.
        #
        # When a cluster is subscribed to a release channel, Google maintains
        # both the master version and the node version. Node auto-upgrade
        # defaults to true and cannot be disabled.
        # @!attribute [rw] channel
        #   @return [::Google::Cloud::Container::V1beta1::ReleaseChannel::Channel]
        #     channel specifies which release channel the cluster is subscribed to.
        class ReleaseChannel
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Possible values for 'channel'.
          module Channel
            # No channel specified.
            UNSPECIFIED = 0

            # RAPID channel is offered on an early access basis for customers who want
            # to test new releases.
            #
            # WARNING: Versions available in the RAPID Channel may be subject to
            # unresolved issues with no known workaround and are not subject to any
            # SLAs.
            RAPID = 1

            # Clusters subscribed to REGULAR receive versions that are considered GA
            # quality. REGULAR is intended for production users who want to take
            # advantage of new features.
            REGULAR = 2

            # Clusters subscribed to STABLE receive versions that are known to be
            # stable and reliable in production.
            STABLE = 3
          end
        end

        # Configuration for fine-grained cost management feature.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether the feature is enabled or not.
        class CostManagementConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Configuration for Cloud TPU.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Cloud TPU integration is enabled or not.
        # @!attribute [rw] use_service_networking
        #   @return [::Boolean]
        #     Whether to use service networking for Cloud TPU or not.
        # @!attribute [rw] ipv4_cidr_block
        #   @return [::String]
        #     IPv4 CIDR block reserved for Cloud TPU in the VPC.
        class TpuConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Master is the configuration for components on master.
        class Master
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AutopilotConversionStatus represents conversion status.
        # @!attribute [r] state
        #   @return [::Google::Cloud::Container::V1beta1::AutopilotConversionStatus::State]
        #     Output only. The current state of the conversion.
        class AutopilotConversionStatus
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The current state of the conversion.
          module State
            # STATE_UNSPECIFIED indicates the state is unspecified.
            STATE_UNSPECIFIED = 0

            # DONE indicates the conversion has been completed. Old node pools will
            # continue being deleted in the background.
            DONE = 5
          end
        end

        # Autopilot is the configuration for Autopilot settings on the cluster.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Enable Autopilot
        # @!attribute [rw] workload_policy_config
        #   @return [::Google::Cloud::Container::V1beta1::WorkloadPolicyConfig]
        #     Workload policy configuration for Autopilot.
        # @!attribute [rw] conversion_status
        #   @return [::Google::Cloud::Container::V1beta1::AutopilotConversionStatus]
        #     ConversionStatus shows conversion status.
        class Autopilot
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # WorkloadPolicyConfig is the configuration of workload policy for autopilot
        # clusters.
        # @!attribute [rw] allow_net_admin
        #   @return [::Boolean]
        #     If true, workloads can use NET_ADMIN capability.
        class WorkloadPolicyConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # NotificationConfig is the configuration of notifications.
        # @!attribute [rw] pubsub
        #   @return [::Google::Cloud::Container::V1beta1::NotificationConfig::PubSub]
        #     Notification config for Pub/Sub.
        class NotificationConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Pub/Sub specific notification config.
          # @!attribute [rw] enabled
          #   @return [::Boolean]
          #     Enable notifications for Pub/Sub.
          # @!attribute [rw] topic
          #   @return [::String]
          #     The desired Pub/Sub topic to which notifications will be
          #     sent by GKE. Format is `projects/{project}/topics/{topic}`.
          # @!attribute [rw] filter
          #   @return [::Google::Cloud::Container::V1beta1::NotificationConfig::Filter]
          #     Allows filtering to one or more specific event types. If no filter is
          #     specified, or if a filter is specified with no event types, all event
          #     types will be sent
          class PubSub
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Allows filtering to one or more specific event types. If event types are
          # present, those and only those event types will be transmitted to the
          # cluster. Other types will be skipped. If no filter is specified, or no
          # event types are present, all event types will be sent
          # @!attribute [rw] event_type
          #   @return [::Array<::Google::Cloud::Container::V1beta1::NotificationConfig::EventType>]
          #     Event types to allowlist.
          class Filter
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Types of notifications currently supported. Can be used to filter what
          # notifications are sent.
          module EventType
            # Not set, will be ignored.
            EVENT_TYPE_UNSPECIFIED = 0

            # Corresponds with UpgradeAvailableEvent.
            UPGRADE_AVAILABLE_EVENT = 1

            # Corresponds with UpgradeEvent.
            UPGRADE_EVENT = 2

            # Corresponds with SecurityBulletinEvent.
            SECURITY_BULLETIN_EVENT = 3
          end
        end

        # ConfidentialNodes is configuration for the confidential nodes feature, which
        # makes nodes run on confidential VMs.
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether Confidential Nodes feature is enabled.
        class ConfidentialNodes
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpgradeEvent is a notification sent to customers by the cluster server when
        # a resource is upgrading.
        # @!attribute [rw] resource_type
        #   @return [::Google::Cloud::Container::V1beta1::UpgradeResourceType]
        #     The resource type that is upgrading.
        # @!attribute [rw] operation
        #   @return [::String]
        #     The operation associated with this upgrade.
        # @!attribute [rw] operation_start_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The time when the operation was started.
        # @!attribute [rw] current_version
        #   @return [::String]
        #     The current version before the upgrade.
        # @!attribute [rw] target_version
        #   @return [::String]
        #     The target version for the upgrade.
        # @!attribute [rw] resource
        #   @return [::String]
        #     Optional relative path to the resource. For example in node pool upgrades,
        #     the relative path of the node pool.
        class UpgradeEvent
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpgradeAvailableEvent is a notification sent to customers when a new
        # available version is released.
        # @!attribute [rw] version
        #   @return [::String]
        #     The release version available for upgrade.
        # @!attribute [rw] resource_type
        #   @return [::Google::Cloud::Container::V1beta1::UpgradeResourceType]
        #     The resource type of the release version.
        # @!attribute [rw] release_channel
        #   @return [::Google::Cloud::Container::V1beta1::ReleaseChannel]
        #     The release channel of the version. If empty, it means a non-channel
        #     release.
        # @!attribute [rw] resource
        #   @return [::String]
        #     Optional relative path to the resource. For example, the relative path of
        #     the node pool.
        # @!attribute [rw] windows_versions
        #   @return [::Google::Cloud::Container::V1beta1::WindowsVersions]
        #     Windows node versions info.
        class UpgradeAvailableEvent
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # SecurityBulletinEvent is a notification sent to customers when a security
        # bulletin has been posted that they are vulnerable to.
        # @!attribute [rw] resource_type_affected
        #   @return [::String]
        #     The resource type (node/control plane) that has the vulnerability. Multiple
        #     notifications (1 notification per resource type) will be sent for a
        #     vulnerability that affects > 1 resource type.
        # @!attribute [rw] bulletin_id
        #   @return [::String]
        #     The ID of the bulletin corresponding to the vulnerability.
        # @!attribute [rw] cve_ids
        #   @return [::Array<::String>]
        #     The CVEs associated with this bulletin.
        # @!attribute [rw] severity
        #   @return [::String]
        #     The severity of this bulletin as it relates to GKE.
        # @!attribute [rw] bulletin_uri
        #   @return [::String]
        #     The URI link to the bulletin on the website for more information.
        # @!attribute [rw] brief_description
        #   @return [::String]
        #     A brief description of the bulletin. See the bulletin pointed to by the
        #     bulletin_uri field for an expanded description.
        # @!attribute [rw] affected_supported_minors
        #   @return [::Array<::String>]
        #     The GKE minor versions affected by this vulnerability.
        # @!attribute [rw] patched_versions
        #   @return [::Array<::String>]
        #     The GKE versions where this vulnerability is patched.
        # @!attribute [rw] suggested_upgrade_target
        #   @return [::String]
        #     This represents a version selected from the patched_versions field that
        #     the cluster receiving this notification should most likely want to upgrade
        #     to based on its current version. Note that if this notification is being
        #     received by a given cluster, it means that this version is currently
        #     available as an upgrade target in that cluster's location.
        # @!attribute [rw] manual_steps_required
        #   @return [::Boolean]
        #     If this field is specified, it means there are manual steps that the user
        #     must take to make their clusters safe.
        class SecurityBulletinEvent
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # IdentityServiceConfig is configuration for Identity Service which allows
        # customers to use external identity providers with the K8S API
        # @!attribute [rw] enabled
        #   @return [::Boolean]
        #     Whether to enable the Identity Service component
        class IdentityServiceConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # LoggingConfig is cluster logging configuration.
        # @!attribute [rw] component_config
        #   @return [::Google::Cloud::Container::V1beta1::LoggingComponentConfig]
        #     Logging components configuration
        class LoggingConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # LoggingComponentConfig is cluster logging component configuration.
        # @!attribute [rw] enable_components
        #   @return [::Array<::Google::Cloud::Container::V1beta1::LoggingComponentConfig::Component>]
        #     Select components to collect logs. An empty set would disable all logging.
        class LoggingComponentConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # GKE components exposing logs
          module Component
            # Default value. This shouldn't be used.
            COMPONENT_UNSPECIFIED = 0

            # system components
            SYSTEM_COMPONENTS = 1

            # workloads
            WORKLOADS = 2

            # kube-apiserver
            APISERVER = 3

            # kube-scheduler
            SCHEDULER = 4

            # kube-controller-manager
            CONTROLLER_MANAGER = 5
          end
        end

        # MonitoringConfig is cluster monitoring configuration.
        # @!attribute [rw] component_config
        #   @return [::Google::Cloud::Container::V1beta1::MonitoringComponentConfig]
        #     Monitoring components configuration
        # @!attribute [rw] managed_prometheus_config
        #   @return [::Google::Cloud::Container::V1beta1::ManagedPrometheusConfig]
        #     Enable Google Cloud Managed Service for Prometheus
        #     in the cluster.
        # @!attribute [rw] advanced_datapath_observability_config
        #   @return [::Google::Cloud::Container::V1beta1::AdvancedDatapathObservabilityConfig]
        #     Configuration of Advanced Datapath Observability features.
        class MonitoringConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AdvancedDatapathObservabilityConfig specifies configuration of observability
        # features of advanced datapath.
        # @!attribute [rw] enable_metrics
        #   @return [::Boolean]
        #     Expose flow metrics on nodes
        # @!attribute [rw] relay_mode
        #   @return [::Google::Cloud::Container::V1beta1::AdvancedDatapathObservabilityConfig::RelayMode]
        #     Method used to make Relay available
        # @!attribute [rw] enable_relay
        #   @return [::Boolean]
        #     Enable Relay component
        class AdvancedDatapathObservabilityConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Supported Relay modes
          module RelayMode
            # Default value. This shouldn't be used.
            RELAY_MODE_UNSPECIFIED = 0

            # disabled
            DISABLED = 1

            # exposed via internal load balancer
            INTERNAL_VPC_LB = 3

            # exposed via external load balancer
            EXTERNAL_LB = 4
          end
        end

        # NodePoolLoggingConfig specifies logging configuration for nodepools.
        # @!attribute [rw] variant_config
        #   @return [::Google::Cloud::Container::V1beta1::LoggingVariantConfig]
        #     Logging variant configuration.
        class NodePoolLoggingConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # LoggingVariantConfig specifies the behaviour of the logging component.
        # @!attribute [rw] variant
        #   @return [::Google::Cloud::Container::V1beta1::LoggingVariantConfig::Variant]
        #     Logging variant deployed on nodes.
        class LoggingVariantConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Logging component variants.
          module Variant
            # Default value. This shouldn't be used.
            VARIANT_UNSPECIFIED = 0

            # default logging variant.
            DEFAULT = 1

            # maximum logging throughput variant.
            MAX_THROUGHPUT = 2
          end
        end

        # MonitoringComponentConfig is cluster monitoring component configuration.
        # @!attribute [rw] enable_components
        #   @return [::Array<::Google::Cloud::Container::V1beta1::MonitoringComponentConfig::Component>]
        #     Select components to collect metrics. An empty set would disable all
        #     monitoring.
        class MonitoringComponentConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # GKE components exposing metrics
          module Component
            # Default value. This shouldn't be used.
            COMPONENT_UNSPECIFIED = 0

            # system components
            SYSTEM_COMPONENTS = 1

            # Deprecated: Use Google Cloud Managed Service for Prometheus.
            WORKLOADS = 2

            # kube-apiserver
            APISERVER = 3

            # kube-scheduler
            SCHEDULER = 4

            # kube-controller-manager
            CONTROLLER_MANAGER = 5

            # Storage
            STORAGE = 7

            # Horizontal Pod Autoscaling
            HPA = 8

            # Pod
            POD = 9

            # DaemonSet
            DAEMONSET = 10

            # Deployment
            DEPLOYMENT = 11

            # Statefulset
            STATEFULSET = 12
          end
        end

        # Fleet is the fleet configuration for the cluster.
        # @!attribute [rw] project
        #   @return [::String]
        #     The Fleet host project(project ID or project number) where this cluster
        #     will be registered to. This field cannot be changed after the cluster has
        #     been registered.
        # @!attribute [rw] membership
        #   @return [::String]
        #     [Output only] The full resource name of the registered fleet membership of
        #     the cluster, in the format
        #     `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
        # @!attribute [rw] pre_registered
        #   @return [::Boolean]
        #     [Output only] Whether the cluster has been registered through the fleet
        #     API.
        class Fleet
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A map of resource manager tag keys and values to be attached to the nodes
        # for managing Compute Engine firewalls using Network Firewall Policies.
        # Tags must be according to specifications in
        # https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications.
        # A maximum of 5 tag key-value pairs can be specified.
        # Existing tags will be replaced with new values.
        # @!attribute [rw] tags
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Tags must be in one of the following formats ([KEY]=[VALUE])
        #     1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}`
        #     2. `{org_id}/{tag_key_name}={tag_value_name}`
        #     3. `{project_id}/{tag_key_name}={tag_value_name}`
        class ResourceManagerTags
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class TagsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # EnterpriseConfig is the cluster enterprise configuration.
        # @!attribute [r] cluster_tier
        #   @return [::Google::Cloud::Container::V1beta1::EnterpriseConfig::ClusterTier]
        #     Output only. [Output only] cluster_tier specifies the premium tier of the
        #     cluster.
        class EnterpriseConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Premium tiers for GKE Cluster.
          module ClusterTier
            # CLUSTER_TIER_UNSPECIFIED is when cluster_tier is not set.
            CLUSTER_TIER_UNSPECIFIED = 0

            # STANDARD indicates a standard GKE cluster.
            STANDARD = 1

            # ENTERPRISE indicates a GKE Enterprise cluster.
            ENTERPRISE = 2
          end
        end

        # PrivateIPv6GoogleAccess controls whether and how the pods can communicate
        # with Google Services through gRPC over IPv6.
        module PrivateIPv6GoogleAccess
          # Default value. Same as DISABLED
          PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED = 0

          # No private access to or from Google Services
          PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED = 1

          # Enables private IPv6 access to Google Services from GKE
          PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE = 2

          # Enables private IPv6 access to and from Google Services
          PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL = 3
        end

        # UpgradeResourceType is the resource type that is upgrading. It is used
        # in upgrade notifications.
        module UpgradeResourceType
          # Default value. This shouldn't be used.
          UPGRADE_RESOURCE_TYPE_UNSPECIFIED = 0

          # Master / control plane
          MASTER = 1

          # Node pool
          NODE_POOL = 2
        end

        # Strategy used for node pool update.
        module NodePoolUpdateStrategy
          # Default value if unset. GKE internally defaults the update strategy to
          # SURGE for unspecified strategies.
          NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED = 0

          # blue-green upgrade.
          BLUE_GREEN = 2

          # SURGE is the traditional way of upgrading a node pool.
          # max_surge and max_unavailable determines the level of upgrade parallelism.
          SURGE = 3
        end

        # The datapath provider selects the implementation of the Kubernetes networking
        # model for service resolution and network policy enforcement.
        module DatapathProvider
          # Default value.
          DATAPATH_PROVIDER_UNSPECIFIED = 0

          # Use the IPTables implementation based on kube-proxy.
          LEGACY_DATAPATH = 1

          # Use the eBPF based GKE Dataplane V2 with additional features. See the [GKE
          # Dataplane V2
          # documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2)
          # for more.
          ADVANCED_DATAPATH = 2
        end

        # Possible values for IP stack type
        module StackType
          # By default, the clusters will be IPV4 only
          STACK_TYPE_UNSPECIFIED = 0

          # The value used if the cluster is a IPV4 only
          IPV4 = 1

          # The value used if the cluster is a dual stack cluster
          IPV4_IPV6 = 2
        end

        # Options for in-transit encryption.
        module InTransitEncryptionConfig
          # Unspecified, will be inferred as default -
          # IN_TRANSIT_ENCRYPTION_UNSPECIFIED.
          IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED = 0

          # In-transit encryption is disabled.
          IN_TRANSIT_ENCRYPTION_DISABLED = 1

          # Data in-transit is encrypted using inter-node transparent encryption.
          IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT = 2
        end
      end
    end
  end
end