@ -1,4 +1,4 @@
/ / Copyright 2021 Google LLC
/ / Copyright 2022 Google LLC
/ /
/ / Licensed under the Apache License , Version 2.0 ( the "License" ) ;
/ / you may not use this file except in compliance with the License.
@ -20,6 +20,7 @@ import "google/api/annotations.proto";
import "google/api/client.proto" ;
import "google/api/field_behavior.proto" ;
import "google/api/resource.proto" ;
import "google/protobuf/duration.proto" ;
import "google/protobuf/empty.proto" ;
import "google/protobuf/timestamp.proto" ;
import "google/protobuf/wrappers.proto" ;
@ -350,6 +351,15 @@ service ClusterManager {
option ( google.api.method_signature ) = "name" ;
}
/ / CompleteNodePoolUpgrade will signal an on - going node pool upgrade to
/ / complete.
rpc CompleteNodePoolUpgrade ( CompleteNodePoolUpgradeRequest ) returns ( google.protobuf.Empty ) {
option ( google.api.http ) = {
post : "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:completeUpgrade"
body : "*"
} ;
}
/ / Rolls back a previously Aborted or Failed NodePool upgrade.
/ / This makes no changes if the last upgrade successfully completed.
rpc RollbackNodePoolUpgrade ( RollbackNodePoolUpgradeRequest ) returns ( Operation ) {
@ -488,6 +498,8 @@ message LinuxNodeConfig {
/ /
/ / 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
@ -533,9 +545,21 @@ message NodeKubeletConfig {
/ / Valid time units are "ns" , "us" ( or "µs" ) , "ms" , "s" , "m" , "h" .
/ / The value must be a positive duration.
string cpu_cfs_quota_period = 3 ;
/ / 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.
int64 pod_pids_limit = 4 ;
}
/ / Parameters that describe the nodes in a cluster.
/ /
/ / GKE Autopilot clusters do not
/ / recognize parameters in ` NodeConfig ` . Use
/ / [ AutoprovisioningNodePoolDefaults ] [ google.container.v1.AutoprovisioningNodePoolDefaults ]
/ / instead.
message NodeConfig {
/ / The name of a Google Compute Engine [ machine
/ / type ] ( https : / / cloud.google.com / compute / docs / machine - types )
@ -577,6 +601,7 @@ message NodeConfig {
/ / 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"
@ -707,6 +732,14 @@ message NodeConfig {
/ / Enable or disable gvnic in the node pool.
VirtualNIC gvnic = 29 ;
/ / Spot flag for enabling Spot VM , which is a rebrand of
/ / the existing preemptible flag.
bool spot = 32 ;
/ / Confidential nodes config.
/ / All the nodes in the node pool will be Confidential VM once enabled.
ConfidentialNodes confidential_nodes = 35 ;
}
/ / Specifies options for controlling advanced machine features.
@ -719,6 +752,21 @@ message AdvancedMachineFeatures {
/ / Parameters for node pool - level network config.
message NodeNetworkConfig {
/ / Configuration of all network bandwidth tiers
message NetworkPerformanceConfig {
/ / Node network tier
enum Tier {
/ / Default value
TIER_UNSPECIFIED = 0 ;
/ / Higher bandwidth , actual values based on VM size.
TIER_1 = 1 ;
}
/ / Specifies the total network bandwidth tier for the NodePool.
optional Tier total_egress_bandwidth_tier = 1 ;
}
/ / 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.
@ -759,6 +807,9 @@ message NodeNetworkConfig {
/ /
/ / This field cannot be changed after the node pool has been created.
string pod_ipv4_cidr_block = 6 ;
/ / Network bandwidth tier configuration.
optional NetworkPerformanceConfig network_performance_config = 11 ;
}
/ / A set of Shielded Instance options.
@ -865,6 +916,27 @@ message NodeTaint {
Effect effect = 3 ;
}
/ / Collection of Kubernetes [ node
/ / taints ] ( https : / / kubernetes.io / docs / concepts / configuration / taint - and - toleration ) .
message NodeTaints {
/ / List of node taints.
repeated NodeTaint taints = 1 ;
}
/ / Collection of node - level [ Kubernetes
/ / labels ] ( https : / / kubernetes.io / docs / concepts / overview / working - with - objects / labels ) .
message NodeLabels {
/ / Map of node label keys and node label values.
map < string , string > labels = 1 ;
}
/ / Collection of Compute Engine network tags that can be applied to a node ' s
/ / underlying VM instance.
message NetworkTags {
/ / List of network tags.
repeated string tags = 1 ;
}
/ / The authentication information for accessing the master endpoint.
/ / Authentication can be done using HTTP basic auth or using client
/ / certificates.
@ -1133,9 +1205,28 @@ message NetworkPolicy {
/ / Configuration for Binary Authorization.
message BinaryAuthorization {
/ / Binary Authorization mode of operation.
enum 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 ;
}
/ / Enable Binary Authorization for this cluster. If enabled , all container
/ / images will be validated by Binary Authorization.
bool enabled = 1 ;
/ / Mode of operation for binauthz policy evaluation. Currently the only
/ / options are equivalent to enable / disable. If unspecified , defaults to
/ / DISABLED.
EvaluationMode evaluation_mode = 2 ;
}
/ / Configuration for controlling how IPs are allocated in the cluster.
@ -1473,9 +1564,13 @@ message Cluster {
/ / Notification configuration of the cluster.
NotificationConfig notification_config = 49 ;
/ / Configuration of Confidential Nodes
/ / Configuration of Confidential Nodes.
/ / All the nodes in the cluster will be Confidential VM once enabled.
ConfidentialNodes confidential_nodes = 50 ;
/ / Configuration for Identity Service component.
IdentityServiceConfig identity_service_config = 54 ;
/ / [ Output only ] Server - defined URL for the resource.
string self_link = 100 ;
@ -1586,6 +1681,20 @@ message Cluster {
/ / Monitoring configuration for the cluster.
MonitoringConfig monitoring_config = 133 ;
/ / Node pool configs that apply to all auto - provisioned node pools
/ / in autopilot clusters and node auto - provisioning enabled clusters.
NodePoolAutoConfig node_pool_auto_config = 136 ;
}
/ / Node pool configs that apply to all auto - provisioned node pools
/ / in autopilot clusters and node auto - provisioning enabled clusters.
message NodePoolAutoConfig {
/ / 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.
NetworkTags network_tags = 1 ;
}
/ / Subset of Nodepool message that has defaults.
@ -1596,7 +1705,7 @@ message NodePoolDefaults {
/ / Subset of NodeConfig message that has defaults.
message NodeConfigDefaults {
/ / GCFS ( Google Container File System , a.k.a Riptide ) options.
/ / GCFS ( Google Container File System , a.k.a. Riptide ) options.
GcfsConfig gcfs_config = 1 ;
}
@ -1736,6 +1845,9 @@ message ClusterUpdate {
/ / The desired monitoring configuration.
MonitoringConfig desired_monitoring_config = 65 ;
/ / The desired Identity Service component configuration.
IdentityServiceConfig desired_identity_service_config = 66 ;
/ / ServiceExternalIPsConfig specifies the config for the use of Services with
/ / ExternalIPs field.
ServiceExternalIPsConfig desired_service_external_ips_config = 60 ;
@ -1754,6 +1866,10 @@ message ClusterUpdate {
/ / The desired GCFS config for the cluster
GcfsConfig desired_gcfs_config = 109 ;
/ / The desired network tags that apply to all auto - provisioned node pools
/ / in autopilot clusters and node auto - provisioning enabled clusters.
NetworkTags desired_node_pool_auto_config_network_tags = 110 ;
}
/ / This operation resource represents operations that may have happened or are
@ -1934,7 +2050,7 @@ message OperationProgress {
/ / CreateClusterRequest creates a cluster.
message CreateClusterRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the parent field.
string project_id = 1 [ deprecated = true ] ;
@ -1956,7 +2072,7 @@ message CreateClusterRequest {
/ / GetClusterRequest gets the settings of a cluster.
message GetClusterRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -1978,7 +2094,7 @@ message GetClusterRequest {
/ / UpdateClusterRequest updates the settings of a cluster.
message UpdateClusterRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2003,7 +2119,7 @@ message UpdateClusterRequest {
/ / UpdateNodePoolRequests update a node pool ' s image and / or version.
message UpdateNodePoolRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2055,15 +2171,37 @@ message UpdateNodePoolRequest {
/ / Upgrade settings control disruption and speed of the upgrade.
NodePool.UpgradeSettings upgrade_settings = 15 ;
/ / 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.
NetworkTags tags = 16 ;
/ / 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.
NodeTaints taints = 17 ;
/ / 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.
NodeLabels labels = 18 ;
/ / Parameters that can be configured on Linux nodes.
LinuxNodeConfig linux_node_config = 19 ;
/ / Node kubelet configs.
NodeKubeletConfig kubelet_config = 20 ;
/ / Node network config.
NodeNetworkConfig node_network_config = 21 ;
/ / GCFS config.
GcfsConfig gcfs_config = 22 ;
/ / Confidential nodes config.
/ / All the nodes in the node pool will be Confidential VM once enabled.
ConfidentialNodes confidential_nodes = 23 ;
/ / Enable or disable gvnic on the node pool.
VirtualNIC gvnic = 29 ;
}
@ -2071,7 +2209,7 @@ message UpdateNodePoolRequest {
/ / SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
message SetNodePoolAutoscalingRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2101,7 +2239,7 @@ message SetNodePoolAutoscalingRequest {
/ / SetLoggingServiceRequest sets the logging service of a cluster.
message SetLoggingServiceRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2136,7 +2274,7 @@ message SetLoggingServiceRequest {
/ / SetMonitoringServiceRequest sets the monitoring service of a cluster.
message SetMonitoringServiceRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2171,7 +2309,7 @@ message SetMonitoringServiceRequest {
/ / SetAddonsConfigRequest sets the addons associated with the cluster.
message SetAddonsConfigRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2197,7 +2335,7 @@ message SetAddonsConfigRequest {
/ / SetLocationsRequest sets the locations of the cluster.
message SetLocationsRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2228,7 +2366,7 @@ message SetLocationsRequest {
/ / UpdateMasterRequest updates the master of the cluster.
message UpdateMasterRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2280,7 +2418,7 @@ message SetMasterAuthRequest {
}
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2308,7 +2446,7 @@ message SetMasterAuthRequest {
/ / DeleteClusterRequest deletes a cluster.
message DeleteClusterRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2330,7 +2468,7 @@ message DeleteClusterRequest {
/ / ListClustersRequest lists clusters.
message ListClustersRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the parent field.
string project_id = 1 [ deprecated = true ] ;
@ -2360,7 +2498,7 @@ message ListClustersResponse {
/ / GetOperationRequest gets a single operation.
message GetOperationRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2382,7 +2520,7 @@ message GetOperationRequest {
/ / ListOperationsRequest lists operations.
message ListOperationsRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the parent field.
string project_id = 1 [ deprecated = true ] ;
@ -2401,7 +2539,7 @@ message ListOperationsRequest {
/ / CancelOperationRequest cancels a single operation.
message CancelOperationRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2433,7 +2571,7 @@ message ListOperationsResponse {
/ / Gets the current Kubernetes Engine service configuration .
message GetServerConfigRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2484,7 +2622,7 @@ message ServerConfig {
/ / CreateNodePoolRequest creates a node pool for a cluster.
message CreateNodePoolRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the parent field.
string project_id = 1 [ deprecated = true ] ;
@ -2501,7 +2639,7 @@ message CreateNodePoolRequest {
/ / Required. The node pool to create.
NodePool node_pool = 4 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / The parent ( project , location , cluster id ) where the node pool will be
/ / The parent ( project , location , cluster name ) where the node pool will be
/ / created. Specified in the format
/ / ` projects /*/locations/*/ clusters / * ` .
string parent = 6 ;
@ -2510,7 +2648,7 @@ message CreateNodePoolRequest {
/ / DeleteNodePoolRequest deletes a node pool for a cluster.
message DeleteNodePoolRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2537,7 +2675,7 @@ message DeleteNodePoolRequest {
/ / ListNodePoolsRequest lists the node pool ( s ) for a cluster.
message ListNodePoolsRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the parent field.
string project_id = 1 [ deprecated = true ] ;
@ -2551,7 +2689,7 @@ message ListNodePoolsRequest {
/ / This field has been deprecated and replaced by the parent field.
string cluster_id = 3 [ deprecated = true ] ;
/ / The parent ( project , location , cluster id ) where the node pools will be
/ / The parent ( project , location , cluster name ) where the node pools will be
/ / listed. Specified in the format ` projects /*/locations/*/ clusters / * ` .
string parent = 5 ;
}
@ -2559,7 +2697,7 @@ message ListNodePoolsRequest {
/ / GetNodePoolRequest retrieves a node pool for a cluster.
message GetNodePoolRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2583,6 +2721,35 @@ message GetNodePoolRequest {
string name = 6 ;
}
/ / Settings for blue - green upgrade.
message BlueGreenSettings {
/ / Standard rollout policy is the default policy for blue - green.
message StandardRolloutPolicy {
/ / Blue pool size to drain in a batch.
oneof update_batch_size {
/ / Percentage of the bool pool nodes to drain in a batch.
/ / The range of this field should be ( 0.0 , 1.0 ] .
float batch_percentage = 1 ;
/ / Number of blue nodes to drain in a batch.
int32 batch_node_count = 2 ;
}
/ / Soak time after each batch gets drained. Default to zero.
optional google.protobuf.Duration batch_soak_duration = 3 ;
}
/ / The rollout policy controls the general rollout progress of blue - green.
oneof rollout_policy {
/ / Standard policy for the blue - green upgrade.
StandardRolloutPolicy standard_rollout_policy = 1 ;
}
/ / Time needed after draining entire blue pool. After this period , blue pool
/ / will be cleaned up.
optional google.protobuf.Duration node_pool_soak_duration = 2 ;
}
/ / 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
@ -2613,6 +2780,29 @@ message NodePool {
/ / simultaneously. It creates 2 additional ( upgraded ) nodes , then it brings
/ / down 3 old ( not yet upgraded ) nodes at the same time. This ensures that
/ / there are always at least 4 nodes available.
/ /
/ / These upgrade settings configure the upgrade strategy for the node pool.
/ / Use strategy to switch between the strategies applied to the node pool.
/ /
/ / If the strategy is ROLLING , use max_surge and max_unavailable to control
/ / the level of parallelism and the level of disruption caused by upgrade.
/ / 1. maxSurge controls the number of additional nodes that can be added to
/ / the node pool temporarily for the time of the upgrade to increase the
/ / number of available nodes.
/ / 2. maxUnavailable controls the number of nodes that can be simultaneously
/ / unavailable.
/ / 3. ( maxUnavailable + maxSurge ) determines the level of parallelism ( how
/ / many nodes are being upgraded at the same time ) .
/ /
/ / If the strategy is BLUE_GREEN , use blue_green_settings to configure the
/ / blue - green upgrade related settings.
/ / 1. standard_rollout_policy is the default policy. The policy is used to
/ / control the way blue pool gets drained. The draining is executed in the
/ / batch mode. The batch size could be specified as either percentage of the
/ / node pool size or the number of nodes. batch_soak_duration is the soak
/ / time after each batch gets drained.
/ / 2. node_pool_soak_duration is the soak time after all blue nodes are
/ / drained. After this period , the blue pool nodes will be deleted.
message UpgradeSettings {
/ / The maximum number of nodes that can be created beyond the current size
/ / of the node pool during the upgrade process.
@ -2622,6 +2812,69 @@ message NodePool {
/ / the upgrade process. A node is considered available if its status is
/ / Ready.
int32 max_unavailable = 2 ;
/ / Update strategy of the node pool.
optional NodePoolUpdateStrategy strategy = 3 ;
/ / Settings for blue - green upgrade strategy.
optional BlueGreenSettings blue_green_settings = 4 ;
}
/ / UpdateInfo contains resource ( instance groups , etc ) , status and other
/ / intermediate information relevant to a node pool upgrade.
message UpdateInfo {
/ / Information relevant to blue - green upgrade.
message BlueGreenInfo {
/ / Phase represents the different stages blue - green upgrade is running in.
enum 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 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 ;
}
/ / Current blue - green upgrade phase.
Phase phase = 1 ;
/ / The resource URLs of the [ managed instance groups ]
/ / ( / compute / docs / instance - groups / creating - groups - of - managed - instances )
/ / associated with blue pool.
repeated string blue_instance_group_urls = 2 ;
/ / The resource URLs of the [ managed instance groups ]
/ / ( / compute / docs / instance - groups / creating - groups - of - managed - instances )
/ / associated with green pool.
repeated string green_instance_group_urls = 3 ;
/ / Time to start deleting blue pool to complete blue - green upgrade ,
/ / in [ RFC3339 ] ( https : / / www.ietf.org / rfc / rfc3339.txt ) text format.
string blue_pool_deletion_start_time = 4 ;
/ / Version of green pool.
string green_pool_version = 5 ;
}
/ / Information of a blue - green upgrade.
BlueGreenInfo blue_green_info = 1 ;
}
/ / The current status of the node pool instance.
@ -2692,6 +2945,8 @@ message NodePool {
/ / [ 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.
repeated string instance_group_urls = 102 ;
/ / [ Output only ] The status of the nodes in this pool instance.
@ -2721,6 +2976,10 @@ message NodePool {
/ / Upgrade settings control disruption and speed of the upgrade.
UpgradeSettings upgrade_settings = 107 ;
/ / Output only. [ Output only ] Update info contains relevant information during a node
/ / pool update.
UpdateInfo update_info = 109 [ ( google.api.field_behavior ) = OUTPUT_ONLY ] ;
}
/ / NodeManagement defines the set of node management services turned on for the
@ -2882,7 +3141,7 @@ message DailyMaintenanceWindow {
/ / pool.
message SetNodePoolManagementRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2912,7 +3171,7 @@ message SetNodePoolManagementRequest {
/ / SetNodePoolSizeRequest sets the size of a node pool.
message SetNodePoolSizeRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2939,12 +3198,21 @@ message SetNodePoolSizeRequest {
string name = 7 ;
}
/ / CompleteNodePoolUpgradeRequest sets the name of target node pool to complete
/ / upgrade.
message CompleteNodePoolUpgradeRequest {
/ / The name ( project , location , cluster , node pool id ) of the node pool to
/ / complete upgrade.
/ / Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*' .
string name = 1 ;
}
/ / RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
/ / NodePool upgrade. This will be an no - op if the last upgrade successfully
/ / completed.
message RollbackNodePoolUpgradeRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -2966,6 +3234,10 @@ message RollbackNodePoolUpgradeRequest {
/ / rollback upgrade.
/ / Specified in the format ` projects /*/locations/*/ clusters / * / nodePools / * ` .
string name = 6 ;
/ / Option for rollback to ignore the PodDisruptionBudget.
/ / Default value is false .
bool respect_pdb = 7 ;
}
/ / ListNodePoolsResponse is the result of ListNodePoolsRequest.
@ -3026,16 +3298,18 @@ message AutoprovisioningNodePoolDefaults {
/ / Specifies the node management options for NAP created node - pools.
NodeManagement management = 4 ;
/ / Minimum CPU platform to be used for NAP created node pools.
/ / 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.
string min_cpu_platform = 5 ;
string min_cpu_platform = 5 [ deprecated = true ] ;
/ / Size of the disk attached to each node , specified in GB.
/ / The smallest allowed disk size is 10 GB.
@ -3080,6 +3354,20 @@ message ResourceLimit {
/ / NodePoolAutoscaling contains information required by cluster autoscaler to
/ / adjust the size of the node pool to the current cluster usage.
message NodePoolAutoscaling {
/ / Location policy specifies how zones are picked when scaling up the
/ / nodepool.
enum 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 ;
}
/ / Is autoscaling enabled for this node pool.
bool enabled = 1 ;
@ -3093,6 +3381,21 @@ message NodePoolAutoscaling {
/ / Can this node pool be deleted automatically.
bool autoprovisioned = 4 ;
/ / Location policy used when scaling up a nodepool.
LocationPolicy location_policy = 5 ;
/ / 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.
int32 total_min_node_count = 6 ;
/ / 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.
int32 total_max_node_count = 7 ;
}
/ / SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
@ -3100,7 +3403,7 @@ message NodePoolAutoscaling {
/ / resources used by that cluster
message SetLabelsRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -3125,7 +3428,7 @@ message SetLabelsRequest {
/ / resource to get the latest fingerprint.
string label_fingerprint = 5 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / The name ( project , location , cluster id ) of the cluster to set labels.
/ / The name ( project , location , cluster name ) of the cluster to set labels.
/ / Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 7 ;
}
@ -3134,7 +3437,7 @@ message SetLabelsRequest {
/ / a cluster.
message SetLegacyAbacRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -3151,8 +3454,8 @@ message SetLegacyAbacRequest {
/ / Required. Whether ABAC authorization will be enabled in the cluster.
bool enabled = 4 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / The name ( project , location , cluster id ) of the cluster to set legacy abac.
/ / Specified in the format ` projects /*/locations/*/ clusters / * ` .
/ / The name ( project , location , cluster name ) of the cluster to set legacy
/ / abac. Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 6 ;
}
@ -3160,7 +3463,7 @@ message SetLegacyAbacRequest {
/ / a node upgrade on each node pool to point to the new IP.
message StartIPRotationRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -3174,7 +3477,7 @@ message StartIPRotationRequest {
/ / This field has been deprecated and replaced by the name field.
string cluster_id = 3 [ deprecated = true ] ;
/ / The name ( project , location , cluster id ) of the cluster to start IP
/ / The name ( project , location , cluster name ) of the cluster to start IP
/ / rotation. Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 6 ;
@ -3185,7 +3488,7 @@ message StartIPRotationRequest {
/ / CompleteIPRotationRequest moves the cluster master back into single - IP mode.
message CompleteIPRotationRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -3199,7 +3502,7 @@ message CompleteIPRotationRequest {
/ / This field has been deprecated and replaced by the name field.
string cluster_id = 3 [ deprecated = true ] ;
/ / The name ( project , location , cluster id ) of the cluster to complete IP
/ / The name ( project , location , cluster name ) of the cluster to complete IP
/ / rotation. Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 7 ;
}
@ -3217,6 +3520,28 @@ message AcceleratorConfig {
/ / NVIDIA [ mig user
/ / guide ] ( https : / / docs.nvidia.com / datacenter / tesla / mig - user - guide / # partitioning ) .
string gpu_partition_size = 3 ;
/ / The configuration for GPU sharing options.
optional GPUSharingConfig gpu_sharing_config = 5 ;
}
/ / GPUSharingConfig represents the GPU sharing configuration for Hardware
/ / Accelerators.
message GPUSharingConfig {
/ / The type of GPU sharing strategy currently provided.
enum GPUSharingStrategy {
/ / Default value.
GPU_SHARING_STRATEGY_UNSPECIFIED = 0 ;
/ / GPUs are time - shared between containers.
TIME_SHARING = 1 ;
}
/ / The max number of containers that can share a physical GPU.
int64 max_shared_clients_per_gpu = 1 ;
/ / The type of GPU sharing strategy to enable on the GPU node.
optional GPUSharingStrategy gpu_sharing_strategy = 2 ;
}
/ / WorkloadMetadataConfig defines the metadata configuration to expose to
@ -3247,7 +3572,7 @@ message WorkloadMetadataConfig {
/ / SetNetworkPolicyRequest enables / disables network policy for a cluster.
message SetNetworkPolicyRequest {
/ / Deprecated. The Google Developers Console [ project ID or project
/ / number ] ( https : / / developers.google.com / console / help / new / # projectnumber ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
/ / This field has been deprecated and replaced by the name field.
string project_id = 1 [ deprecated = true ] ;
@ -3264,7 +3589,7 @@ message SetNetworkPolicyRequest {
/ / Required. Configuration options for the NetworkPolicy feature.
NetworkPolicy network_policy = 4 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / The name ( project , location , cluster id ) of the cluster to set networking
/ / The name ( project , location , cluster name ) of the cluster to set networking
/ / policy. Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 6 ;
}
@ -3272,7 +3597,7 @@ message SetNetworkPolicyRequest {
/ / SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
message SetMaintenancePolicyRequest {
/ / Required. The Google Developers Console [ project ID or project
/ / number ] ( https : / / support.google.com / cloud / answer / 6158840 ) .
/ / number ] ( https : / / cloud.google.com / resource - manager / docs / creating - managing - projects ) .
string project_id = 1 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / Required. The name of the Google Compute Engine
@ -3287,8 +3612,8 @@ message SetMaintenancePolicyRequest {
/ / clears the existing maintenance policy.
MaintenancePolicy maintenance_policy = 4 [ ( google.api.field_behavior ) = REQUIRED ] ;
/ / The name ( project , location , cluster id ) of the cluster to set maintenance
/ / policy.
/ / The name ( project , location , cluster name ) of the cluster to set
/ / maintenance policy.
/ / Specified in the format ` projects /*/locations/*/ clusters / * ` .
string name = 5 ;
}
@ -3422,7 +3747,7 @@ message GetOpenIDConfigResponse {
/ / document returned by getOpenIDConfig. See the OpenID Connect
/ / Discovery 1.0 specification for details.
message GetJSONWebKeysRequest {
/ / The cluster ( project , location , cluster id ) to get keys for. Specified in
/ / The cluster ( project , location , cluster name ) to get keys for. Specified in
/ / the format ` projects /*/locations/*/ clusters / * ` .
string parent = 1 ;
}
@ -3558,6 +3883,13 @@ message WorkloadIdentityConfig {
string workload_pool = 2 ;
}
/ / IdentityServiceConfig is configuration for Identity Service which allows
/ / customers to use external identity providers with the K8S API
message IdentityServiceConfig {
/ / Whether to enable the Identity Service component
bool enabled = 1 ;
}
/ / Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
message MeshCertificates {
/ / enable_certificates controls issuance of workload mTLS certificates.
@ -3761,22 +4093,6 @@ enum PrivateIPv6GoogleAccess {
PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL = 3 ;
}
/ / The datapath provider selects the implementation of the Kubernetes networking
/ / model for service resolution and network policy enforcement.
enum 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 ;
}
/ / NotificationConfig is the configuration of notifications.
message NotificationConfig {
/ / Types of notifications currently supported. Can be used to filter what
@ -3828,8 +4144,7 @@ message NotificationConfig {
/ / ConfidentialNodes is configuration for the confidential nodes feature , which
/ / makes nodes run on confidential VMs.
message ConfidentialNodes {
/ / Whether Confidential Nodes feature is enabled for all nodes in this
/ / cluster.
/ / Whether Confidential Nodes feature is enabled.
bool enabled = 1 ;
}
@ -3963,6 +4278,10 @@ message LoggingComponentConfig {
message MonitoringConfig {
/ / Monitoring components configuration
MonitoringComponentConfig component_config = 1 ;
/ / Enable Google Cloud Managed Service for Prometheus
/ / in the cluster.
ManagedPrometheusConfig managed_prometheus_config = 2 ;
}
/ / MonitoringComponentConfig is cluster monitoring component configuration.
@ -3974,9 +4293,54 @@ message MonitoringComponentConfig {
/ / system components
SYSTEM_COMPONENTS = 1 ;
/ / kube - apiserver
APISERVER = 3 ;
/ / kube - scheduler
SCHEDULER = 4 ;
/ / kube - controller - manager
CONTROLLER_MANAGER = 5 ;
}
/ / Select components to collect metrics. An empty set would disable all
/ / monitoring.
repeated Component enable_components = 1 ;
}
/ / The datapath provider selects the implementation of the Kubernetes networking
/ / model for service resolution and network policy enforcement.
enum 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 ;
}
/ / Strategy used for node pool update.
enum NodePoolUpdateStrategy {
/ / Default value.
NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED = 0 ;
/ / blue - green upgrade.
BLUE_GREEN = 2 ;
/ / SURGE is the traditional way of upgrade a node pool.
/ / max_surge and max_unavailable determines the level of upgrade parallelism.
SURGE = 3 ;
}
/ / ManagedPrometheusConfig defines the configuration for
/ / Google Cloud Managed Service for Prometheus.
message ManagedPrometheusConfig {
/ / Enable Managed Collection.
bool enabled = 1 ;
}