googleapis/google/container/v1/cluster_service.proto
Google APIs 928703e038 feat: Add SwapConfig to enable and configure swap memory for node pools
feat: Add GPUDirectConfig to configure GPU Direct for node pools
feat: Add consolidation_delay to configure Cluster Autoscaler node consolidation delay
feat: Add RegistryHostConfig to ContainerdConfig for containerd registry host configuration
feat: Add SliceControllerConfig to AddonsConfig to manage the Slice Controller addon
feat: Add ManagedOpenTelemetryConfig to Cluster to manage the OpenTelemetry pipeline
feat: Add NodeDrainConfig to NodePool to configure node draining behavior
feat: Add AutopilotGeneralProfile to ClusterAutoscaling to configure Autopilot profiles
feat: Add SHORT_LIVED as a NodePoolUpdateStrategy
feat: Add DRAINING status to AdditionalIPRangesConfig for subnet draining
feat: Allow specifying subnetwork in NodeNetworkConfig during node pool creation
feat: Add DisruptionEvent to provide details on node disruption events
docs: A comment for field `sysctls` in message `.google.container.v1.LinuxNodeConfig` is changed
docs: A comment for field `subnetwork` in message `.google.container.v1.NodeNetworkConfig` is changed
docs: A comment for field `gcp_secret_manager_certificate_config` in message `.google.container.v1.ContainerdConfig` is changed
docs: A comment for field `cluster_ipv4_cidr_block` in message `.google.container.v1.IPAllocationPolicy` is changed
docs: A comment for field `node_ipv4_cidr_block` in message `.google.container.v1.IPAllocationPolicy` is changed
docs: A comment for field `services_ipv4_cidr_block` in message `.google.container.v1.IPAllocationPolicy` is changed
docs: A comment for field `tpu_ipv4_cidr_block` in message `.google.container.v1.IPAllocationPolicy` is changed
docs: A comment for field `cluster_ipv4_cidr` in message `.google.container.v1.Cluster` is changed
docs: A comment for field `services_ipv4_cidr` in message `.google.container.v1.Cluster` is changed
docs: A comment for field `tpu_ipv4_cidr_block` in message `.google.container.v1.Cluster` is changed
docs: A comment for field `recurrence` in message `.google.container.v1.RecurringTimeWindow` is changed

PiperOrigin-RevId: 859731311
2026-01-22 12:43:56 -08:00

7669 lines
289 KiB
Protocol Buffer

// Copyright 2026 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
//
// http://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.
syntax = "proto3";
package google.container.v1;
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";
import "google/rpc/code.proto";
import "google/rpc/status.proto";
option csharp_namespace = "Google.Cloud.Container.V1";
option go_package = "cloud.google.com/go/container/apiv1/containerpb;containerpb";
option java_multiple_files = true;
option java_outer_classname = "ClusterServiceProto";
option java_package = "com.google.container.v1";
option php_namespace = "Google\\Cloud\\Container\\V1";
option ruby_package = "Google::Cloud::Container::V1";
option (google.api.resource_definition) = {
type: "pubsub.googleapis.com/Topic"
pattern: "projects/{project}/topics/{topic}"
};
option (google.api.resource_definition) = {
type: "privateca.googleapis.com/CaPool"
pattern: "projects/{project}/locations/{location}/caPools/{ca_pool}"
};
option (google.api.resource_definition) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
pattern: "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}"
};
option (google.api.resource_definition) = {
type: "compute.googleapis.com/Subnetwork"
pattern: "projects/{project}/regions/{region}/subnetworks/{subnetwork}"
};
// Google Kubernetes Engine Cluster Manager v1
service ClusterManager {
option (google.api.default_host) = "container.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform";
// Lists all clusters owned by a project in either the specified zone or all
// zones.
rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*}/clusters"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/clusters"
}
};
option (google.api.method_signature) = "project_id,zone";
option (google.api.method_signature) = "parent";
}
// Gets the details of a specific cluster.
rpc GetCluster(GetClusterRequest) returns (Cluster) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/clusters/*}"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id";
option (google.api.method_signature) = "name";
}
// Creates a cluster, consisting of the specified number and type of Google
// Compute Engine instances.
//
// By default, the cluster is created in the project's
// [default
// network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks).
//
// One firewall is added for the cluster. After cluster creation,
// the kubelet creates routes for each node to allow the containers
// on that node to communicate with all other instances in the
// cluster.
//
// Finally, an entry is added to the project's global metadata indicating
// which CIDR range the cluster is using.
rpc CreateCluster(CreateClusterRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*}/clusters"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,cluster";
option (google.api.method_signature) = "parent,cluster";
}
// Updates the settings of a specific cluster.
rpc UpdateCluster(UpdateClusterRequest) returns (Operation) {
option (google.api.http) = {
put: "/v1/{name=projects/*/locations/*/clusters/*}"
body: "*"
additional_bindings {
put: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id,update";
option (google.api.method_signature) = "name,update";
}
// Updates the version and/or image type for the specified node pool.
rpc UpdateNodePool(UpdateNodePoolRequest) returns (Operation) {
option (google.api.http) = {
put: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/update"
body: "*"
}
};
}
// Sets the autoscaling settings for the specified node pool.
rpc SetNodePoolAutoscaling(SetNodePoolAutoscalingRequest)
returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setAutoscaling"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/autoscaling"
body: "*"
}
};
}
// Sets the logging service for a specific cluster.
rpc SetLoggingService(SetLoggingServiceRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setLogging"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/logging"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,logging_service";
option (google.api.method_signature) = "name,logging_service";
}
// Sets the monitoring service for a specific cluster.
rpc SetMonitoringService(SetMonitoringServiceRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setMonitoring"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/monitoring"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,monitoring_service";
option (google.api.method_signature) = "name,monitoring_service";
}
// Sets the addons for a specific cluster.
rpc SetAddonsConfig(SetAddonsConfigRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setAddons"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/addons"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,addons_config";
option (google.api.method_signature) = "name,addons_config";
}
// Sets the locations for a specific cluster.
// Deprecated. Use
// [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update)
// instead.
rpc SetLocations(SetLocationsRequest) returns (Operation) {
option deprecated = true;
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setLocations"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/locations"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,locations";
option (google.api.method_signature) = "name,locations";
}
// Updates the master for a specific cluster.
rpc UpdateMaster(UpdateMasterRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:updateMaster"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/master"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,master_version";
option (google.api.method_signature) = "name,master_version";
}
// Sets master auth materials. Currently supports changing the admin password
// or a specific cluster, either via password generation or explicitly setting
// the password.
rpc SetMasterAuth(SetMasterAuthRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setMasterAuth"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setMasterAuth"
body: "*"
}
};
}
// Deletes the cluster, including the Kubernetes endpoint and all worker
// nodes.
//
// Firewalls and routes that were configured during cluster creation
// are also deleted.
//
// Other Google Compute Engine resources that might be in use by the cluster,
// such as load balancer resources, are not deleted if they weren't present
// when the cluster was initially created.
rpc DeleteCluster(DeleteClusterRequest) returns (Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/clusters/*}"
additional_bindings {
delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id";
option (google.api.method_signature) = "name";
}
// Lists all operations in a project in a specific zone or all zones.
rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*}/operations"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/operations"
}
};
option (google.api.method_signature) = "project_id,zone";
option (google.api.method_signature) = "parent";
}
// Gets the specified operation.
rpc GetOperation(GetOperationRequest) returns (Operation) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/operations/*}"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}"
}
};
option (google.api.method_signature) = "project_id,zone,operation_id";
option (google.api.method_signature) = "name";
}
// Cancels the specified operation.
rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/operations/*}:cancel"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}:cancel"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,operation_id";
option (google.api.method_signature) = "name";
}
// Returns configuration info about the Google Kubernetes Engine service.
rpc GetServerConfig(GetServerConfigRequest) returns (ServerConfig) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*}/serverConfig"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/serverconfig"
}
};
option (google.api.method_signature) = "project_id,zone";
option (google.api.method_signature) = "name";
}
// Gets the public component of the cluster signing keys in
// JSON Web Key format.
rpc GetJSONWebKeys(GetJSONWebKeysRequest) returns (GetJSONWebKeysResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/clusters/*}/jwks"
};
}
// Lists the node pools for a cluster.
rpc ListNodePools(ListNodePoolsRequest) returns (ListNodePoolsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/clusters/*}/nodePools"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id";
option (google.api.method_signature) = "parent";
}
// Retrieves the requested node pool.
rpc GetNodePool(GetNodePoolRequest) returns (NodePool) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
additional_bindings {
get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,node_pool_id";
option (google.api.method_signature) = "name";
}
// Creates a node pool for a cluster.
rpc CreateNodePool(CreateNodePoolRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/clusters/*}/nodePools"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,node_pool";
option (google.api.method_signature) = "parent,node_pool";
}
// Deletes a node pool from a cluster.
rpc DeleteNodePool(DeleteNodePoolRequest) returns (Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}"
additional_bindings {
delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,node_pool_id";
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) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:rollback"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}:rollback"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,node_pool_id";
option (google.api.method_signature) = "name";
}
// Sets the NodeManagement options for a node pool.
rpc SetNodePoolManagement(SetNodePoolManagementRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setManagement"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/setManagement"
body: "*"
}
};
}
// Sets labels on a cluster.
rpc SetLabels(SetLabelsRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setResourceLabels"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/resourceLabels"
body: "*"
}
};
}
// Enables or disables the ABAC authorization mechanism on a cluster.
rpc SetLegacyAbac(SetLegacyAbacRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setLegacyAbac"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/legacyAbac"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id,enabled";
option (google.api.method_signature) = "name,enabled";
}
// Starts master IP rotation.
rpc StartIPRotation(StartIPRotationRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:startIpRotation"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:startIpRotation"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id";
option (google.api.method_signature) = "name";
}
// Completes master IP rotation.
rpc CompleteIPRotation(CompleteIPRotationRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:completeIpRotation"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:completeIpRotation"
body: "*"
}
};
option (google.api.method_signature) = "project_id,zone,cluster_id";
option (google.api.method_signature) = "name";
}
// Sets the size for a specific node pool. The new size will be used for all
// replicas, including future replicas created by modifying
// [NodePool.locations][google.container.v1.NodePool.locations].
rpc SetNodePoolSize(SetNodePoolSizeRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setSize"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/setSize"
body: "*"
}
};
}
// Enables or disables Network Policy for a cluster.
rpc SetNetworkPolicy(SetNetworkPolicyRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setNetworkPolicy"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setNetworkPolicy"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,network_policy";
option (google.api.method_signature) = "name,network_policy";
}
// Sets the maintenance policy for a cluster.
rpc SetMaintenancePolicy(SetMaintenancePolicyRequest) returns (Operation) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/clusters/*}:setMaintenancePolicy"
body: "*"
additional_bindings {
post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}:setMaintenancePolicy"
body: "*"
}
};
option (google.api.method_signature) =
"project_id,zone,cluster_id,maintenance_policy";
option (google.api.method_signature) = "name,maintenance_policy";
}
// Lists subnetworks that are usable for creating clusters in a project.
rpc ListUsableSubnetworks(ListUsableSubnetworksRequest)
returns (ListUsableSubnetworksResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*}/aggregated/usableSubnetworks"
};
}
// Checks the cluster compatibility with Autopilot mode, and returns a list of
// compatibility issues.
rpc CheckAutopilotCompatibility(CheckAutopilotCompatibilityRequest)
returns (CheckAutopilotCompatibilityResponse) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/clusters/*}:checkAutopilotCompatibility"
};
}
// Fetch upgrade information of a specific cluster.
rpc FetchClusterUpgradeInfo(FetchClusterUpgradeInfoRequest)
returns (ClusterUpgradeInfo) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/clusters/*}:fetchClusterUpgradeInfo"
additional_bindings {
get: "/v1/{name=projects/*/zones/*/clusters/*}:fetchClusterUpgradeInfo"
}
};
option (google.api.method_signature) = "name";
}
// Fetch upgrade information of a specific nodepool.
rpc FetchNodePoolUpgradeInfo(FetchNodePoolUpgradeInfoRequest)
returns (NodePoolUpgradeInfo) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/clusters/*/nodePools/*}:fetchNodePoolUpgradeInfo"
additional_bindings {
get: "/v1/{name=projects/*/zones/*/clusters/*/nodePools/*}:fetchNodePoolUpgradeInfo"
}
};
option (google.api.method_signature) = "name";
}
}
// Parameters that can be configured on Linux nodes.
message LinuxNodeConfig {
// Possible cgroup modes that can be used.
enum 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;
}
// Hugepages amount in both 2m and 1g size
message HugepagesConfig {
// Optional. Amount of 2M hugepages
optional int32 hugepage_size2m = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of 1G hugepages
optional int32 hugepage_size1g = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Possible values for transparent hugepage enabled support.
enum TransparentHugepageEnabled {
// Default value. GKE will not modify the kernel configuration.
TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED = 0;
// Transparent hugepage support for anonymous memory is enabled system wide.
TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS = 1;
// Transparent hugepage support for anonymous memory is enabled inside
// MADV_HUGEPAGE regions. This is the default kernel configuration.
TRANSPARENT_HUGEPAGE_ENABLED_MADVISE = 2;
// Transparent hugepage support for anonymous memory is disabled.
TRANSPARENT_HUGEPAGE_ENABLED_NEVER = 3;
}
// Possible values for transparent hugepage defrag support.
enum TransparentHugepageDefrag {
// Default value. GKE will not modify the kernel configuration.
TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED = 0;
// It means that an application requesting THP will stall on allocation
// failure and directly reclaim pages and compact memory in an effort to
// allocate a THP immediately.
TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS = 1;
// It means that an application will wake kswapd in the background to
// reclaim pages and wake kcompactd to compact memory so that THP is
// available in the near future. It's the responsibility of khugepaged to
// then install the THP pages later.
TRANSPARENT_HUGEPAGE_DEFRAG_DEFER = 2;
// It means that an application will enter direct reclaim and compaction
// like always, but only for regions that have used madvise(MADV_HUGEPAGE);
// all other regions will wake kswapd in the background to reclaim pages and
// wake kcompactd to compact memory so that THP is available in the near
// future.
TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE = 3;
// It means that an application will enter direct reclaim like always but
// only for regions that are have used madvise(MADV_HUGEPAGE). This is the
// default kernel configuration.
TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE = 4;
// It means that an application will never enter direct reclaim or
// compaction.
TRANSPARENT_HUGEPAGE_DEFRAG_NEVER = 5;
}
// Configuration for swap memory on a node pool.
message SwapConfig {
// Defines encryption settings for the swap space.
message EncryptionConfig {
// Optional. If true, swap space will not be encrypted.
// Defaults to false (encrypted).
optional bool disabled = 1 [(google.api.field_behavior) = OPTIONAL];
}
// Swap on the node's boot disk.
message BootDiskProfile {
// Optional. Specifies the size of the swap space. If omitted, GKE
// determines an optimal size based on node memory.
oneof swap_size {
// Specifies the size of the swap space in gibibytes (GiB).
int64 swap_size_gib = 1;
// Specifies the size of the swap space as a percentage of the boot disk
// size.
int32 swap_size_percent = 2;
}
}
// Swap on the local SSD shared with pod ephemeral storage.
message EphemeralLocalSsdProfile {
// Specifies the size of the swap space to be provisioned.
oneof swap_size {
// Specifies the size of the swap space in gibibytes (GiB).
int64 swap_size_gib = 1;
// Specifies the size of the swap space as a percentage of the ephemeral
// local SSD capacity.
int32 swap_size_percent = 2;
}
}
// Provisions a new, separate local NVMe SSD exclusively for swap.
message DedicatedLocalSsdProfile {
// The number of physical local NVMe SSD disks to attach.
int64 disk_count = 1;
}
// Optional. Enables or disables swap for the node pool.
optional bool enabled = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. If omitted, swap space is encrypted by default.
optional EncryptionConfig encryption_config = 2
[(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the backing storage for the swap space.
// If omitted, defaults to the 'boot_disk_profile'.
oneof performance_profile {
// Swap on the node's boot disk.
BootDiskProfile boot_disk_profile = 3;
// Swap on the local SSD shared with pod ephemeral storage.
EphemeralLocalSsdProfile ephemeral_local_ssd_profile = 4;
// Provisions a new, separate local NVMe SSD exclusively for swap.
DedicatedLocalSsdProfile dedicated_local_ssd_profile = 5;
}
}
// Configuration for kernel module loading on nodes.
message NodeKernelModuleLoading {
// Defines the kernel module loading policy for nodes in the nodepool.
enum Policy {
// Default behavior. GKE selects the image based on node type.
// For CPU and TPU nodes, the image will not allow loading external
// kernel modules.
// For GPU nodes, the image will allow loading any module, whether it
// is signed or not.
POLICY_UNSPECIFIED = 0;
// Enforced signature verification: Node pools will use a
// Container-Optimized OS image configured to allow loading of
// *Google-signed* external kernel modules.
// Loadpin is enabled but configured to exclude modules, and kernel
// module signature checking is enforced.
ENFORCE_SIGNED_MODULES = 1;
// Mirrors existing DEFAULT behavior:
// For CPU and TPU nodes, the image will not allow loading external
// kernel modules.
// For GPU nodes, the image will allow loading any module, whether it
// is signed or not.
DO_NOT_ENFORCE_SIGNED_MODULES = 2;
}
// Set the node module loading policy for nodes in the node pool.
Policy policy = 1;
}
// 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.rmem_default
// 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
// net.ipv4.tcp_mtu_probing
// net.ipv4.tcp_max_orphans
// net.ipv4.tcp_max_tw_buckets
// net.ipv4.tcp_syn_retries
// net.ipv4.tcp_ecn
// net.ipv4.tcp_congestion_control
// net.netfilter.nf_conntrack_max
// net.netfilter.nf_conntrack_buckets
// net.netfilter.nf_conntrack_tcp_timeout_close_wait
// net.netfilter.nf_conntrack_tcp_timeout_time_wait
// net.netfilter.nf_conntrack_tcp_timeout_established
// net.netfilter.nf_conntrack_acct
// kernel.shmmni
// kernel.shmmax
// kernel.shmall
// kernel.perf_event_paranoid
// kernel.sched_rt_runtime_us
// kernel.softlockup_panic
// kernel.yama.ptrace_scope
// kernel.kptr_restrict
// kernel.dmesg_restrict
// kernel.sysrq
// fs.aio-max-nr
// fs.file-max
// fs.inotify.max_user_instances
// fs.inotify.max_user_watches
// fs.nr_open
// vm.dirty_background_ratio
// vm.dirty_background_bytes
// vm.dirty_expire_centisecs
// vm.dirty_ratio
// vm.dirty_bytes
// vm.dirty_writeback_centisecs
// vm.max_map_count
// vm.overcommit_memory
// vm.overcommit_ratio
// vm.vfs_cache_pressure
// vm.swappiness
// vm.watermark_scale_factor
// vm.min_free_kbytes
map<string, string> sysctls = 1;
// cgroup_mode specifies the cgroup mode to be used on the node.
CgroupMode cgroup_mode = 2;
// Optional. Amounts for 2M and 1G hugepages
optional HugepagesConfig hugepages = 3
[(google.api.field_behavior) = OPTIONAL];
// Optional. Transparent hugepage support for anonymous memory can be entirely
// disabled (mostly for debugging purposes) or only enabled inside
// MADV_HUGEPAGE regions (to avoid the risk of consuming more memory
// resources) or enabled system wide.
//
// See https://docs.kernel.org/admin-guide/mm/transhuge.html
// for more details.
TransparentHugepageEnabled transparent_hugepage_enabled = 4
[(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the transparent hugepage defrag configuration on the
// node. VM hugepage allocation can be managed by either limiting
// defragmentation for delayed allocation or skipping it entirely for
// immediate allocation only.
//
// See https://docs.kernel.org/admin-guide/mm/transhuge.html
// for more details.
TransparentHugepageDefrag transparent_hugepage_defrag = 5
[(google.api.field_behavior) = OPTIONAL];
// Optional. Enables and configures swap space on nodes.
// If omitted, swap is disabled.
optional SwapConfig swap_config = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. Configuration for kernel module loading on nodes.
// When enabled, the node pool will be provisioned with a Container-Optimized
// OS image that enforces kernel module signature verification.
NodeKernelModuleLoading node_kernel_module_loading = 13
[(google.api.field_behavior) = OPTIONAL];
}
// 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.
message WindowsNodeConfig {
// Possible OS version that can be used.
enum 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;
}
// OSVersion specifies the Windows node config to be used on the node.
OSVersion os_version = 1;
}
// Node kubelet configs.
message NodeKubeletConfig {
// 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.
string cpu_manager_policy = 1;
// Optional. Controls Topology Manager configuration on the node.
// For more information, see:
// https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/
TopologyManager topology_manager = 8 [(google.api.field_behavior) = OPTIONAL];
// Optional. Controls NUMA-aware Memory Manager configuration on the
// node. For more information, see:
// https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/
MemoryManager memory_manager = 9 [(google.api.field_behavior) = OPTIONAL];
// 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.
google.protobuf.BoolValue cpu_cfs_quota = 2;
// 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 between 1ms and 1 second, inclusive.
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;
// Enable or disable Kubelet read only port.
optional bool insecure_kubelet_readonly_port_enabled = 7;
// Optional. Defines the percent of disk usage before which image garbage
// collection is never run. Lowest disk usage to garbage collect to. The
// percent is calculated as this field value out of 100.
//
// The value must be between 10 and 85, inclusive and smaller than
// image_gc_high_threshold_percent.
//
// The default value is 80 if unspecified.
int32 image_gc_low_threshold_percent = 10
[(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the percent of disk usage after which image garbage
// collection is always run. The percent is calculated as this field value out
// of 100.
//
// The value must be between 10 and 85, inclusive and greater than
// image_gc_low_threshold_percent.
//
// The default value is 85 if unspecified.
int32 image_gc_high_threshold_percent = 11
[(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the minimum age for an unused image before it is garbage
// collected.
//
// The string must be a sequence of decimal numbers, each with optional
// fraction and a unit suffix, such as "300s", "1.5h", and "2h45m". Valid time
// units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
//
// The value must be a positive duration less than or equal to 2 minutes.
//
// The default value is "2m0s" if unspecified.
string image_minimum_gc_age = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the maximum age an image can be unused before it is
// garbage collected. The string must be a sequence of decimal numbers, each
// with optional fraction and a unit suffix, such as "300s", "1.5h", and
// "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
//
// The value must be a positive duration greater than image_minimum_gc_age
// or "0s".
//
// The default value is "0s" if unspecified, which disables this field,
// meaning images won't be garbage collected based on being unused for too
// long.
string image_maximum_gc_age = 13 [(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the maximum size of the container log file before it is
// rotated. See
// https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation
//
// Valid format is positive number + unit, e.g. 100Ki, 10Mi. Valid units are
// Ki, Mi, Gi.
// The value must be between 10Mi and 500Mi, inclusive.
//
// Note that the total container log size (container_log_max_size *
// container_log_max_files) cannot exceed 1% of the total
// storage of the node, to avoid disk pressure caused by log files.
//
// The default value is 10Mi if unspecified.
string container_log_max_size = 14 [(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the maximum number of container log files that can be
// present for a container. See
// https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation
//
// The value must be an integer between 2 and 10, inclusive.
// The default value is 5 if unspecified.
int32 container_log_max_files = 15 [(google.api.field_behavior) = OPTIONAL];
// Optional. Defines a comma-separated allowlist of unsafe sysctls or sysctl
// patterns (ending in `*`).
//
// The unsafe namespaced sysctl groups are `kernel.shm*`, `kernel.msg*`,
// `kernel.sem`, `fs.mqueue.*`, and `net.*`. Leaving this allowlist empty
// means they cannot be set on Pods.
//
// To allow certain sysctls or sysctl patterns to be set on Pods, list them
// separated by commas.
// For example: `kernel.msg*,net.ipv4.route.min_pmtu`.
//
// See https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/
// for more details.
repeated string allowed_unsafe_sysctls = 16
[(google.api.field_behavior) = OPTIONAL];
// Optional. eviction_soft is a map of signal names to quantities that defines
// soft eviction thresholds. Each signal is compared to its corresponding
// threshold to determine if a pod eviction should occur.
EvictionSignals eviction_soft = 17 [(google.api.field_behavior) = OPTIONAL];
// Optional. eviction_soft_grace_period is a map of signal names to quantities
// that defines grace periods for each soft eviction signal. The grace period
// is the amount of time that a pod must be under pressure before an eviction
// occurs.
EvictionGracePeriod eviction_soft_grace_period = 18
[(google.api.field_behavior) = OPTIONAL];
// Optional. eviction_minimum_reclaim is a map of signal names to quantities
// that defines minimum reclaims, which describe the minimum amount of a given
// resource the kubelet will reclaim when performing a pod eviction while that
// resource is under pressure.
EvictionMinimumReclaim eviction_minimum_reclaim = 19
[(google.api.field_behavior) = OPTIONAL];
// Optional. eviction_max_pod_grace_period_seconds is the maximum allowed
// grace period (in seconds) to use when terminating pods in response to a
// soft eviction threshold being met. This value effectively caps the Pod's
// terminationGracePeriodSeconds value during soft evictions. Default: 0.
// Range: [0, 300].
int32 eviction_max_pod_grace_period_seconds = 20
[(google.api.field_behavior) = OPTIONAL];
// Optional. Defines the maximum number of image pulls in parallel.
// The range is 2 to 5, inclusive.
// The default value is 2 or 3 depending on the disk type.
//
// See
// https://kubernetes.io/docs/concepts/containers/images/#maximum-parallel-image-pulls
// for more details.
int32 max_parallel_image_pulls = 21 [(google.api.field_behavior) = OPTIONAL];
// Optional. Defines whether to enable single process OOM killer.
// If true, will prevent the memory.oom.group flag from being set for
// container cgroups in cgroups v2. This causes processes in the container to
// be OOM killed individually instead of as a group.
optional bool single_process_oom_kill = 22
[(google.api.field_behavior) = OPTIONAL];
// Optional. shutdown_grace_period_seconds is the maximum allowed grace period
// (in seconds) the total duration that the node should delay the shutdown
// during a graceful shutdown. This is the total grace period for pod
// termination for both regular and critical pods.
// https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/
// If set to 0, node will not enable the graceful node shutdown functionality.
// This field is only valid for Spot VMs.
// Allowed values: 0, 30, 120.
optional int32 shutdown_grace_period_seconds = 26
[(google.api.field_behavior) = OPTIONAL];
// Optional. shutdown_grace_period_critical_pods_seconds is the maximum
// allowed grace period (in seconds) used to terminate critical pods during a
// node shutdown. This value should be <= shutdown_grace_period_seconds, and
// is only valid if shutdown_grace_period_seconds is set.
// https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/
// Range: [0, 120].
optional int32 shutdown_grace_period_critical_pods_seconds = 27
[(google.api.field_behavior) = OPTIONAL];
}
// TopologyManager defines the configuration options for Topology Manager
// feature. See
// https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/
message TopologyManager {
// Configures the strategy for resource alignment.
// Allowed values are:
//
// * none: the default policy, and does not perform any topology alignment.
// * restricted: the topology manager stores the preferred NUMA node affinity
// for the container, and will reject the pod if the affinity if not
// preferred.
// * best-effort: the topology manager stores the preferred NUMA node affinity
// for the container. If the affinity is not preferred, the topology manager
// will admit the pod to the node anyway.
// * single-numa-node: the topology manager determines if the single NUMA node
// affinity is possible. If it is, Topology Manager will store this and the
// Hint Providers can then use this information when making the resource
// allocation decision. If, however, this is not possible then the
// Topology Manager will reject the pod from the node. This will result in a
// pod in a Terminated state with a pod admission failure.
//
// The default policy value is 'none' if unspecified.
// Details about each strategy can be found
// [here](https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-policies).
string policy = 1;
// The Topology Manager aligns resources in following scopes:
//
// * container
// * pod
//
// The default scope is 'container' if unspecified.
// See
// https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-scopes
string scope = 2;
}
// The option enables the Kubernetes NUMA-aware Memory Manager feature.
// Detailed description about the feature can be found
// [here](https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/).
message MemoryManager {
// Controls the memory management policy on the Node.
// See
// https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/#policies
//
// The following values are allowed.
// * "none"
// * "static"
// The default value is 'none' if unspecified.
string policy = 1;
}
// Eviction signals are the current state of a particular resource at a specific
// point in time. The kubelet uses eviction signals to make eviction decisions
// by comparing the signals to eviction thresholds, which are the minimum amount
// of the resource that should be available on the node.
message EvictionSignals {
// Optional. Memory available (i.e. capacity - workingSet), in bytes. Defines
// the amount of "memory.available" signal in kubelet. Default is unset, if
// not specified in the kubelet config. Format: positive number + unit, e.g.
// 100Ki, 10Mi, 5Gi. Valid units are Ki, Mi, Gi. Must be >= 100Mi and <= 50%
// of the node's memory. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string memory_available = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of storage available on filesystem that kubelet uses for
// volumes, daemon logs, etc. Defines the amount of "nodefs.available" signal
// in kubelet. Default is unset, if not specified in the kubelet config. It
// takses percentage value for now. Sample format: "30%". Must be >= 10% and
// <= 50%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_available = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of inodes available on filesystem that kubelet uses for
// volumes, daemon logs, etc. Defines the amount of "nodefs.inodesFree" signal
// in kubelet. Default is unset, if not specified in the kubelet config. Linux
// only. It takses percentage value for now. Sample format: "30%". Must be >=
// 5% and <= 50%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_inodes_free = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of storage available on filesystem that container runtime
// uses for storing images layers. If the container filesystem and image
// filesystem are not separate, then imagefs can store both image layers and
// writeable layers. Defines the amount of "imagefs.available" signal in
// kubelet. Default is unset, if not specified in the kubelet config. It
// takses percentage value for now. Sample format: "30%". Must be >= 15% and
// <= 50%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_available = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of inodes available on filesystem that container runtime
// uses for storing images layers. Defines the amount of "imagefs.inodesFree"
// signal in kubelet. Default is unset, if not specified in the kubelet
// config. Linux only. It takses percentage value for now. Sample format:
// "30%". Must be >= 5% and <= 50%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_inodes_free = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Amount of PID available for pod allocation. Defines the amount of
// "pid.available" signal in kubelet. Default is unset, if not specified in
// the kubelet config. It takses percentage value for now. Sample format:
// "30%". Must be >= 10% and <= 50%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string pid_available = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Eviction grace periods are grace periods for each eviction signal.
message EvictionGracePeriod {
// Optional. Grace period for eviction due to memory available signal. Sample
// format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string memory_available = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Grace period for eviction due to nodefs available signal. Sample
// format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_available = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Grace period for eviction due to nodefs inodes free signal.
// Sample format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_inodes_free = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Grace period for eviction due to imagefs available signal. Sample
// format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_available = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Grace period for eviction due to imagefs inodes free signal.
// Sample format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_inodes_free = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Grace period for eviction due to pid available signal. Sample
// format: "10s". Must be >= 0. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string pid_available = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Eviction minimum reclaims are the resource amounts of minimum reclaims for
// each eviction signal.
message EvictionMinimumReclaim {
// Optional. Minimum reclaim for eviction due to memory available signal. Only
// take percentage value for now. Sample format: "10%". Must be <=10%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string memory_available = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Minimum reclaim for eviction due to nodefs available signal. Only
// take percentage value for now. Sample format: "10%". Must be <=10%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_available = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Minimum reclaim for eviction due to nodefs inodes free signal.
// Only take percentage value for now. Sample format: "10%". Must be <=10%.
// See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string nodefs_inodes_free = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Minimum reclaim for eviction due to imagefs available signal.
// Only take percentage value for now. Sample format: "10%". Must be <=10%.
// See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_available = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Minimum reclaim for eviction due to imagefs inodes free signal.
// Only take percentage value for now. Sample format: "10%". Must be <=10%.
// See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string imagefs_inodes_free = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Minimum reclaim for eviction due to pid available signal. Only
// take percentage value for now. Sample format: "10%". Must be <=10%. See
// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
string pid_available = 6 [(google.api.field_behavior) = OPTIONAL];
}
// 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 {
// LocalSsdEncryptionMode specifies the method used for encrypting the Local
// SSDs attached to the node.
enum LocalSsdEncryptionMode {
// The given node will be encrypted using keys managed by Google
// infrastructure and the keys will be deleted when the node is
// deleted.
LOCAL_SSD_ENCRYPTION_MODE_UNSPECIFIED = 0;
// The given node will be encrypted using keys managed by Google
// infrastructure and the keys will be deleted when the node is
// deleted.
STANDARD_ENCRYPTION = 1;
// The given node will opt-in for using ephemeral key for
// encryption of Local SSDs.
// The Local SSDs will not be able to recover data in case of node
// crash.
EPHEMERAL_KEY_ENCRYPTION = 2;
}
// Possible effective cgroup modes for the node.
enum EffectiveCgroupMode {
// EFFECTIVE_CGROUP_MODE_UNSPECIFIED means the cgroup configuration for the
// node pool is unspecified, i.e. the node pool is a Windows node pool.
EFFECTIVE_CGROUP_MODE_UNSPECIFIED = 0;
// CGROUP_MODE_V1 means the node pool is configured to use cgroupv1 for the
// cgroup configuration.
EFFECTIVE_CGROUP_MODE_V1 = 1;
// CGROUP_MODE_V2 means the node pool is configured to use cgroupv2 for the
// cgroup configuration.
EFFECTIVE_CGROUP_MODE_V2 = 2;
}
// 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`.
string machine_type = 1;
// 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.
int32 disk_size_gb = 2;
// 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 [Artifact Registry](https://cloud.google.com/artifact-registry/)).
//
// If unspecified, no scopes are added, unless Cloud Logging or Cloud
// Monitoring are enabled, in which case their required scopes will be added.
repeated string oauth_scopes = 3;
// 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.
string service_account = 9;
// 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-os-login"
// - "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.
map<string, string> metadata = 4;
// 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.
string image_type = 5;
// 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/
map<string, string> labels = 6;
// 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.
int32 local_ssd_count = 7;
// 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.
repeated string tags = 8;
// 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.
bool preemptible = 10;
// 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.
repeated AcceleratorConfig accelerators = 11;
// 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'
string disk_type = 12;
// 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)
string min_cpu_platform = 13;
// The workload metadata configuration for this node.
WorkloadMetadataConfig workload_metadata_config = 14;
// 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/
repeated NodeTaint taints = 15;
// Sandbox configuration for this node.
SandboxConfig sandbox_config = 17;
// 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).
string node_group = 18;
// 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.
ReservationAffinity reservation_affinity = 19;
// Shielded Instance options.
ShieldedInstanceConfig shielded_instance_config = 20;
// Parameters that can be configured on Linux nodes.
LinuxNodeConfig linux_node_config = 21;
// Node kubelet configs.
NodeKubeletConfig kubelet_config = 22;
//
// 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
string boot_disk_kms_key = 23;
// Google Container File System (image streaming) configs.
GcfsConfig gcfs_config = 25;
// Advanced features for the Compute Engine VM.
AdvancedMachineFeatures advanced_machine_features = 26;
// 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;
// Enable or disable NCCL fast socket for the node pool.
optional FastSocket fast_socket = 36;
// The resource labels for the node pool to use to annotate any related
// Google Compute Engine resources.
map<string, string> resource_labels = 37;
// Logging configuration.
NodePoolLoggingConfig logging_config = 38;
// Parameters that can be configured on Windows nodes.
WindowsNodeConfig windows_node_config = 39;
// Parameters for using raw-block Local NVMe SSDs.
LocalNvmeSsdBlockConfig local_nvme_ssd_block_config = 40;
// Parameters for the node ephemeral storage using Local SSDs.
// If unspecified, ephemeral storage is backed by the boot disk.
EphemeralStorageLocalSsdConfig ephemeral_storage_local_ssd_config = 41;
// Parameters for node pools to be backed by shared sole tenant node groups.
SoleTenantConfig sole_tenant_config = 42;
// Parameters for containerd customization.
ContainerdConfig containerd_config = 43;
// A map of resource manager tag keys and values to be attached to the nodes.
ResourceManagerTags resource_manager_tags = 45;
// Optional. Reserved for future use.
bool enable_confidential_storage = 46
[(google.api.field_behavior) = OPTIONAL];
// List of secondary boot disks attached to the nodes.
repeated SecondaryBootDisk secondary_boot_disks = 48;
// List of Storage Pools where boot disks are provisioned.
repeated string storage_pools = 49;
// Secondary boot disk update strategy.
optional SecondaryBootDiskUpdateStrategy secondary_boot_disk_update_strategy =
50;
// The configuration for GPU Direct
optional GPUDirectConfig gpu_direct_config = 51;
// The maximum duration for the nodes to exist.
// If unspecified, the nodes can exist indefinitely.
google.protobuf.Duration max_run_duration = 53;
// Specifies which method should be used for encrypting the
// Local SSDs attached to the node.
optional LocalSsdEncryptionMode local_ssd_encryption_mode = 54;
// Output only. effective_cgroup_mode is the cgroup mode actually used by the
// node pool. It is determined by the cgroup mode specified in the
// LinuxNodeConfig or the default cgroup mode based on the cluster creation
// version.
EffectiveCgroupMode effective_cgroup_mode = 55
[(google.api.field_behavior) = OUTPUT_ONLY];
// Flex Start flag for enabling Flex Start VM.
optional bool flex_start = 56;
// The boot disk configuration for the node pool.
BootDisk boot_disk = 57;
// Consolidation delay defines duration after which the Cluster Autoscaler can
// scale down underutilized nodes. If not set, nodes are scaled down by
// default behavior, i.e. according to the chosen autoscaling profile.
google.protobuf.Duration consolidation_delay = 60;
}
// Specifies options for controlling advanced machine features.
message AdvancedMachineFeatures {
// Level of PMU access.
enum PerformanceMonitoringUnit {
// PMU not enabled.
PERFORMANCE_MONITORING_UNIT_UNSPECIFIED = 0;
// Architecturally defined non-LLC events.
ARCHITECTURAL = 1;
// Most documented core/L2 events.
STANDARD = 2;
// Most documented core/L2 and LLC events.
ENHANCED = 3;
}
// 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.
optional int64 threads_per_core = 1;
// Whether or not to enable nested virtualization (defaults to false).
optional bool enable_nested_virtualization = 2;
// Type of Performance Monitoring Unit (PMU) requested on node pool instances.
// If unset, PMU will not be available to the node.
optional PerformanceMonitoringUnit performance_monitoring_unit = 3;
}
// 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.
//
// 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.
bool create_pod_range = 4 [(google.api.field_behavior) = INPUT_ONLY];
// 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.
string pod_range = 5;
// 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.
string pod_ipv4_cidr_block = 6;
// Whether nodes have internal IP addresses only.
// If enable_private_nodes is not specified, then the value is derived from
// [Cluster.NetworkConfig.default_enable_private_nodes][]
optional bool enable_private_nodes = 9;
// Network bandwidth tier configuration.
optional NetworkPerformanceConfig network_performance_config = 11;
// [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.
PodCIDROverprovisionConfig pod_cidr_overprovision_config = 13;
// We specify the additional node networks for this node pool using this list.
// Each node network corresponds to an additional interface
repeated AdditionalNodeNetworkConfig additional_node_network_configs = 14;
// 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
repeated AdditionalPodNetworkConfig additional_pod_network_configs = 15;
// 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.
double pod_ipv4_range_utilization = 16
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The subnetwork name/path for the node pool.
// Format: projects/{project}/regions/{region}/subnetworks/{subnetwork}
// If the cluster is associated with multiple subnetworks, the subnetwork can
// be either:
// 1. A user supplied subnetwork name/full path during node pool creation.
// Example1: my-subnet
// Example2: projects/gke-project/regions/us-central1/subnetworks/my-subnet
// 2. A subnetwork path picked based on the IP utilization during node pool
// creation and is immutable.
string subnetwork = 19 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "compute.googleapis.com/Subnetwork"
}
];
// Output only. The network tier configuration for the node pool inherits from
// the cluster-level configuration and remains immutable throughout the node
// pool's lifecycle, including during upgrades.
NetworkTierConfig network_tier_config = 20
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// AdditionalNodeNetworkConfig is the configuration for additional node networks
// within the NodeNetworkConfig message
message AdditionalNodeNetworkConfig {
// Name of the VPC where the additional interface belongs
string network = 1;
// Name of the subnetwork where the additional interface belongs
string subnetwork = 2;
}
// AdditionalPodNetworkConfig is the configuration for additional pod networks
// within the NodeNetworkConfig message
message AdditionalPodNetworkConfig {
// Name of the subnetwork where the additional pod network belongs.
string subnetwork = 1;
// The name of the secondary range on the subnet which provides IP address for
// this pod range.
string secondary_pod_range = 2;
// The maximum number of pods per node which use this pod network.
optional MaxPodsConstraint max_pods_per_node = 3;
}
// A set of Shielded Instance options.
message ShieldedInstanceConfig {
// 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.
bool enable_secure_boot = 1;
// 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.
bool enable_integrity_monitoring = 2;
}
// SandboxConfig contains configurations of the sandbox to use for the node.
message SandboxConfig {
// Possible types of sandboxes.
enum Type {
// Default value. This should not be used.
UNSPECIFIED = 0;
// Run sandbox using gvisor.
GVISOR = 1;
}
// Type of the sandbox to use for the node.
Type type = 2;
}
// GcfsConfig contains configurations of Google Container File System
// (image streaming).
message GcfsConfig {
// Whether to use GCFS.
bool enabled = 1;
}
// [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
// is the configuration of desired reservation which instances could take
// capacity from.
message ReservationAffinity {
// Indicates whether to consume capacity from a reservation or not.
enum 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;
}
// Corresponds to the type of reservation consumption.
Type consume_reservation_type = 1;
// 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.
string key = 2;
// Corresponds to the label value(s) of reservation resource(s).
repeated string values = 3;
}
// SoleTenantConfig contains the NodeAffinities to specify what shared sole
// tenant node groups should back the node pool.
message SoleTenantConfig {
// 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).
message NodeAffinity {
// Operator allows user to specify affinity or anti-affinity for the
// given key values.
enum Operator {
// Invalid or unspecified affinity operator.
OPERATOR_UNSPECIFIED = 0;
// Affinity operator.
IN = 1;
// Anti-affinity operator.
NOT_IN = 2;
}
// Key for NodeAffinity.
string key = 1;
// Operator for NodeAffinity.
Operator operator = 2;
// Values for NodeAffinity.
repeated string values = 3;
}
// NodeAffinities used to match to a shared sole tenant node group.
repeated NodeAffinity node_affinities = 1;
// Optional. The minimum number of virtual CPUs this instance will consume
// when running on a sole-tenant node. This field can only be set if the node
// pool is created in a shared sole-tenant node group.
optional int32 min_node_cpus = 2 [(google.api.field_behavior) = OPTIONAL];
}
// ContainerdConfig contains configuration to customize containerd.
message ContainerdConfig {
// PrivateRegistryAccessConfig contains access configuration for
// private container registries.
message PrivateRegistryAccessConfig {
// CertificateAuthorityDomainConfig configures one or more fully qualified
// domain names (FQDN) to a specific certificate.
message CertificateAuthorityDomainConfig {
// GCPSecretManagerCertificateConfig configures a secret from
// [Secret Manager](https://cloud.google.com/secret-manager).
message GCPSecretManagerCertificateConfig {
// Secret URI, in the form
// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION".
// Version can be fixed (e.g. "2") or "latest"
string secret_uri = 1;
}
// List of fully qualified domain names (FQDN).
// Specifying port is supported.
// Wildcards are NOT supported.
// Examples:
// - my.customdomain.com
// - 10.0.1.2:5000
repeated string fqdns = 1;
// Certificate access config. The following are supported:
// - GCPSecretManagerCertificateConfig
oneof certificate_config {
// Secret Manager certificate configuration.
GCPSecretManagerCertificateConfig
gcp_secret_manager_certificate_config = 2;
}
}
// Private registry access is enabled.
bool enabled = 1;
// Private registry access configuration.
repeated CertificateAuthorityDomainConfig
certificate_authority_domain_config = 2;
}
// Defines writable cgroups configuration.
message WritableCgroups {
// Optional. Whether writable cgroups is enabled.
bool enabled = 1 [(google.api.field_behavior) = OPTIONAL];
}
// RegistryHostConfig configures the top-level structure for a single
// containerd registry server's configuration, which represents one hosts.toml
// file on the node. It will override the same fqdns in
// PrivateRegistryAccessConfig.
message RegistryHostConfig {
// CertificateConfig configures certificate for the registry.
message CertificateConfig {
// One of the methods to configure the certificate.
oneof certificate {
// The URI configures a secret from
// [Secret Manager](https://cloud.google.com/secret-manager)
// in the format
// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION" for
// global secret or
// "projects/$PROJECT_ID/locations/$REGION/secrets/$SECRET_NAME/versions/$VERSION"
// for regional secret. Version can be fixed (e.g. "2") or "latest"
string gcp_secret_manager_secret_uri = 1;
}
}
// CertificateConfigPair configures pairs of certificates, which is used for
// client certificate and key pairs under a registry.
message CertificateConfigPair {
// Cert configures the client certificate.
CertificateConfig cert = 1;
// Key configures the client private key. Optional.
CertificateConfig key = 2;
}
// RegistryHeader configures headers for the registry.
message RegistryHeader {
// Key configures the header key.
string key = 1;
// Value configures the header value.
repeated string value = 2;
}
// HostCapability configures capabilities for the registry host.
enum HostCapability {
// UNKNOWN should never be set.
HOST_CAPABILITY_UNSPECIFIED = 0;
// Pull represents the capability to fetch manifests and blobs by digest.
HOST_CAPABILITY_PULL = 1;
// Resolve represents the capability to fetch manifests by name.
HOST_CAPABILITY_RESOLVE = 2;
// Push represents the capability to push blobs and manifests.
HOST_CAPABILITY_PUSH = 3;
}
// HostConfig configures the registry host under a given Server.
message HostConfig {
// Host configures the registry host/mirror.
// It supports fully qualified domain names (FQDN) and IP addresses:
// Specifying port is supported.
// Wildcards are NOT supported.
// Examples:
// - my.customdomain.com
// - 10.0.1.2:5000
string host = 1;
// Capabilities represent the capabilities of the registry host,
// specifying what operations a host is capable of performing.
// If not set, containerd enables all capabilities by default.
repeated HostCapability capabilities = 2;
// OverridePath is used to indicate the host's API root endpoint is
// defined in the URL path rather than by the API specification. This may
// be used with non-compliant OCI registries which are missing the /v2
// prefix.
// If not set, containerd sets default false.
bool override_path = 3;
// Header configures the registry host headers.
repeated RegistryHeader header = 4;
// CA configures the registry host certificate.
repeated CertificateConfig ca = 5;
// Client configures the registry host client certificate and key.
repeated CertificateConfigPair client = 6;
// Specifies the maximum duration allowed for a connection attempt to
// complete. A shorter timeout helps reduce delays when falling back to
// the original registry if the mirror is unreachable.
// Maximum allowed value is 180s. If not set, containerd sets default 30s.
// The value should be a decimal number of seconds with an `s` suffix.
google.protobuf.Duration dial_timeout = 7;
}
// Defines the host name of the registry server, which will be used to
// create configuration file as /etc/containerd/hosts.d/<server>/hosts.toml.
// It supports fully qualified domain names (FQDN) and IP addresses:
// Specifying port is supported.
// Wildcards are NOT supported.
// Examples:
// - my.customdomain.com
// - 10.0.1.2:5000
string server = 1;
// HostConfig configures a list of host-specific configurations for the
// server.
// Each server can have at most 10 host configurations.
repeated HostConfig hosts = 2;
}
// PrivateRegistryAccessConfig is used to configure access configuration
// for private container registries.
PrivateRegistryAccessConfig private_registry_access_config = 1;
// Optional. WritableCgroups defines writable cgroups configuration for the
// node pool.
WritableCgroups writable_cgroups = 2 [(google.api.field_behavior) = OPTIONAL];
// RegistryHostConfig configures containerd registry host configuration.
// Each registry_hosts represents a hosts.toml file.
// At most 25 registry_hosts are allowed.
repeated RegistryHostConfig registry_hosts = 3;
}
// 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.
message NodeTaint {
// Possible values for Effect in taint.
enum Effect {
// Not set
EFFECT_UNSPECIFIED = 0;
// NoSchedule
NO_SCHEDULE = 1;
// PreferNoSchedule
PREFER_NO_SCHEDULE = 2;
// NoExecute
NO_EXECUTE = 3;
}
// Key for taint.
string key = 1;
// Value for taint.
string value = 2;
// Effect for taint.
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 [Resource Manager
// labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).
message ResourceLabels {
// 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.
message MasterAuth {
// 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
string username = 1 [deprecated = true];
// 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
string password = 2 [deprecated = true];
// Configuration for client certificate authentication on the cluster. For
// clusters before v1.12, if no configuration is specified, a client
// certificate is issued.
ClientCertificateConfig client_certificate_config = 3;
// Output only. Base64-encoded public certificate that is the root of
// trust for the cluster.
string cluster_ca_certificate = 100
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Base64-encoded public certificate used by clients to
// authenticate to the cluster endpoint. Issued only if
// client_certificate_config is set.
string client_certificate = 101 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Base64-encoded private key used by clients to authenticate
// to the cluster endpoint.
string client_key = 102 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Configuration for client certificates on the cluster.
message ClientCertificateConfig {
// Issue a client certificate.
bool issue_client_certificate = 1;
}
// Configuration for the addons that can be automatically spun up in the
// cluster, enabling additional functionality.
message AddonsConfig {
// Configuration for the HTTP (L7) load balancing controller addon, which
// makes it easy to set up HTTP load balancers for services in a cluster.
HttpLoadBalancing http_load_balancing = 1;
// 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.
HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;
// 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
KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
// 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.
NetworkPolicyConfig network_policy_config = 4;
// Configuration for the Cloud Run addon, which allows the user to use a
// managed Knative service.
CloudRunConfig cloud_run_config = 7;
// Configuration for NodeLocalDNS, a dns cache running on cluster nodes
DnsCacheConfig dns_cache_config = 8;
// Configuration for the ConfigConnector add-on, a Kubernetes
// extension to manage hosted Google Cloud services through the Kubernetes
// API.
ConfigConnectorConfig config_connector_config = 10;
// Configuration for the Compute Engine Persistent Disk CSI driver.
GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
// Configuration for the Filestore CSI driver.
GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
// Configuration for the Backup for GKE agent addon.
GkeBackupAgentConfig gke_backup_agent_config = 16;
// Configuration for the Cloud Storage Fuse CSI driver.
GcsFuseCsiDriverConfig gcs_fuse_csi_driver_config = 17;
// Optional. Configuration for the StatefulHA add-on.
StatefulHAConfig stateful_ha_config = 18
[(google.api.field_behavior) = OPTIONAL];
// Configuration for the Cloud Storage Parallelstore CSI driver.
ParallelstoreCsiDriverConfig parallelstore_csi_driver_config = 19;
// Optional. Configuration for Ray Operator addon.
RayOperatorConfig ray_operator_config = 21
[(google.api.field_behavior) = OPTIONAL];
// Configuration for the High Scale Checkpointing add-on.
HighScaleCheckpointingConfig high_scale_checkpointing_config = 22;
// Configuration for the Lustre CSI driver.
LustreCsiDriverConfig lustre_csi_driver_config = 23;
// Optional. Configuration for the slice controller add-on.
SliceControllerConfig slice_controller_config = 26
[(google.api.field_behavior) = OPTIONAL];
}
// 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.
message HttpLoadBalancing {
// 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.
bool disabled = 1;
}
// 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.
message HorizontalPodAutoscaling {
// Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
// When enabled, it ensures that metrics are collected into Stackdriver
// Monitoring.
bool disabled = 1;
}
// Configuration for the Kubernetes Dashboard.
message KubernetesDashboard {
// Whether the Kubernetes Dashboard is enabled for this cluster.
bool disabled = 1;
}
// 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.
message NetworkPolicyConfig {
// Whether NetworkPolicy is enabled for this cluster.
bool disabled = 1;
}
// Configuration for NodeLocal DNSCache
message DnsCacheConfig {
// Whether NodeLocal DNSCache is enabled for this cluster.
bool enabled = 1;
}
// Configuration for controlling master global access settings.
message PrivateClusterMasterGlobalAccessConfig {
// Whenever master is accessible globally or not.
bool enabled = 1;
}
// Configuration options for private clusters.
message PrivateClusterConfig {
// 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.
//
// Deprecated: Use
// [NetworkConfig.default_enable_private_nodes][google.container.v1.NetworkConfig.default_enable_private_nodes]
// instead.
bool enable_private_nodes = 1 [deprecated = true];
// Whether the master's internal IP address is used as the cluster endpoint.
//
// Deprecated: Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_public_endpoint][google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_public_endpoint]
// instead. Note that the value of enable_public_endpoint is reversed: if
// enable_private_endpoint is false, then enable_public_endpoint will be true.
bool enable_private_endpoint = 2 [deprecated = true];
// 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.
string master_ipv4_cidr_block = 3;
// Output only. The internal IP address of this cluster's master endpoint.
//
// Deprecated: Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint][google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint]
// instead.
string private_endpoint = 4
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The external IP address of this cluster's master endpoint.
//
// Deprecated:Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.public_endpoint][google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.public_endpoint]
// instead.
string public_endpoint = 5
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The peering name in the customer VPC used by this cluster.
string peering_name = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Controls master global access settings.
//
// Deprecated: Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_global_access][]
// instead.
PrivateClusterMasterGlobalAccessConfig master_global_access_config = 8
[deprecated = true];
// Subnet to provision the master's private endpoint during cluster creation.
// Specified in projects/*/regions/*/subnetworks/* format.
//
// Deprecated: Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint_subnetwork][google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint_subnetwork]
// instead.
string private_endpoint_subnetwork = 10 [deprecated = true];
}
// Configuration for returning group information from authenticators.
message AuthenticatorGroupsConfig {
// Whether this cluster should return group membership lookups
// during authentication using a group of security groups.
bool enabled = 1;
// The name of the security group-of-groups to be used. Only relevant
// if enabled = true.
string security_group = 2;
}
// Configuration options for the Cloud Run feature.
message CloudRunConfig {
// Load balancer type of ingress service of Cloud Run.
enum 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;
}
// Whether Cloud Run addon is enabled for this cluster.
bool disabled = 1;
// Which load balancer type is installed for Cloud Run.
LoadBalancerType load_balancer_type = 3;
}
// Configuration options for the Config Connector add-on.
message ConfigConnectorConfig {
// Whether Cloud Connector is enabled for this cluster.
bool enabled = 1;
}
// Configuration for the Compute Engine PD CSI driver.
message GcePersistentDiskCsiDriverConfig {
// Whether the Compute Engine PD CSI driver is enabled for this cluster.
bool enabled = 1;
}
// Configuration for the Filestore CSI driver.
message GcpFilestoreCsiDriverConfig {
// Whether the Filestore CSI driver is enabled for this cluster.
bool enabled = 1;
}
// Configuration for the Cloud Storage Fuse CSI driver.
message GcsFuseCsiDriverConfig {
// Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
bool enabled = 1;
}
// Configuration for the Cloud Storage Parallelstore CSI driver.
message ParallelstoreCsiDriverConfig {
// Whether the Cloud Storage Parallelstore CSI driver is enabled for this
// cluster.
bool enabled = 1;
}
// Configuration for the High Scale Checkpointing.
message HighScaleCheckpointingConfig {
// Whether the High Scale Checkpointing is enabled for this
// cluster.
bool enabled = 1;
}
// Configuration for the Lustre CSI driver.
message LustreCsiDriverConfig {
// Whether the Lustre CSI driver is enabled for this cluster.
bool enabled = 1;
// If set to true, the Lustre CSI driver will install Lustre kernel modules
// using port 6988.
// This serves as a workaround for a port conflict with the
// gke-metadata-server. This field is required ONLY under the following
// conditions:
// 1. The GKE node version is older than 1.33.2-gke.4655000.
// 2. You're connecting to a Lustre instance that has the
// 'gke-support-enabled' flag.
// Deprecated: This flag is no longer required as of GKE node version
// 1.33.2-gke.4655000, unless you are connecting to a Lustre instance
// that has the `gke-support-enabled` flag.
bool enable_legacy_lustre_port = 3 [deprecated = true];
}
// Configuration for the Slice Controller.
message SliceControllerConfig {
// Optional. Indicates whether Slice Controller is enabled in the cluster.
bool enabled = 1 [(google.api.field_behavior) = OPTIONAL];
}
// Configuration options for the Ray Operator add-on.
message RayOperatorConfig {
// Whether the Ray Operator addon is enabled for this cluster.
bool enabled = 1;
// Optional. Logging configuration for Ray clusters.
RayClusterLoggingConfig ray_cluster_logging_config = 2
[(google.api.field_behavior) = OPTIONAL];
// Optional. Monitoring configuration for Ray clusters.
RayClusterMonitoringConfig ray_cluster_monitoring_config = 3
[(google.api.field_behavior) = OPTIONAL];
}
// Configuration for the Backup for GKE Agent.
message GkeBackupAgentConfig {
// Whether the Backup for GKE agent is enabled for this cluster.
bool enabled = 1;
}
// Configuration for the Stateful HA add-on.
message StatefulHAConfig {
// Whether the Stateful HA add-on is enabled for this cluster.
bool enabled = 1;
}
// 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.
message MasterAuthorizedNetworksConfig {
// CidrBlock contains an optional name and one CIDR block.
message CidrBlock {
// display_name is an optional field for users to identify CIDR blocks.
string display_name = 1;
// cidr_block must be specified in CIDR notation.
string cidr_block = 2;
}
// Whether or not master authorized networks is enabled.
bool enabled = 1;
// cidr_blocks define up to 50 external networks that could access
// Kubernetes master through HTTPS.
repeated CidrBlock cidr_blocks = 2;
// Whether master is accessible via Google Compute Engine Public IP addresses.
optional bool gcp_public_cidrs_access_enabled = 3;
// Whether master authorized networks is enforced on private endpoint or not.
optional bool private_endpoint_enforcement_enabled = 5;
}
// Configuration for the legacy Attribute Based Access Control authorization
// mode.
message LegacyAbac {
// 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.
bool enabled = 1;
}
// Configuration options for the NetworkPolicy feature.
// https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
message NetworkPolicy {
// Allowed Network Policy providers.
enum Provider {
// Not set
PROVIDER_UNSPECIFIED = 0;
// Tigera (Calico Felix).
CALICO = 1;
}
// The selected network policy provider.
Provider provider = 1;
// Whether network policy is enabled on the cluster.
bool enabled = 2;
}
// 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;
}
// 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.
bool enabled = 1 [deprecated = true];
// Mode of operation for binauthz policy evaluation. If unspecified, defaults
// to DISABLED.
EvaluationMode evaluation_mode = 2;
}
// [PRIVATE FIELD]
// Config for pod CIDR size overprovisioning.
message PodCIDROverprovisionConfig {
// Whether Pod CIDR overprovisioning is disabled.
// Note: Pod CIDR overprovisioning is enabled by default.
bool disable = 1;
}
// Configuration for controlling how IPs are allocated in the cluster.
message IPAllocationPolicy {
// 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
bool use_ip_aliases = 1;
// Whether a new subnetwork will be created automatically for the cluster.
//
// This field is only applicable when `use_ip_aliases` is true.
bool create_subnetwork = 2;
// 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.
string subnetwork_name = 3;
// This field is deprecated, use cluster_ipv4_cidr_block.
string cluster_ipv4_cidr = 4 [deprecated = true];
// This field is deprecated, use node_ipv4_cidr_block.
string node_ipv4_cidr = 5 [deprecated = true];
// This field is deprecated, use services_ipv4_cidr_block.
string services_ipv4_cidr = 6 [deprecated = true];
// The name of the secondary range to be used for the cluster CIDR
// block. The secondary range will be used for pod IP
// addresses. This must be an existing secondary range associated
// with the cluster subnetwork.
//
// This field is only applicable with use_ip_aliases is true and
// create_subnetwork is false.
string cluster_secondary_range_name = 7;
// The name of the secondary range to be used as for the services
// CIDR block. The secondary range will be used for service
// ClusterIPs. This must be an existing secondary range associated
// with the cluster subnetwork.
//
// This field is only applicable with use_ip_aliases is true and
// create_subnetwork is false.
string services_secondary_range_name = 8;
// 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](https://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.
string cluster_ipv4_cidr_block = 9;
// 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](https://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.
string node_ipv4_cidr_block = 10;
// 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](https://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.
string services_ipv4_cidr_block = 11;
// 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](https://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 due to the deprecation of 2VM TPU. The end of life
// date for 2VM TPU is 2025-04-25.
string tpu_ipv4_cidr_block = 13 [deprecated = true];
// 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
bool use_routes = 15;
// The IP stack type of the cluster
StackType stack_type = 16;
// The ipv6 access type (internal or external) when create_subnetwork is true
IPv6AccessType ipv6_access_type = 17;
// [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.
PodCIDROverprovisionConfig pod_cidr_overprovision_config = 21;
// Output only. The subnet's IPv6 CIDR block used by nodes and pods.
string subnet_ipv6_cidr_block = 22
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The services IPv6 CIDR block for the cluster.
string services_ipv6_cidr_block = 23
[(google.api.field_behavior) = 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.
AdditionalPodRangesConfig additional_pod_ranges_config = 24
[(google.api.field_behavior) = 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.
double default_pod_ipv4_range_utilization = 25
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The additional IP ranges that are added to the cluster.
// These IP ranges can be used by new node pools to allocate node and pod IPs
// automatically.
// Each AdditionalIPRangesConfig corresponds to a single subnetwork.
// Once a range is removed it will not show up in IPAllocationPolicy.
repeated AdditionalIPRangesConfig additional_ip_ranges_configs = 29
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. AutoIpamConfig contains all information related to Auto IPAM
AutoIpamConfig auto_ipam_config = 30 [(google.api.field_behavior) = OPTIONAL];
// Cluster-level network tier configuration is used to determine the default
// network tier for external IP addresses on cluster resources, such as node
// pools and load balancers.
NetworkTierConfig network_tier_config = 31;
}
// A Google Kubernetes Engine cluster.
message Cluster {
// The current status of the cluster.
enum 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 is unusable. It will be
// automatically deleted. 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;
}
// 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.
string name = 1;
// An optional description of this cluster.
string description = 2;
// 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.
int32 initial_node_count = 3 [deprecated = true];
// 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.
NodeConfig node_config = 4 [deprecated = true];
// 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.
MasterAuth master_auth = 5;
// 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.
string logging_service = 6;
// 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.
string monitoring_service = 7;
// 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.
string network = 8;
// The IP address range of the container pods in this cluster, in
// [CIDR](https://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`.
string cluster_ipv4_cidr = 9;
// Configurations for the various addons available to run in the cluster.
AddonsConfig addons_config = 10;
// The name of the Google Compute Engine
// [subnetwork](https://cloud.google.com/compute/docs/subnetworks)
// to which the cluster is connected.
string subnetwork = 11;
// The node pools associated with this cluster.
// This field should not be set if "node_config" or "initial_node_count" are
// specified.
repeated NodePool node_pools = 12;
// 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.
repeated string locations = 13;
// Kubernetes alpha features are enabled on this cluster. This includes alpha
// API groups (e.g. v1alpha1) and features that may not be production ready in
// the kubernetes version of the master and nodes.
// The cluster has no SLA for uptime and master/node upgrades are disabled.
// Alpha enabled clusters are automatically deleted thirty days after
// creation.
bool enable_kubernetes_alpha = 14;
// The list of user specified Kubernetes feature gates.
// Each string represents the activation status of a feature gate (e.g.
// "featureX=true" or "featureX=false")
repeated string alpha_cluster_feature_gates = 160;
// The resource labels for the cluster to use to annotate any related
// Google Compute Engine resources.
map<string, string> resource_labels = 15;
// The fingerprint of the set of labels for this cluster.
string label_fingerprint = 16;
// Configuration for the legacy ABAC authorization mode.
LegacyAbac legacy_abac = 18;
// Configuration options for the NetworkPolicy feature.
NetworkPolicy network_policy = 19;
// Configuration for cluster IP allocation.
IPAllocationPolicy ip_allocation_policy = 20;
// The configuration options for master authorized networks feature.
//
// Deprecated: Use
// [ControlPlaneEndpointsConfig.IPEndpointsConfig.authorized_networks_config][google.container.v1.ControlPlaneEndpointsConfig.IPEndpointsConfig.authorized_networks_config]
// instead.
MasterAuthorizedNetworksConfig master_authorized_networks_config = 22
[deprecated = true];
// Configure the maintenance policy for this cluster.
MaintenancePolicy maintenance_policy = 23;
// Configuration for Binary Authorization.
BinaryAuthorization binary_authorization = 24;
// Cluster-level autoscaling configuration.
ClusterAutoscaling autoscaling = 26;
// Configuration for cluster networking.
NetworkConfig network_config = 27;
// 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.
MaxPodsConstraint default_max_pods_constraint = 30;
// Configuration for exporting resource usages. Resource usage export is
// disabled when this config is unspecified.
ResourceUsageExportConfig resource_usage_export_config = 33;
// Configuration controlling RBAC group membership information.
AuthenticatorGroupsConfig authenticator_groups_config = 34;
// Configuration for private cluster.
PrivateClusterConfig private_cluster_config = 37;
// Configuration of etcd encryption.
DatabaseEncryption database_encryption = 38;
// Cluster-level Vertical Pod Autoscaling configuration.
VerticalPodAutoscaling vertical_pod_autoscaling = 39;
// Shielded Nodes configuration.
ShieldedNodes shielded_nodes = 40;
// 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.
ReleaseChannel release_channel = 41;
// Configuration for the use of Kubernetes Service Accounts in IAM policies.
WorkloadIdentityConfig workload_identity_config = 43;
// Configuration for issuance of mTLS keys and certificates to Kubernetes
// pods.
MeshCertificates mesh_certificates = 67;
// Configuration for the fine-grained cost management feature.
CostManagementConfig cost_management_config = 45;
// Notification configuration of the cluster.
NotificationConfig notification_config = 49;
// 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 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string zone = 101
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string endpoint = 102 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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
string initial_cluster_version = 103;
// Output only. The current software version of the master endpoint.
string current_master_version = 104
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Deprecated, use
// [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools)
// instead. The current version of the node software components. If they are
// currently at multiple versions because they're in the process of being
// upgraded, this reflects the minimum version of all nodes.
string current_node_version = 105
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the cluster was created, in
// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
string create_time = 106 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current status of this cluster.
Status status = 107 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Deprecated. Use conditions instead.
// Additional information about the current status of this
// cluster, if available.
string status_message = 108
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// 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.
int32 node_ipv4_cidr_size = 109 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The IP address range of the Kubernetes services in
// this cluster, in
// [CIDR](https://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.
string services_ipv4_cidr = 110 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Deprecated. Use node_pools.instance_group_urls.
repeated string instance_group_urls = 111
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The number of nodes currently in the cluster. Deprecated.
// Call Kubernetes API directly to retrieve node information.
int32 current_node_count = 112
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the cluster will be automatically
// deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
string expire_time = 113 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string location = 114 [(google.api.field_behavior) = OUTPUT_ONLY];
// Enable the ability to use Cloud TPUs in this cluster.
// This field is deprecated due to the deprecation of 2VM TPU. The end of life
// date for 2VM TPU is 2025-04-25.
bool enable_tpu = 115 [deprecated = true];
// Output only. The IP address range of the Cloud TPUs in this cluster, in
// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
// notation (e.g. `1.2.3.4/29`).
// This field is deprecated due to the deprecation of 2VM TPU. The end of life
// date for 2VM TPU is 2025-04-25.
string tpu_ipv4_cidr_block = 116
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Which conditions caused the current cluster state.
repeated StatusCondition conditions = 118;
// Autopilot configuration for the cluster.
Autopilot autopilot = 128;
// Output only. Unique id for the cluster.
string id = 129 [(google.api.field_behavior) = OUTPUT_ONLY];
// Default NodePool settings for the entire cluster. These settings are
// overridden if specified on the specific NodePool object.
optional NodePoolDefaults node_pool_defaults = 131;
// Logging configuration for the cluster.
LoggingConfig logging_config = 132;
// 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;
// The config for pod autoscaling.
PodAutoscaling pod_autoscaling = 138;
// 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.
string etag = 139;
// Fleet information for the cluster.
Fleet fleet = 140;
// Enable/Disable Security Posture API features for the cluster.
SecurityPostureConfig security_posture_config = 145;
// Configuration for all cluster's control plane endpoints.
ControlPlaneEndpointsConfig control_plane_endpoints_config = 146;
// Beta APIs Config
K8sBetaAPIConfig enable_k8s_beta_apis = 143;
// GKE Enterprise Configuration.
//
// Deprecated: GKE Enterprise features are now available without an Enterprise
// tier.
EnterpriseConfig enterprise_config = 149 [deprecated = true];
// Secret CSI driver configuration.
SecretManagerConfig secret_manager_config = 150;
// Enable/Disable Compliance Posture features for the cluster.
CompliancePostureConfig compliance_posture_config = 151;
// Output only. Reserved for future use.
optional bool satisfies_pzs = 152 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Reserved for future use.
optional bool satisfies_pzi = 153 [(google.api.field_behavior) = OUTPUT_ONLY];
// The Custom keys configuration for the cluster.
optional UserManagedKeysConfig user_managed_keys_config = 154;
// RBACBindingConfig allows user to restrict ClusterRoleBindings an
// RoleBindings that can be created.
optional RBACBindingConfig rbac_binding_config = 156;
// Configuration for GKE auto upgrades.
GkeAutoUpgradeConfig gke_auto_upgrade_config = 163;
// Configuration for limiting anonymous access to all endpoints except the
// health checks.
AnonymousAuthenticationConfig anonymous_authentication_config = 164;
// Configuration for Managed OpenTelemetry pipeline.
ManagedOpenTelemetryConfig managed_opentelemetry_config = 168;
}
// RBACBindingConfig allows user to restrict ClusterRoleBindings an RoleBindings
// that can be created.
message RBACBindingConfig {
// Setting this to true will allow any ClusterRoleBinding and RoleBinding
// with subjets system:anonymous or system:unauthenticated.
optional bool enable_insecure_binding_system_unauthenticated = 1;
// Setting this to true will allow any ClusterRoleBinding and RoleBinding
// with subjects system:authenticated.
optional bool enable_insecure_binding_system_authenticated = 2;
}
// UserManagedKeysConfig holds the resource address to Keys which are used
// for signing certs and token that are used for communication within cluster.
message UserManagedKeysConfig {
// The Certificate Authority Service caPool to use for the cluster CA in this
// cluster.
string cluster_ca = 10 [(google.api.resource_reference) = {
type: "privateca.googleapis.com/CaPool"
}];
// Resource path of the Certificate Authority Service caPool to use for the
// etcd API CA in this cluster.
string etcd_api_ca = 11 [(google.api.resource_reference) = {
type: "privateca.googleapis.com/CaPool"
}];
// Resource path of the Certificate Authority Service caPool to use for the
// etcd peer CA in this cluster.
string etcd_peer_ca = 12 [(google.api.resource_reference) = {
type: "privateca.googleapis.com/CaPool"
}];
// The Cloud KMS cryptoKeyVersions to use for signing service account JWTs
// issued by this cluster.
//
// Format:
// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
repeated string service_account_signing_keys = 13
[(google.api.resource_reference) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
}];
// The Cloud KMS cryptoKeyVersions to use for verifying service account JWTs
// issued by this cluster.
//
// Format:
// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
repeated string service_account_verification_keys = 14
[(google.api.resource_reference) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
}];
// The Certificate Authority Service caPool to use for the aggregation CA in
// this cluster.
string aggregation_ca = 15 [(google.api.resource_reference) = {
type: "privateca.googleapis.com/CaPool"
}];
// The Cloud KMS cryptoKey to use for Confidential Hyperdisk on the control
// plane nodes.
string control_plane_disk_encryption_key = 16
[(google.api.resource_reference) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
}];
// Output only. All of the versions of the Cloud KMS cryptoKey that are used
// by Confidential Hyperdisks on the control plane nodes.
repeated string control_plane_disk_encryption_key_versions = 18
[(google.api.field_behavior) = OUTPUT_ONLY];
// Resource path of the Cloud KMS cryptoKey to use for encryption of internal
// etcd backups.
string gkeops_etcd_backup_encryption_key = 17
[(google.api.resource_reference) = {
type: "cloudkms.googleapis.com/CryptoKeyVersion"
}];
}
// AnonymousAuthenticationConfig defines the settings needed to limit endpoints
// that allow anonymous authentication.
message AnonymousAuthenticationConfig {
// Mode defines the mode of anonymous authentication
// allowed in the cluster.
enum Mode {
// Default value not specified.
MODE_UNSPECIFIED = 0;
// Anonymous authentication is allowed for all endpoints.
ENABLED = 1;
// Anonymous authentication is allowed for only health check endpoints.
LIMITED = 2;
}
// Defines the mode of limiting anonymous access in the cluster.
Mode mode = 1;
}
// CompliancePostureConfig defines the settings needed to enable/disable
// features for the Compliance Posture.
message CompliancePostureConfig {
// Mode defines enablement mode for Compliance Posture.
enum Mode {
// Default value not specified.
MODE_UNSPECIFIED = 0;
// Disables Compliance Posture features on the cluster.
DISABLED = 1;
// Enables Compliance Posture features on the cluster.
ENABLED = 2;
}
// Defines the details of a compliance standard.
message ComplianceStandard {
// Name of the compliance standard.
optional string standard = 1;
}
// Defines the enablement mode for Compliance Posture.
optional Mode mode = 1;
// List of enabled compliance standards.
repeated ComplianceStandard compliance_standards = 2;
}
// K8sBetaAPIConfig , configuration for beta APIs
message K8sBetaAPIConfig {
// Enabled k8s beta APIs.
repeated string enabled_apis = 1;
}
// SecurityPostureConfig defines the flags needed to enable/disable features for
// the Security Posture API.
message SecurityPostureConfig {
// Mode defines enablement mode for GKE Security posture features.
enum 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;
// Applies the Security Posture off cluster Enterprise level features.
ENTERPRISE = 3;
}
// VulnerabilityMode defines enablement mode for vulnerability scanning.
enum 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;
}
// Sets which mode to use for Security Posture features.
optional Mode mode = 1;
// Sets which mode to use for vulnerability scanning.
optional VulnerabilityMode vulnerability_mode = 2;
}
// 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;
// Resource manager tag keys and values to be attached to the nodes
// for managing Compute Engine firewalls using Network Firewall Policies.
ResourceManagerTags resource_manager_tags = 2;
// NodeKubeletConfig controls the defaults for autoprovisioned node-pools.
//
// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
NodeKubeletConfig node_kubelet_config = 3;
// Output only. Configuration options for Linux nodes.
LinuxNodeConfig linux_node_config = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Subset of Nodepool message that has defaults.
message NodePoolDefaults {
// Subset of NodeConfig message that has defaults.
NodeConfigDefaults node_config_defaults = 1;
}
// Subset of NodeConfig message that has defaults.
message NodeConfigDefaults {
// GCFS (Google Container File System, also known as Riptide) options.
GcfsConfig gcfs_config = 1;
// Logging configuration for node pools.
NodePoolLoggingConfig logging_config = 3;
// Parameters for containerd customization.
ContainerdConfig containerd_config = 4;
// NodeKubeletConfig controls the defaults for new node-pools.
//
// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
NodeKubeletConfig node_kubelet_config = 6;
}
// 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.
message ClusterUpdate {
// 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
string desired_node_version = 4;
// 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.
string desired_monitoring_service = 5;
// Configurations for the various addons available to run in the cluster.
AddonsConfig desired_addons_config = 6;
// The node pool to be upgraded. This field is mandatory if
// "desired_node_version", "desired_image_family" or
// "desired_node_pool_autoscaling" is specified and there is more than one
// node pool on the cluster.
string desired_node_pool_id = 7;
// The desired image type for the node pool.
// NOTE: Set the "desired_node_pool" field as well.
string desired_image_type = 8;
// Configuration of etcd encryption.
DatabaseEncryption desired_database_encryption = 46;
// Configuration for Workload Identity.
WorkloadIdentityConfig desired_workload_identity_config = 47;
// Configuration for issuance of mTLS keys and certificates to Kubernetes
// pods.
MeshCertificates desired_mesh_certificates = 67;
// Configuration for Shielded Nodes.
ShieldedNodes desired_shielded_nodes = 48;
// The desired configuration for the fine-grained cost management feature.
CostManagementConfig desired_cost_management_config = 49;
// DNSConfig contains clusterDNS config for this cluster.
DNSConfig desired_dns_config = 53;
// 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.
NodePoolAutoscaling desired_node_pool_autoscaling = 9;
// 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.
repeated string desired_locations = 10;
// The desired configuration options for master authorized networks feature.
//
// Deprecated: Use
// desired_control_plane_endpoints_config.ip_endpoints_config.authorized_networks_config
// instead.
MasterAuthorizedNetworksConfig desired_master_authorized_networks_config = 12
[deprecated = true];
// Cluster-level autoscaling configuration.
ClusterAutoscaling desired_cluster_autoscaling = 15;
// The desired configuration options for the Binary Authorization feature.
BinaryAuthorization desired_binary_authorization = 16;
// 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.
string desired_logging_service = 19;
// The desired configuration for exporting resource usage.
ResourceUsageExportConfig desired_resource_usage_export_config = 21;
// Cluster-level Vertical Pod Autoscaling configuration.
VerticalPodAutoscaling desired_vertical_pod_autoscaling = 22;
// The desired private cluster configuration. master_global_access_config is
// the only field that can be changed via this field.
// See also
// [ClusterUpdate.desired_enable_private_endpoint][google.container.v1.ClusterUpdate.desired_enable_private_endpoint]
// for modifying other fields within
// [PrivateClusterConfig][google.container.v1.PrivateClusterConfig].
//
// Deprecated: Use
// desired_control_plane_endpoints_config.ip_endpoints_config.global_access
// instead.
PrivateClusterConfig desired_private_cluster_config = 25 [deprecated = true];
// The desired config of Intra-node visibility.
IntraNodeVisibilityConfig desired_intra_node_visibility_config = 26;
// The desired status of whether to disable default sNAT for this cluster.
DefaultSnatStatus desired_default_snat_status = 28;
// The desired release channel configuration.
ReleaseChannel desired_release_channel = 31;
// The desired L4 Internal Load Balancer Subsetting configuration.
ILBSubsettingConfig desired_l4ilb_subsetting_config = 39;
// The desired datapath provider for the cluster.
DatapathProvider desired_datapath_provider = 50;
// The desired state of IPv6 connectivity to Google Services.
PrivateIPv6GoogleAccess desired_private_ipv6_google_access = 51;
// The desired notification configuration.
NotificationConfig desired_notification_config = 55;
// The desired authenticator groups config for the cluster.
AuthenticatorGroupsConfig desired_authenticator_groups_config = 63;
// The desired logging configuration.
LoggingConfig desired_logging_config = 64;
// 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;
// Enable/Disable private endpoint for the cluster's master.
//
// Deprecated: Use
// desired_control_plane_endpoints_config.ip_endpoints_config.enable_public_endpoint
// instead. Note that the value of enable_public_endpoint is reversed: if
// enable_private_endpoint is false, then enable_public_endpoint will be true.
optional bool desired_enable_private_endpoint = 71 [deprecated = true];
// Override the default setting of whether future created
// nodes have private IP addresses only, namely
// [NetworkConfig.default_enable_private_nodes][google.container.v1.NetworkConfig.default_enable_private_nodes]
optional bool desired_default_enable_private_nodes = 72;
// [Control plane
// endpoints][google.container.v1.Cluster.control_plane_endpoints_config]
// configuration.
ControlPlaneEndpointsConfig desired_control_plane_endpoints_config = 73;
// 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
string desired_master_version = 100;
// 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;
// The desired config for pod autoscaling.
PodAutoscaling desired_pod_autoscaling = 113;
// The desired config of Gateway API on this cluster.
GatewayAPIConfig desired_gateway_api_config = 114;
// 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.
string etag = 115;
// The desired node pool logging configuration defaults for the cluster.
NodePoolLoggingConfig desired_node_pool_logging_config = 116;
// The desired fleet configuration for the cluster.
Fleet desired_fleet = 117;
// 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.
StackType desired_stack_type = 119;
// The additional pod ranges to be added to the cluster. These pod ranges
// can be used by node pools to allocate pod IPs.
AdditionalPodRangesConfig additional_pod_ranges_config = 120;
// 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.
AdditionalPodRangesConfig removed_additional_pod_ranges_config = 121;
// Kubernetes open source beta apis enabled on the cluster. Only beta apis
K8sBetaAPIConfig enable_k8s_beta_apis = 122;
// Enable/Disable Security Posture API features for the cluster.
SecurityPostureConfig desired_security_posture_config = 124;
// The desired network performance config.
NetworkConfig.ClusterNetworkPerformanceConfig
desired_network_performance_config = 125;
// Enable/Disable FQDN Network Policy for the cluster.
optional bool desired_enable_fqdn_network_policy = 126;
// WorkloadPolicyConfig is the configuration related to GCW workload policy
WorkloadPolicyConfig desired_autopilot_workload_policy_config = 128;
// Desired Beta APIs to be enabled for cluster.
K8sBetaAPIConfig desired_k8s_beta_apis = 131;
// The desired containerd config for the cluster.
ContainerdConfig desired_containerd_config = 134;
// Enable/Disable Multi-Networking for the cluster
optional bool desired_enable_multi_networking = 135;
// The desired resource manager tags that apply to all auto-provisioned node
// pools in autopilot clusters and node auto-provisioning enabled clusters.
ResourceManagerTags desired_node_pool_auto_config_resource_manager_tags = 136;
// Specify the details of in-transit encryption.
optional InTransitEncryptionConfig desired_in_transit_encryption_config = 137;
// Enable/Disable Cilium Clusterwide Network Policy for the cluster.
optional bool desired_enable_cilium_clusterwide_network_policy = 138;
// Enable/Disable Secret Manager Config.
optional SecretManagerConfig desired_secret_manager_config = 139;
// Enable/Disable Compliance Posture features for the cluster.
optional CompliancePostureConfig desired_compliance_posture_config = 140;
// The desired node kubelet config for the cluster.
NodeKubeletConfig desired_node_kubelet_config = 141;
// The desired node kubelet config for all auto-provisioned node pools
// in autopilot clusters and node auto-provisioning enabled clusters.
NodeKubeletConfig desired_node_pool_auto_config_kubelet_config = 142;
// The Custom keys configuration for the cluster.
//
// This field is deprecated.
// Use
// [ClusterUpdate.desired_user_managed_keys_config][google.container.v1.ClusterUpdate.desired_user_managed_keys_config]
// instead.
UserManagedKeysConfig user_managed_keys_config = 143 [deprecated = true];
// RBACBindingConfig allows user to restrict ClusterRoleBindings an
// RoleBindings that can be created.
optional RBACBindingConfig desired_rbac_binding_config = 144;
// The desired config for additional subnetworks attached to the cluster.
DesiredAdditionalIPRangesConfig desired_additional_ip_ranges_config = 145;
// The desired enterprise configuration for the cluster.
//
// Deprecated: GKE Enterprise features are now available without an Enterprise
// tier.
DesiredEnterpriseConfig desired_enterprise_config = 147 [deprecated = true];
// AutoIpamConfig contains all information related to Auto IPAM
AutoIpamConfig desired_auto_ipam_config = 148;
// Enable/Disable L4 LB VPC firewall reconciliation for the cluster.
optional bool desired_disable_l4_lb_firewall_reconciliation = 149;
// The desired Linux node config for all auto-provisioned node pools
// in autopilot clusters and node auto-provisioning enabled clusters.
//
// Currently only `cgroup_mode` can be set here.
LinuxNodeConfig desired_node_pool_auto_config_linux_node_config = 150;
// The desired user managed keys config for the cluster.
UserManagedKeysConfig desired_user_managed_keys_config = 152;
// Configuration for limiting anonymous access to all endpoints except the
// health checks.
AnonymousAuthenticationConfig desired_anonymous_authentication_config = 156;
// Configuration for GKE auto upgrade.
GkeAutoUpgradeConfig gke_auto_upgrade_config = 154;
// The desired network tier configuration for the cluster.
NetworkTierConfig desired_network_tier_config = 155;
// The desired privileged admission config for the cluster.
PrivilegedAdmissionConfig desired_privileged_admission_config = 159;
// The desired managed open telemetry configuration.
ManagedOpenTelemetryConfig desired_managed_opentelemetry_config = 163;
}
// AdditionalPodRangesConfig is the configuration for additional pod secondary
// ranges supporting the ClusterUpdate message.
message AdditionalPodRangesConfig {
// Name for pod secondary ipv4 range which has the actual range defined ahead.
repeated string pod_range_names = 1;
// Output only. Information for additional pod range.
repeated RangeInfo pod_range_info = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// AdditionalIPRangesConfig is the configuration for individual additional
// subnetwork attached to the cluster
message AdditionalIPRangesConfig {
// Additional subnet with DRAINING status will not be selected during new node
// pool creation. To undrain the draining status, update the cluster to set
// the sunbet to ACTIVE status. To remove the additional subnet, use the
// update cluster API to remove the subnet from the
// desired_additional_ip_ranges list. IP ranges can be removed regardless of
// its status, as long as no node pools are using them.
enum Status {
// Not set, same as ACTIVE.
STATUS_UNSPECIFIED = 0;
// ACTIVE status indicates that the subnet is available for new node pool
// creation.
ACTIVE = 1;
// DRAINING status indicates that the subnet is not used for new node pool
// creation.
DRAINING = 2;
}
// Name of the subnetwork. This can be the full path of the subnetwork or
// just the name.
// Example1: my-subnet
// Example2: projects/gke-project/regions/us-central1/subnetworks/my-subnet
string subnetwork = 1;
// List of secondary ranges names within this subnetwork that can be used for
// pod IPs.
// Example1: gke-pod-range1
// Example2: gke-pod-range1,gke-pod-range2
repeated string pod_ipv4_range_names = 2;
// Draining status of the additional subnet.
Status status = 3;
}
// DesiredAdditionalIPRangesConfig is a wrapper used for cluster update
// operation and contains multiple AdditionalIPRangesConfigs.
message DesiredAdditionalIPRangesConfig {
// List of additional IP ranges configs where each AdditionalIPRangesConfig
// corresponds to one subnetwork's IP ranges
repeated AdditionalIPRangesConfig additional_ip_ranges_configs = 1;
}
// AutoIpamConfig contains all information related to Auto IPAM
message AutoIpamConfig {
// The flag that enables Auto IPAM on this cluster
optional bool enabled = 1;
}
// RangeInfo contains the range name and the range utilization by this cluster.
message RangeInfo {
// Output only. Name of a range.
string range_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The utilization of the range.
double utilization = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// DesiredEnterpriseConfig is a wrapper used for updating enterprise_config.
//
// Deprecated: GKE Enterprise features are now available without an Enterprise
// tier.
message DesiredEnterpriseConfig {
option deprecated = true;
// desired_tier specifies the desired tier of the cluster.
EnterpriseConfig.ClusterTier desired_tier = 1;
}
// This operation resource represents operations that may have happened or are
// happening on the cluster. All fields are output only.
message Operation {
// Current status of the operation.
enum 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;
}
// Operation type categorizes the operation.
enum 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][google.container.v1.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][google.container.v1.Cluster.Status.ERROR] and the deletion
// will be automatically retried until completed.
DELETE_CLUSTER = 2;
// The [cluster
// version][google.container.v1.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
// [progress][google.container.v1.Operation.progress] field and may be
// [canceled][google.container.v1.ClusterManager.CancelOperation].
//
// 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 [manamagent][google.container.v1.NodePool.management]
// 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
// [UPGRADE_NODES][google.container.v1.Operation.Type.UPGRADE_NODES].
AUTO_UPGRADE_NODES = 11 [deprecated = true];
// Unused. Updating labels uses
// [UPDATE_CLUSTER][google.container.v1.Operation.Type.UPDATE_CLUSTER].
SET_LABELS = 12 [deprecated = true];
// Unused. Updating master auth uses
// [UPDATE_CLUSTER][google.container.v1.Operation.Type.UPDATE_CLUSTER].
SET_MASTER_AUTH = 13 [deprecated = true];
// 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
// [UPDATE_CLUSTER][google.container.v1.Operation.Type.UPDATE_CLUSTER].
SET_NETWORK_POLICY = 15 [deprecated = true];
// Unused. Updating maintenance policy uses
// [UPDATE_CLUSTER][google.container.v1.Operation.Type.UPDATE_CLUSTER].
SET_MAINTENANCE_POLICY = 16 [deprecated = true];
// 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;
}
// Output only. The server-assigned ID for the operation.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. 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.
string zone = 2
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The operation type.
Type operation_type = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current status of the operation.
Status status = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Detailed operation progress, if available.
string detail = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. If an error has occurred, a textual description of the error.
// Deprecated. Use the field error instead.
string status_message = 5
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Server-defined URI for the operation. Example:
// `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
string self_link = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. 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`
string target_link = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string location = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the operation started, in
// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
string start_time = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the operation completed, in
// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
string end_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Progress information for an operation.
OperationProgress progress = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Which conditions caused the current cluster state.
// Deprecated. Use field error instead.
repeated StatusCondition cluster_conditions = 13 [deprecated = true];
// Which conditions caused the current node pool state.
// Deprecated. Use field error instead.
repeated StatusCondition nodepool_conditions = 14 [deprecated = true];
// The error result of the operation in case of failure.
google.rpc.Status error = 15;
}
// Information about operation (or operation stage) progress.
message OperationProgress {
// Progress metric is (string, int|float|string) pair.
message Metric {
// Required. Metric name, e.g., "nodes total", "percent done".
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Strictly one of the values is required.
oneof value {
// For metrics with integer value.
int64 int_value = 2;
// For metrics with floating point value.
double double_value = 3;
// For metrics with custom values (ratios, visual progress, etc.).
string string_value = 4;
}
}
// A non-parameterized string describing an operation stage.
// Unset for single-stage operations.
string name = 1;
// Status of an operation stage.
// Unset for single-stage operations.
Operation.Status status = 2;
// 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}]
repeated Metric metrics = 3;
// Substages of an operation or a stage.
repeated OperationProgress stages = 4;
}
// CreateClusterRequest creates a cluster.
message CreateClusterRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Required. A [cluster
// resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters)
Cluster cluster = 3 [(google.api.field_behavior) = REQUIRED];
// The parent (project and location) where the cluster will be created.
// Specified in the format `projects/*/locations/*`.
string parent = 5;
}
// GetClusterRequest gets the settings of a cluster.
message GetClusterRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to retrieve.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// The name (project, location, cluster) of the cluster to retrieve.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 5;
}
// UpdateClusterRequest updates the settings of a cluster.
message UpdateClusterRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. A description of the update.
ClusterUpdate update = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to update.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 5;
}
// UpdateNodePoolRequests update a node pool's image and/or version.
message UpdateNodePoolRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to upgrade.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// 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
string node_version = 5 [(google.api.field_behavior) = REQUIRED];
// 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.
string image_type = 6 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster, node pool) of the node pool to
// update. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*`.
string name = 8;
// 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.
//
// Warning: It is recommended to update node pool locations in a standalone
// API call. Do not combine a location update with changes to other fields
// (such as `tags`, `labels`, `taints`, etc.) in the same request.
// Otherwise, the API performs a structural modification where changes to
// other fields will only apply to newly created nodes and will not be
// applied to existing nodes in the node pool. To ensure all nodes are updated
// consistently, use a separate API call for location changes.
repeated string locations = 13;
// The desired workload metadata config for the node pool.
WorkloadMetadataConfig workload_metadata_config = 14;
// 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;
// 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.
string etag = 30;
// Enable or disable NCCL fast socket for the node pool.
FastSocket fast_socket = 31;
// Logging configuration.
NodePoolLoggingConfig logging_config = 32;
// The resource labels for the node pool to use to annotate any related
// Google Compute Engine resources.
ResourceLabels resource_labels = 33;
// Parameters that can be configured on Windows nodes.
WindowsNodeConfig windows_node_config = 34;
// 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.
repeated AcceleratorConfig accelerators = 35;
// Optional. The desired [Google Compute Engine machine
// type](https://cloud.google.com/compute/docs/machine-types)
// for nodes in the node pool. Initiates an upgrade operation that migrates
// the nodes in the node pool to the specified machine type.
string machine_type = 36 [(google.api.field_behavior) = OPTIONAL];
// Optional. The desired disk type (e.g. 'pd-standard', 'pd-ssd' or
// 'pd-balanced') for nodes in the node pool.
// Initiates an upgrade operation that migrates the nodes in the
// node pool to the specified disk type.
string disk_type = 37 [(google.api.field_behavior) = OPTIONAL];
// Optional. The desired disk size for nodes in the node pool specified in GB.
// The smallest allowed disk size is 10GB.
// Initiates an upgrade operation that migrates the nodes in the
// node pool to the specified disk size.
int64 disk_size_gb = 38 [(google.api.field_behavior) = OPTIONAL];
// 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.
ResourceManagerTags resource_manager_tags = 39;
// The desired containerd config for nodes in the node pool.
// Initiates an upgrade operation that recreates the nodes with the new
// config.
ContainerdConfig containerd_config = 40;
// Specifies the configuration of queued provisioning.
NodePool.QueuedProvisioning queued_provisioning = 42;
// List of Storage Pools where boot disks are provisioned.
// Existing Storage Pools will be replaced with storage-pools.
repeated string storage_pools = 43;
// The maximum duration for the nodes to exist.
// If unspecified, the nodes can exist indefinitely.
google.protobuf.Duration max_run_duration = 45;
// Flex Start flag for enabling Flex Start VM.
optional bool flex_start = 46;
// The desired boot disk config for nodes in the node pool.
// Initiates an upgrade operation that migrates the nodes in the
// node pool to the specified boot disk config.
BootDisk boot_disk = 47;
// The desired node drain configuration for nodes in the node pool.
NodePool.NodeDrainConfig node_drain_config = 48;
// Consolidation delay defines duration after which the Cluster Autoscaler can
// scale down underutilized nodes. If not set, nodes are scaled down by
// default behavior, i.e. according to the chosen autoscaling profile.
google.protobuf.Duration consolidation_delay = 49;
}
// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
message SetNodePoolAutoscalingRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to upgrade.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// Required. Autoscaling configuration for the node pool.
NodePoolAutoscaling autoscaling = 5 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster, node pool) of the node pool to set
// autoscaler settings. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*`.
string name = 6;
}
// SetLoggingServiceRequest sets the logging service of a cluster.
message SetLoggingServiceRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// 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.
string logging_service = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to set logging.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 5;
}
// SetMonitoringServiceRequest sets the monitoring service of a cluster.
message SetMonitoringServiceRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// 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.
string monitoring_service = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to set monitoring.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
}
// SetAddonsConfigRequest sets the addons associated with the cluster.
message SetAddonsConfigRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. The desired configurations for the various addons available to
// run in the cluster.
AddonsConfig addons_config = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to set addons.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
}
// SetLocationsRequest sets the locations of the cluster.
message SetLocationsRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// 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.
repeated string locations = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to set locations.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
}
// UpdateMasterRequest updates the master of the cluster.
message UpdateMasterRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// 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
string master_version = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to update.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 7;
}
// SetMasterAuthRequest updates the admin password of a cluster.
message SetMasterAuthRequest {
// Operation type: what type update to perform.
enum 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;
}
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to upgrade.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. The exact form of action to be taken on the master auth.
Action action = 4 [(google.api.field_behavior) = REQUIRED];
// Required. A description of the update.
MasterAuth update = 5 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster) of the cluster to set auth.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 7;
}
// DeleteClusterRequest deletes a cluster.
message DeleteClusterRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to delete.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// The name (project, location, cluster) of the cluster to delete.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 4;
}
// ListClustersRequest lists clusters.
message ListClustersRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// The parent (project and location) where the clusters will be listed.
// Specified in the format `projects/*/locations/*`.
// Location "-" matches all zones and all regions.
string parent = 4;
}
// ListClustersResponse is the result of ListClustersRequest.
message ListClustersResponse {
// A list of clusters in the project in the specified zone, or
// across all ones.
repeated Cluster clusters = 1;
// If any zones are listed here, the list of clusters returned
// may be missing those zones.
repeated string missing_zones = 2;
}
// GetOperationRequest gets a single operation.
message GetOperationRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The server-assigned `name` of the operation.
// This field has been deprecated and replaced by the name field.
string operation_id = 3 [deprecated = true];
// The name (project, location, operation id) of the operation to get.
// Specified in the format `projects/*/locations/*/operations/*`.
string name = 5;
}
// ListOperationsRequest lists operations.
message ListOperationsRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// The parent (project and location) where the operations will be listed.
// Specified in the format `projects/*/locations/*`.
// Location "-" matches all zones and all regions.
string parent = 4;
}
// CancelOperationRequest cancels a single operation.
message CancelOperationRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The server-assigned `name` of the operation.
// This field has been deprecated and replaced by the name field.
string operation_id = 3 [deprecated = true];
// The name (project, location, operation id) of the operation to cancel.
// Specified in the format `projects/*/locations/*/operations/*`.
string name = 4;
}
// ListOperationsResponse is the result of ListOperationsRequest.
message ListOperationsResponse {
// A list of operations in the project in the specified zone.
repeated Operation operations = 1;
// If any zones are listed here, the list of operations returned
// may be missing the operations from those zones.
repeated string missing_zones = 2;
}
// Gets the current Kubernetes Engine service configuration.
message GetServerConfigRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// The name (project and location) of the server config to get,
// specified in the format `projects/*/locations/*`.
string name = 4;
}
// Kubernetes Engine service configuration.
message ServerConfig {
// ReleaseChannelConfig exposes configuration for a release channel.
message ReleaseChannelConfig {
// The release channel this configuration applies to.
ReleaseChannel.Channel channel = 1;
// The default version for newly created clusters on the channel.
string default_version = 2;
// List of valid versions for the channel.
repeated string valid_versions = 4;
// The auto upgrade target version for clusters on the channel.
string upgrade_target_version = 5;
}
// Version of Kubernetes the service deploys by default.
string default_cluster_version = 1;
// List of valid node upgrade target versions, in descending order.
repeated string valid_node_versions = 3;
// Default image type.
string default_image_type = 4;
// List of valid image types.
repeated string valid_image_types = 5;
// List of valid master versions, in descending order.
repeated string valid_master_versions = 6;
// List of release channel configurations.
repeated ReleaseChannelConfig channels = 9;
}
// CreateNodePoolRequest creates a node pool for a cluster.
message CreateNodePoolRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the parent field.
string cluster_id = 3 [deprecated = true];
// Required. The node pool to create.
NodePool node_pool = 4 [(google.api.field_behavior) = REQUIRED];
// The parent (project, location, cluster name) where the node pool will be
// created. Specified in the format
// `projects/*/locations/*/clusters/*`.
string parent = 6;
}
// DeleteNodePoolRequest deletes a node pool for a cluster.
message DeleteNodePoolRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to delete.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// The name (project, location, cluster, node pool id) of the node pool to
// delete. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*`.
string name = 6;
}
// ListNodePoolsRequest lists the node pool(s) for a cluster.
message ListNodePoolsRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the parent field.
string cluster_id = 3 [deprecated = true];
// The parent (project, location, cluster name) where the node pools will be
// listed. Specified in the format `projects/*/locations/*/clusters/*`.
string parent = 5;
}
// GetNodePoolRequest retrieves a node pool for a cluster.
message GetNodePoolRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// The name (project, location, cluster, node pool id) of the node pool to
// get. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*`.
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 blue 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;
}
// Autoscaled rollout policy utilizes the cluster autoscaler during
// blue-green upgrade to scale both the blue and green pools.
message AutoscaledRolloutPolicy {
// Optional. Time to wait after cordoning the blue pool before draining the
// nodes. Defaults to 3 days. The value can be set between 0 and 7 days,
// inclusive.
google.protobuf.Duration wait_for_drain_duration = 1
[(google.api.field_behavior) = OPTIONAL];
}
// 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;
// Autoscaled policy for cluster autoscaler enabled blue-green upgrade.
AutoscaledRolloutPolicy autoscaled_rollout_policy = 3;
}
// 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
// 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.
message NodePool {
// These upgrade settings control the level of parallelism and the level of
// disruption caused by an upgrade.
//
// maxUnavailable controls the number of nodes that can be simultaneously
// unavailable.
//
// maxSurge controls the number of additional nodes that can be added to the
// node pool temporarily for the time of the upgrade to increase the number of
// available nodes.
//
// (maxUnavailable + maxSurge) determines the level of parallelism (how many
// nodes are being upgraded at the same time).
//
// Note: upgrades inevitably introduce some disruption since workloads need to
// be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
// this holds true. (Disruption stays within the limits of
// PodDisruptionBudget, if it is configured.)
//
// Consider a hypothetical node pool with 5 nodes having maxSurge=2,
// maxUnavailable=1. This means the upgrade process upgrades 3 nodes
// simultaneously. It creates 2 additional (upgraded) nodes, then it brings
// down 3 old (not yet upgraded) nodes at the same time. This ensures that
// there are always at least 4 nodes available.
//
// These upgrade settings configure the upgrade strategy for the node pool.
// Use strategy to switch between the strategies applied to the node pool.
//
// If the strategy is ROLLING, use max_surge and max_unavailable to control
// the level of parallelism and the level of disruption caused by upgrade.
// 1. maxSurge controls the number of additional nodes that can be added to
// the node pool temporarily for the time of the upgrade to increase the
// number of available nodes.
// 2. maxUnavailable controls the number of nodes that can be simultaneously
// unavailable.
// 3. (maxUnavailable + maxSurge) determines the level of parallelism (how
// many nodes are being upgraded at the same time).
//
// If the strategy is BLUE_GREEN, use blue_green_settings to configure the
// blue-green upgrade related settings.
// 1. standard_rollout_policy is the default policy. The policy is used to
// control the way blue pool gets drained. The draining is executed in the
// batch mode. The batch size could be specified as either percentage of the
// node pool size or the number of nodes. batch_soak_duration is the soak
// time after each batch gets drained.
// 2. node_pool_soak_duration is the soak time after all blue nodes are
// drained. After this period, the blue pool nodes will be deleted.
message UpgradeSettings {
// The maximum number of nodes that can be created beyond the current size
// of the node pool during the upgrade process.
int32 max_surge = 1;
// The maximum number of nodes that can be simultaneously unavailable during
// 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.
enum 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;
}
// PlacementPolicy defines the placement policy used by the node pool.
message PlacementPolicy {
// Type defines the type of placement policy.
enum 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;
}
// The type of placement.
Type type = 1;
// Optional. TPU placement topology for pod slice node pool.
// https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
string tpu_topology = 2 [(google.api.field_behavior) = OPTIONAL];
// 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.
string policy_name = 3;
}
// QueuedProvisioning defines the queued provisioning used by the node pool.
message QueuedProvisioning {
// Denotes that this nodepool is QRM specific, meaning nodes can be only
// obtained through queuing via the Cluster Autoscaler ProvisioningRequest
// API.
bool enabled = 1;
}
// NodeDrainConfig contains the node drain related configurations for this
// nodepool.
message NodeDrainConfig {
// Whether to respect PDB during node pool deletion.
optional bool respect_pdb_during_node_pool_deletion = 3;
}
// The name of the node pool.
string name = 1;
// The node configuration of the pool.
NodeConfig config = 2;
// 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.
int32 initial_node_count = 3;
// 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.
repeated string locations = 13;
// Networking configuration for this NodePool. If specified, it overrides the
// cluster-level defaults.
NodeNetworkConfig network_config = 14;
// Output only. Server-defined URL for the resource.
string self_link = 100 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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).
string version = 101;
// 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
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The status of the nodes in this pool instance.
Status status = 103 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Deprecated. Use conditions instead.
// Additional information about the current status of this
// node pool instance, if available.
string status_message = 104
[deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY];
// Autoscaler configuration for this NodePool. Autoscaler is enabled
// only if a valid configuration is present.
NodePoolAutoscaling autoscaling = 4;
// NodeManagement configuration for this NodePool.
NodeManagement management = 5;
// The constraint on the maximum number of pods that can be run
// simultaneously on a node in the node pool.
MaxPodsConstraint max_pods_constraint = 6;
// Which conditions caused the current node pool state.
repeated StatusCondition conditions = 105;
// Output only. The pod CIDR block size per node in this node pool.
int32 pod_ipv4_cidr_size = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Upgrade settings control disruption and speed of the upgrade.
UpgradeSettings upgrade_settings = 107;
// Specifies the node placement policy.
PlacementPolicy placement_policy = 108;
// Output only. Update info contains relevant information during a node
// pool update.
UpdateInfo update_info = 109 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string etag = 110;
// Specifies the configuration of queued provisioning.
QueuedProvisioning queued_provisioning = 112;
// Enable best effort provisioning for nodes
BestEffortProvisioning best_effort_provisioning = 113;
// Specifies the node drain configuration for this node pool.
NodeDrainConfig node_drain_config = 116;
}
// NodeManagement defines the set of node management services turned on for the
// node pool.
message NodeManagement {
// A flag that specifies whether node auto-upgrade is enabled for the node
// pool. If enabled, node auto-upgrade helps keep the nodes in your node pool
// up to date with the latest release version of Kubernetes.
bool auto_upgrade = 1;
// A flag that specifies whether the node auto-repair is enabled for the node
// pool. If enabled, the nodes in this node pool will be monitored and, if
// they fail health checks too many times, an automatic repair action will be
// triggered.
bool auto_repair = 2;
// Specifies the Auto Upgrade knobs for the node pool.
AutoUpgradeOptions upgrade_options = 10;
}
// Best effort provisioning.
message BestEffortProvisioning {
// 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
bool enabled = 1;
// 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.
int32 min_provision_nodes = 2;
}
// AutoUpgradeOptions defines the set of options for the user to control how
// the Auto Upgrades will proceed.
message AutoUpgradeOptions {
// 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.
string auto_upgrade_start_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. This field is set when upgrades are about to commence
// with the description of the upgrade.
string description = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// MaintenancePolicy defines the maintenance policy to be used for the cluster.
message MaintenancePolicy {
// Specifies the maintenance window in which maintenance may be performed.
MaintenanceWindow window = 1;
// 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.
string resource_version = 3;
}
// MaintenanceWindow defines the maintenance window to be used for the cluster.
message MaintenanceWindow {
oneof policy {
// DailyMaintenanceWindow specifies a daily maintenance operation window.
DailyMaintenanceWindow daily_maintenance_window = 2;
// 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.
RecurringTimeWindow recurring_window = 3;
}
// Exceptions to maintenance window. Non-emergency maintenance should not
// occur in these windows.
map<string, TimeWindow> maintenance_exclusions = 4;
}
// Represents an arbitrary window of time.
message TimeWindow {
oneof options {
// MaintenanceExclusionOptions provides maintenance exclusion related
// options.
MaintenanceExclusionOptions maintenance_exclusion_options = 3;
}
// The time that the window first starts.
google.protobuf.Timestamp start_time = 1;
// The time that the window ends. The end time should take place after the
// start time.
google.protobuf.Timestamp end_time = 2;
}
// Represents the Maintenance exclusion option.
message MaintenanceExclusionOptions {
// Scope of exclusion.
enum 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;
}
// EndTimeBehavior specifies the behavior of the exclusion end time.
enum EndTimeBehavior {
// END_TIME_BEHAVIOR_UNSPECIFIED is the default behavior, which is fixed
// end time.
END_TIME_BEHAVIOR_UNSPECIFIED = 0;
// UNTIL_END_OF_SUPPORT means the exclusion will be in effect until the end
// of the support of the cluster's current version.
UNTIL_END_OF_SUPPORT = 1;
}
// Scope specifies the upgrade scope which upgrades are blocked by the
// exclusion.
Scope scope = 1;
// EndTimeBehavior specifies the behavior of the exclusion end time.
EndTimeBehavior end_time_behavior = 2;
}
// Represents an arbitrary window of time that recurs.
message RecurringTimeWindow {
// The window of the first recurrence.
TimeWindow window = 1;
// An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how
// this window recurs. 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.
string recurrence = 2;
}
// Time window specified for daily maintenance operations.
message DailyMaintenanceWindow {
// Time within the maintenance window to start the maintenance operations.
// Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
// format "HH:MM", where HH : [00-23] and MM : [00-59] GMT.
string start_time = 2;
// Output only. Duration of the time window, automatically chosen to be
// smallest possible in the given scenario.
// Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
// format "PTnHnMnS".
string duration = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// SetNodePoolManagementRequest sets the node management properties of a node
// pool.
message SetNodePoolManagementRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to update.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to update.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// Required. NodeManagement configuration for the node pool.
NodeManagement management = 5 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster, node pool id) of the node pool to set
// management properties. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*`.
string name = 7;
}
// SetNodePoolSizeRequest sets the size of a node pool.
message SetNodePoolSizeRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to update.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to update.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// Required. The desired node count for the pool.
int32 node_count = 5 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster, node pool id) of the node pool to set
// size.
// Specified in the format `projects/*/locations/*/clusters/*/nodePools/*`.
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://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];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to rollback.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Deprecated. The name of the node pool to rollback.
// This field has been deprecated and replaced by the name field.
string node_pool_id = 4 [deprecated = true];
// The name (project, location, cluster, node pool id) of the node poll to
// 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.
message ListNodePoolsResponse {
// A list of node pools for a cluster.
repeated NodePool node_pools = 1;
}
// 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.
message ClusterAutoscaling {
// Defines possible options for autoscaling_profile field.
enum AutoscalingProfile {
// No change to autoscaling configuration.
PROFILE_UNSPECIFIED = 0;
// Prioritize optimizing utilization of resources.
OPTIMIZE_UTILIZATION = 1;
// Use default (balanced) autoscaling configuration.
BALANCED = 2;
}
// Defines possible options for Autopilot general profile.
enum AutopilotGeneralProfile {
// Use default configuration.
AUTOPILOT_GENERAL_PROFILE_UNSPECIFIED = 0;
// Avoid extra IP consumption.
NO_PERFORMANCE = 1;
}
// Enables automatic node pool creation and deletion.
bool enable_node_autoprovisioning = 1;
// Contains global constraints regarding minimum and maximum
// amount of resources in the cluster.
repeated ResourceLimit resource_limits = 2;
// Defines autoscaling behaviour.
AutoscalingProfile autoscaling_profile = 3;
// AutoprovisioningNodePoolDefaults contains defaults for a node pool
// created by NAP.
AutoprovisioningNodePoolDefaults autoprovisioning_node_pool_defaults = 4;
// 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.
repeated string autoprovisioning_locations = 5;
// Default compute class is a configuration for default compute class.
DefaultComputeClassConfig default_compute_class_config = 9;
// Autopilot general profile for the cluster, which defines the
// configuration for the cluster.
AutopilotGeneralProfile autopilot_general_profile = 14;
}
// AutoprovisioningNodePoolDefaults contains defaults for a node pool created
// by NAP.
message AutoprovisioningNodePoolDefaults {
// Scopes that are used by NAP when creating node pools.
repeated string oauth_scopes = 1;
// The Google Cloud Platform Service Account to be used by the node VMs.
string service_account = 2;
// Specifies the upgrade settings for NAP created node pools
NodePool.UpgradeSettings upgrade_settings = 3;
// Specifies the node management options for NAP created node-pools.
NodeManagement management = 4;
// 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 [deprecated = true];
// 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.
int32 disk_size_gb = 6;
// 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'
string disk_type = 7;
// Shielded Instance options.
ShieldedInstanceConfig shielded_instance_config = 8;
// 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
string boot_disk_kms_key = 9;
// 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.
string image_type = 10;
// DEPRECATED. Use NodePoolAutoConfig.NodeKubeletConfig instead.
optional bool insecure_kubelet_readonly_port_enabled = 13;
}
// Contains information about amount of some resource in the cluster.
// For memory, value should be in GB.
message ResourceLimit {
// Resource name "cpu", "memory" or gpu-specific string.
string resource_type = 1;
// Minimum amount of the resource in the cluster.
int64 minimum = 2;
// Maximum amount of the resource in the cluster.
int64 maximum = 3;
}
// DefaultComputeClassConfig defines default compute class
// configuration.
message DefaultComputeClassConfig {
// Enables default compute class.
bool enabled = 1;
}
// 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;
// Minimum number of nodes for one location in the node pool. Must be greater
// than or equal to 0 and less than or equal to max_node_count.
int32 min_node_count = 2;
// Maximum number of nodes for one location in the node pool. Must be >=
// min_node_count. There has to be enough quota to scale up the cluster.
int32 max_node_count = 3;
// 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 or equal
// to 0 and less than or equal to 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 or equal to
// 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
// Engine cluster, which will in turn set them for Google Compute Engine
// resources used by that cluster
message SetLabelsRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. The labels to set for that cluster.
map<string, string> resource_labels = 4
[(google.api.field_behavior) = REQUIRED];
// 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.
string label_fingerprint = 5 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster name) of the cluster to set labels.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 7;
}
// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
// a cluster.
message SetLegacyAbacRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster to update.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. Whether ABAC authorization will be enabled in the cluster.
bool enabled = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster name) of the cluster to set legacy
// abac. Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
}
// StartIPRotationRequest creates a new IP for the cluster and then performs
// 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://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];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// The name (project, location, cluster name) of the cluster to start IP
// rotation. Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
// Whether to rotate credentials during IP rotation.
bool rotate_credentials = 7;
}
// CompleteIPRotationRequest moves the cluster master back into single-IP mode.
message CompleteIPRotationRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// The name (project, location, cluster name) of the cluster to complete IP
// rotation. Specified in the format `projects/*/locations/*/clusters/*`.
string name = 7;
}
// AcceleratorConfig represents a Hardware Accelerator request.
message AcceleratorConfig {
// The number of the accelerator cards exposed to an instance.
int64 accelerator_count = 1;
// The accelerator type resource name. List of supported accelerators
// [here](https://cloud.google.com/compute/docs/gpus)
string accelerator_type = 2;
// 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).
string gpu_partition_size = 3;
// The configuration for GPU sharing options.
optional GPUSharingConfig gpu_sharing_config = 5;
// The configuration for auto installation of GPU driver.
optional GPUDriverInstallationConfig gpu_driver_installation_config = 6;
}
// 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;
// GPUs are shared between containers with NVIDIA MPS.
MPS = 2;
}
// 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;
}
// GPUDriverInstallationConfig specifies the version of GPU driver to be auto
// installed.
message GPUDriverInstallationConfig {
// The GPU driver version to install.
enum 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;
}
// Mode for how the GPU driver is installed.
optional GPUDriverVersion gpu_driver_version = 1;
}
// WorkloadMetadataConfig defines the metadata configuration to expose to
// workloads on the node pool.
message WorkloadMetadataConfig {
// Mode is the configuration for how to expose metadata to workloads running
// on the node.
enum 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;
}
// Mode is the configuration for how to expose metadata to workloads running
// on the node pool.
Mode mode = 2;
}
// SetNetworkPolicyRequest enables/disables network policy for a cluster.
message SetNetworkPolicyRequest {
// 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.
string project_id = 1 [deprecated = true];
// 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.
string zone = 2 [deprecated = true];
// Deprecated. The name of the cluster.
// This field has been deprecated and replaced by the name field.
string cluster_id = 3 [deprecated = true];
// Required. Configuration options for the NetworkPolicy feature.
NetworkPolicy network_policy = 4 [(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster name) of the cluster to set networking
// policy. Specified in the format `projects/*/locations/*/clusters/*`.
string name = 6;
}
// SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
message SetMaintenancePolicyRequest {
// Required. The Google Developers Console [project ID or project
// 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
// [zone](https://cloud.google.com/compute/docs/zones#available)
// in which the cluster resides.
string zone = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The name of the cluster to update.
string cluster_id = 3 [(google.api.field_behavior) = REQUIRED];
// Required. The maintenance policy to be set for the cluster. An empty field
// clears the existing maintenance policy.
MaintenancePolicy maintenance_policy = 4
[(google.api.field_behavior) = REQUIRED];
// The name (project, location, cluster name) of the cluster to set
// maintenance policy.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 5;
}
// StatusCondition describes why a cluster or a node pool has a certain status
// (e.g., ERROR or DEGRADED).
message StatusCondition {
// Code for each condition
enum 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.
CA_EXPIRING = 9;
// Node service account is missing permissions.
NODE_SERVICE_ACCOUNT_MISSING_PERMISSIONS = 10;
// Cloud KMS key version used for etcd level encryption has been destroyed.
// This is a permanent error.
CLOUD_KMS_KEY_DESTROYED = 11;
}
// Machine-friendly representation of the condition
// Deprecated. Use canonical_code instead.
Code code = 1 [deprecated = true];
// Human-friendly representation of the condition
string message = 2;
// Canonical code of the condition.
google.rpc.Code canonical_code = 3;
}
// NetworkConfig reports the relative names of network & subnetwork.
message NetworkConfig {
// Configuration of network bandwidth tiers
message ClusterNetworkPerformanceConfig {
// 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 NodePools in the cluster.
optional Tier total_egress_bandwidth_tier = 1;
}
// Output only. The relative name of the Google Compute Engine
// [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
// to which the cluster is connected. Example:
// projects/my-project/global/networks/my-network
string network = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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
string subnetwork = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Whether Intra-node visibility is enabled for this cluster.
// This makes same node pod to pod traffic visible for VPC network.
bool enable_intra_node_visibility = 5;
// 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.
DefaultSnatStatus default_snat_status = 7;
// Whether L4ILB Subsetting is enabled for this cluster.
bool enable_l4ilb_subsetting = 10;
// The desired datapath provider for this cluster. By default, uses the
// IPTables-based kube-proxy implementation.
DatapathProvider datapath_provider = 11;
// 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)
PrivateIPv6GoogleAccess private_ipv6_google_access = 12;
// DNSConfig contains clusterDNS config for this cluster.
DNSConfig dns_config = 13;
// ServiceExternalIPsConfig specifies if services with externalIPs field are
// blocked or not.
ServiceExternalIPsConfig service_external_ips_config = 15;
// GatewayAPIConfig contains the desired config of Gateway API on this
// cluster.
GatewayAPIConfig gateway_api_config = 16;
// Whether multi-networking is enabled for this cluster.
bool enable_multi_networking = 17;
// Network bandwidth tier configuration.
ClusterNetworkPerformanceConfig network_performance_config = 18;
// Whether FQDN Network Policy is enabled on this cluster.
optional bool enable_fqdn_network_policy = 19;
// Specify the details of in-transit encryption.
// Now named inter-node transparent encryption.
optional InTransitEncryptionConfig in_transit_encryption_config = 20;
// Whether CiliumClusterwideNetworkPolicy is enabled on this cluster.
optional bool enable_cilium_clusterwide_network_policy = 21;
// Controls whether by default nodes have private IP addresses only.
// It is invalid to specify both [PrivateClusterConfig.enablePrivateNodes][]
// and this field at the same time.
// To update the default setting, use
// [ClusterUpdate.desired_default_enable_private_nodes][google.container.v1.ClusterUpdate.desired_default_enable_private_nodes]
optional bool default_enable_private_nodes = 22;
// Disable L4 load balancer VPC firewalls to enable firewall policies.
optional bool disable_l4_lb_firewall_reconciliation = 24;
}
// GatewayAPIConfig contains the desired config of Gateway API on this cluster.
message GatewayAPIConfig {
// Channel describes if/how Gateway API should be installed and implemented in
// a cluster.
enum Channel {
// Default value.
CHANNEL_UNSPECIFIED = 0;
// Gateway API support is disabled
CHANNEL_DISABLED = 1;
// Deprecated: use CHANNEL_STANDARD instead.
// Gateway API support is enabled, experimental CRDs are installed
CHANNEL_EXPERIMENTAL = 3 [deprecated = true];
// Gateway API support is enabled, standard CRDs are installed
CHANNEL_STANDARD = 4;
}
// The Gateway API release channel to use for Gateway API.
Channel channel = 1;
}
// Config to block services with externalIPs field.
message ServiceExternalIPsConfig {
// Whether Services with ExternalIPs field are allowed or not.
bool enabled = 1;
}
// GetOpenIDConfigRequest gets the OIDC discovery document for the
// cluster. See the OpenID Connect Discovery 1.0 specification for details.
message GetOpenIDConfigRequest {
// The cluster (project, location, cluster name) to get the discovery document
// for. Specified in the format `projects/*/locations/*/clusters/*`.
string parent = 1;
}
// GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
// See the OpenID Connect Discovery 1.0 specification for details.
message GetOpenIDConfigResponse {
// OIDC Issuer.
string issuer = 1;
// JSON Web Key uri.
string jwks_uri = 2 [json_name = "jwks_uri"];
// Supported response types.
repeated string response_types_supported = 3
[json_name = "response_types_supported"];
// Supported subject types.
repeated string subject_types_supported = 4
[json_name = "subject_types_supported"];
// supported ID Token signing Algorithms.
repeated string id_token_signing_alg_values_supported = 5
[json_name = "id_token_signing_alg_values_supported"];
// Supported claims.
repeated string claims_supported = 6 [json_name = "claims_supported"];
// Supported grant types.
repeated string grant_types = 7 [json_name = "grant_types"];
}
// 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.
message GetJSONWebKeysRequest {
// The cluster (project, location, cluster name) to get keys for. Specified in
// the format `projects/*/locations/*/clusters/*`.
string parent = 1;
}
// Jwk is a JSON Web Key as specified in RFC 7517
message Jwk {
// Key Type.
string kty = 1;
// Algorithm.
string alg = 2;
// Permitted uses for the public keys.
string use = 3;
// Key ID.
string kid = 4;
// Used for RSA keys.
string n = 5;
// Used for RSA keys.
string e = 6;
// Used for ECDSA keys.
string x = 7;
// Used for ECDSA keys.
string y = 8;
// Used for ECDSA keys.
string crv = 9;
}
// GetJSONWebKeysResponse is a valid JSON Web Key Set as specified in rfc 7517
message GetJSONWebKeysResponse {
// The public component of the keys used by the cluster to sign token
// requests.
repeated Jwk keys = 1;
}
// CheckAutopilotCompatibilityRequest requests getting the blockers for the
// given operation in the cluster.
message CheckAutopilotCompatibilityRequest {
// The name (project, location, cluster) of the cluster to retrieve.
// Specified in the format `projects/*/locations/*/clusters/*`.
string name = 1;
}
// AutopilotCompatibilityIssue contains information about a specific
// compatibility issue with Autopilot mode.
message AutopilotCompatibilityIssue {
// The type of the reported issue.
enum 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;
}
// The last time when this issue was observed.
google.protobuf.Timestamp last_observation = 1;
// The constraint type of the issue.
string constraint_type = 2;
// The incompatibility type of this issue.
IssueType incompatibility_type = 3;
// The name of the resources which are subject to this issue.
repeated string subjects = 4;
// A URL to a public documentation, which addresses resolving this issue.
string documentation_url = 5;
// The description of the issue.
string description = 6;
}
// CheckAutopilotCompatibilityResponse has a list of compatibility issues.
message CheckAutopilotCompatibilityResponse {
// The list of issues for the given operation.
repeated AutopilotCompatibilityIssue issues = 1;
// The summary of the autopilot compatibility response.
string summary = 2;
}
// 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.
message ReleaseChannel {
// Possible values for 'channel'.
enum 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;
// Clusters subscribed to EXTENDED receive extended support and availability
// for versions which are known to be stable and reliable in production.
EXTENDED = 4;
}
// channel specifies which release channel the cluster is subscribed to.
Channel channel = 1;
}
// Configuration for fine-grained cost management feature.
message CostManagementConfig {
// Whether the feature is enabled or not.
bool enabled = 1;
}
// IntraNodeVisibilityConfig contains the desired config of the intra-node
// visibility on this cluster.
message IntraNodeVisibilityConfig {
// Enables intra node visibility for this cluster.
bool enabled = 1;
}
// ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer
// subsetting on this cluster.
message ILBSubsettingConfig {
// Enables l4 ILB subsetting for this cluster.
bool enabled = 1;
}
// DNSConfig contains the desired set of options for configuring clusterDNS.
message DNSConfig {
// Provider lists the various in-cluster DNS providers.
enum 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;
}
// DNSScope lists the various scopes of access to cluster DNS records.
enum 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;
}
// cluster_dns indicates which in-cluster DNS provider should be used.
Provider cluster_dns = 1;
// cluster_dns_scope indicates the scope of access to cluster DNS records.
DNSScope cluster_dns_scope = 2;
// cluster_dns_domain is the suffix used for all cluster service records.
string cluster_dns_domain = 3;
// Optional. The domain used in Additive VPC scope.
string additive_vpc_scope_dns_domain = 5
[(google.api.field_behavior) = OPTIONAL];
}
// Constraints applied to pods.
message MaxPodsConstraint {
// Constraint enforced on the max num of pods per node.
int64 max_pods_per_node = 1;
}
// Configuration for the use of Kubernetes Service Accounts in IAM policies.
message WorkloadIdentityConfig {
// The workload pool to attach all Kubernetes service accounts to.
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.
//
// 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.v1.WorkloadIdentityConfig.workload_pool]
// must be non-empty).
google.protobuf.BoolValue enable_certificates = 1;
}
// Configuration of etcd encryption.
message DatabaseEncryption {
// State of etcd encryption.
enum 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;
}
// Current State of etcd encryption.
enum CurrentState {
// Should never be set
CURRENT_STATE_UNSPECIFIED = 0;
// Secrets in etcd are encrypted.
CURRENT_STATE_ENCRYPTED = 7;
// Secrets in etcd are stored in plain text (at etcd level) - this is
// unrelated to Compute Engine level full disk encryption.
CURRENT_STATE_DECRYPTED = 2;
// Encryption (or re-encryption with a different CloudKMS key)
// of Secrets is in progress.
CURRENT_STATE_ENCRYPTION_PENDING = 3;
// Encryption (or re-encryption with a different CloudKMS key) of Secrets in
// etcd encountered an error.
CURRENT_STATE_ENCRYPTION_ERROR = 4;
// De-crypting Secrets to plain text in etcd is in progress.
CURRENT_STATE_DECRYPTION_PENDING = 5;
// De-crypting Secrets to plain text in etcd encountered an error.
CURRENT_STATE_DECRYPTION_ERROR = 6;
}
// OperationError records errors seen from CloudKMS keys
// encountered during updates to DatabaseEncryption configuration.
message OperationError {
// CloudKMS key resource that had the error.
string key_name = 1;
// Description of the error seen during the operation.
string error_message = 2;
// Time when the CloudKMS error was seen.
google.protobuf.Timestamp timestamp = 3;
}
// 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
string key_name = 1;
// The desired state of etcd encryption.
State state = 2;
// Output only. The current state of etcd encryption.
optional CurrentState current_state = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Keys in use by the cluster for decrypting
// existing objects, in addition to the key in `key_name`.
//
// Each item is a CloudKMS key resource.
repeated string decryption_keys = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Records errors seen during DatabaseEncryption update
// operations.
repeated OperationError last_operation_errors = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// ListUsableSubnetworksRequest requests the list of usable subnetworks
// available to a user for creating clusters.
message ListUsableSubnetworksRequest {
// The parent project where subnetworks are usable.
// Specified in the format `projects/*`.
string parent = 1;
// 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.
string filter = 2;
// 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)
int32 page_size = 3;
// Specifies a page token to use. Set this to the nextPageToken returned by
// previous list requests to get the next page of results.
string page_token = 4;
}
// ListUsableSubnetworksResponse is the response of
// ListUsableSubnetworksRequest.
message ListUsableSubnetworksResponse {
// A list of usable subnetworks in the specified network project.
repeated UsableSubnetwork subnetworks = 1;
// 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.
string next_page_token = 2;
}
// Secondary IP range of a usable subnetwork.
message UsableSubnetworkSecondaryRange {
// Status shows the current usage of a secondary IP range.
enum 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 cluster(s) for
// services. User-managed services range can be shared between clusters
// within the same subnetwork.
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;
}
// The name associated with this subnetwork secondary range, used when adding
// an alias IP range to a VM instance.
string range_name = 1;
// The range of IP addresses belonging to this subnetwork secondary range.
string ip_cidr_range = 2;
// This field is to determine the status of the secondary range programmably.
Status status = 3;
}
// UsableSubnetwork resource returns the subnetwork name, its associated network
// and the primary CIDR range.
message UsableSubnetwork {
// Subnetwork Name.
// Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
string subnetwork = 1;
// Network Name.
// Example: projects/my-project/global/networks/my-network
string network = 2;
// The range of internal addresses that are owned by this subnetwork.
string ip_cidr_range = 3;
// Secondary IP ranges.
repeated UsableSubnetworkSecondaryRange secondary_ip_ranges = 4;
// 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.
string status_message = 5;
}
// Configuration for exporting cluster resource usages.
message ResourceUsageExportConfig {
// Parameters for using BigQuery as the destination of resource usage export.
message BigQueryDestination {
// The ID of a BigQuery Dataset.
string dataset_id = 1;
}
// Parameters for controlling consumption metering.
message ConsumptionMeteringConfig {
// Whether to enable consumption metering for this cluster. If enabled, a
// second BigQuery table will be created to hold resource consumption
// records.
bool enabled = 1;
}
// Configuration to use BigQuery as usage export destination.
BigQueryDestination bigquery_destination = 1;
// Whether to enable network egress metering for this cluster. If enabled, a
// daemonset will be created in the cluster to meter network egress traffic.
bool enable_network_egress_metering = 2;
// Configuration to enable resource consumption metering.
ConsumptionMeteringConfig consumption_metering_config = 3;
}
// VerticalPodAutoscaling contains global, per-cluster information
// required by Vertical Pod Autoscaler to automatically adjust
// the resources of pods controlled by it.
message VerticalPodAutoscaling {
// Enables vertical pod autoscaling.
bool enabled = 1;
}
// DefaultSnatStatus contains the desired state of whether default sNAT should
// be disabled on the cluster.
message DefaultSnatStatus {
// Disables cluster default sNAT rules.
bool disabled = 1;
}
// Configuration of Shielded Nodes feature.
message ShieldedNodes {
// Whether Shielded Nodes features are enabled on all nodes in this cluster.
bool enabled = 1;
}
// Configuration of gVNIC feature.
message VirtualNIC {
// Whether gVNIC features are enabled in the node pool.
bool enabled = 1;
}
// Configuration of Fast Socket feature.
message FastSocket {
// Whether Fast Socket features are enabled in the node pool.
bool enabled = 1;
}
// GPUDirectConfig specifies the GPU direct strategy on the node pool.
message GPUDirectConfig {
// Option for GPU direct Strategies
enum GPUDirectStrategy {
// Default value. No GPU Direct strategy is enabled on the node.
GPU_DIRECT_STRATEGY_UNSPECIFIED = 0;
// GPUDirect-RDMA on A3 Ultra, and A4 machine types
RDMA = 2;
}
// The type of GPU direct strategy to enable on the node pool.
optional GPUDirectStrategy gpu_direct_strategy = 1;
}
// PrivateIPv6GoogleAccess controls whether and how the pods can communicate
// with Google Services through gRPC over IPv6.
enum 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;
}
// NotificationConfig is the configuration of notifications.
message NotificationConfig {
// Types of notifications currently supported. Can be used to filter what
// notifications are sent.
enum 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;
// Corresponds with UpgradeInfoEvent.
UPGRADE_INFO_EVENT = 4;
}
// Pub/Sub specific notification config.
message PubSub {
// Enable notifications for Pub/Sub.
bool enabled = 1;
// The desired Pub/Sub topic to which notifications will be
// sent by GKE. Format is `projects/{project}/topics/{topic}`.
string topic = 2 [
(google.api.resource_reference) = { type: "pubsub.googleapis.com/Topic" }
];
// 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
Filter filter = 3;
}
// 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
message Filter {
// Event types to allowlist.
repeated EventType event_type = 1;
}
// Notification config for Pub/Sub.
PubSub pubsub = 1;
}
// ConfidentialNodes is configuration for the confidential nodes feature, which
// makes nodes run on confidential VMs.
message ConfidentialNodes {
// The type of technology used by the confidential node.
enum ConfidentialInstanceType {
// No type specified. Do not use this value.
CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED = 0;
// AMD Secure Encrypted Virtualization.
SEV = 1;
// AMD Secure Encrypted Virtualization - Secure Nested Paging.
SEV_SNP = 2;
// Intel Trust Domain eXtension.
TDX = 3;
}
// Whether Confidential Nodes feature is enabled.
bool enabled = 1;
// Defines the type of technology used by the confidential node.
ConfidentialInstanceType confidential_instance_type = 2;
}
// UpgradeResourceType is the resource type that is upgrading. It is used
// in upgrade notifications.
enum UpgradeResourceType {
// Default value. This shouldn't be used.
UPGRADE_RESOURCE_TYPE_UNSPECIFIED = 0;
// Master / control plane
MASTER = 1;
// Node pool
NODE_POOL = 2;
}
// UpgradeEvent is a notification sent to customers by the cluster server when
// a resource is upgrading.
message UpgradeEvent {
// The resource type that is upgrading.
UpgradeResourceType resource_type = 1;
// The operation associated with this upgrade.
string operation = 2;
// The time when the operation was started.
google.protobuf.Timestamp operation_start_time = 3;
// The current version before the upgrade.
string current_version = 4;
// The target version for the upgrade.
string target_version = 5;
// Optional relative path to the resource. For example in node pool upgrades,
// the relative path of the node pool.
string resource = 6;
}
// UpgradeInfoEvent is a notification sent to customers about the upgrade
// information of a resource.
message UpgradeInfoEvent {
// The state of the upgrade.
enum State {
// STATE_UNSPECIFIED indicates the state is unspecified.
STATE_UNSPECIFIED = 0;
// STARTED indicates the upgrade has started.
STARTED = 3;
// SUCCEEDED indicates the upgrade has completed successfully.
SUCCEEDED = 4;
// FAILED indicates the upgrade has failed.
FAILED = 5;
// CANCELED indicates the upgrade has canceled.
CANCELED = 6;
}
// The type of the event.
enum EventType {
// EVENT_TYPE_UNSPECIFIED indicates the event type is unspecified.
EVENT_TYPE_UNSPECIFIED = 0;
// END_OF_SUPPORT indicates GKE version reaches end of support, check
// standard_support_end_time and extended_support_end_time for more details.
END_OF_SUPPORT = 1;
// COS_MILESTONE_VERSION_UPDATE indicates that the COS node image will
// update COS milestone version for new patch versions starting with
// the one in the description.
COS_MILESTONE_VERSION_UPDATE = 2;
// UPGRADE_LIFECYCLE indicates the event is about the upgrade lifecycle.
UPGRADE_LIFECYCLE = 3;
// DISRUPTION_EVENT indicates the event is about the disruption.
DISRUPTION_EVENT = 4;
}
// The resource type associated with the upgrade.
UpgradeResourceType resource_type = 1;
// The operation associated with this upgrade.
string operation = 2;
// The time when the operation was started.
google.protobuf.Timestamp start_time = 3;
// The time when the operation ended.
google.protobuf.Timestamp end_time = 4;
// The current version before the upgrade.
string current_version = 5;
// The target version for the upgrade.
string target_version = 6;
// Optional relative path to the resource. For example in node pool upgrades,
// the relative path of the node pool.
string resource = 7;
// Output only. The state of the upgrade.
State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// The end of standard support timestamp.
optional google.protobuf.Timestamp standard_support_end_time = 9;
// The end of extended support timestamp.
optional google.protobuf.Timestamp extended_support_end_time = 10;
// A brief description of the event.
string description = 11;
// The type of the event.
EventType event_type = 12;
// The information about the disruption event. This field is only populated
// when event_type is DISRUPTION_EVENT.
optional DisruptionEvent disruption_event = 14;
}
// DisruptionEvent is a notification sent to customers about the disruption
// event of a resource.
message DisruptionEvent {
// The type of the disruption event.
enum DisruptionType {
// DISRUPTION_TYPE_UNSPECIFIED indicates the disruption type is unspecified.
DISRUPTION_TYPE_UNSPECIFIED = 0;
// POD_NOT_ENOUGH_PDB indicates there are still running pods
// on the node during node drain because their evictions are blocked by PDB.
POD_NOT_ENOUGH_PDB = 1;
// POD_PDB_VIOLATION indicates that there are force pod
// evictions during node drain which violate the PDB.
POD_PDB_VIOLATION = 2;
}
// The namespace/name of the pod whose eviction is blocked by PDB.
message PdbBlockedPod {
// The namespace of the pod.
string namespace = 1;
// The name of the pod.
string name = 2;
}
// The type of the disruption event.
DisruptionType disruption_type = 1;
// The node whose drain is blocked by PDB. This field is set for both
// POD_PDB_VIOLATION and POD_NOT_ENOUGH_PDB event.
string pdb_blocked_node = 2;
// The pods whose evictions are blocked by PDB. This field is set for
// both POD_PDB_VIOLATION and POD_NOT_ENOUGH_PDB event.
repeated PdbBlockedPod pdb_blocked_pod = 3;
// The timeout in seconds for which the node drain is blocked by PDB.
// After this timeout, pods are forcefully evicted.
// This field is only populated when event_type is
// POD_PDB_VIOLATION.
optional google.protobuf.Duration pdb_violation_timeout = 4;
}
// UpgradeAvailableEvent is a notification sent to customers when a new
// available version is released.
message UpgradeAvailableEvent {
// The release version available for upgrade.
string version = 1;
// The resource type of the release version.
UpgradeResourceType resource_type = 2;
// The release channel of the version. If empty, it means a non-channel
// release.
ReleaseChannel release_channel = 3;
// Optional relative path to the resource. For example, the relative path of
// the node pool.
string resource = 4;
}
// SecurityBulletinEvent is a notification sent to customers when a security
// bulletin has been posted that they are vulnerable to.
message SecurityBulletinEvent {
// 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.
string resource_type_affected = 1;
// The ID of the bulletin corresponding to the vulnerability.
string bulletin_id = 2;
// The CVEs associated with this bulletin.
repeated string cve_ids = 3;
// The severity of this bulletin as it relates to GKE.
string severity = 4;
// The URI link to the bulletin on the website for more information.
string bulletin_uri = 5;
// A brief description of the bulletin. See the bulletin pointed to by the
// bulletin_uri field for an expanded description.
string brief_description = 6;
// The GKE minor versions affected by this vulnerability.
repeated string affected_supported_minors = 7;
// The GKE versions where this vulnerability is patched.
repeated string patched_versions = 8;
// 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.
string suggested_upgrade_target = 9;
// If this field is specified, it means there are manual steps that the user
// must take to make their clusters safe.
bool manual_steps_required = 10;
// The GKE versions where this vulnerability is mitigated.
repeated string mitigated_versions = 11;
}
// Autopilot is the configuration for Autopilot settings on the cluster.
message Autopilot {
// Enable Autopilot
bool enabled = 1;
// WorkloadPolicyConfig is the configuration related to GCW workload policy
WorkloadPolicyConfig workload_policy_config = 2;
// PrivilegedAdmissionConfig is the configuration related to privileged
// admission control.
PrivilegedAdmissionConfig privileged_admission_config = 4;
}
// PrivilegedAdmissionConfig stores the list of authorized allowlist
// paths for the cluster.
message PrivilegedAdmissionConfig {
// The customer allowlist Cloud Storage paths for the cluster. These paths are
// used with the `--autopilot-privileged-admission` flag to authorize
// privileged workloads in Autopilot clusters.
//
// Paths can be GKE-owned, in the format
// `gke://<partner_name>/<app_name>/<allowlist_path>`, or customer-owned, in
// the format `gs://<bucket_name>/<allowlist_path>`.
//
// Wildcards (`*`) are supported to authorize all allowlists under specific
// paths or directories. Example: `gs://my-bucket/*` will authorize all
// allowlists under the `my-bucket` bucket.
repeated string allowlist_paths = 1;
}
// WorkloadPolicyConfig is the configuration related to GCW workload policy
message WorkloadPolicyConfig {
// If true, workloads can use NET_ADMIN capability.
optional bool allow_net_admin = 1;
// If true, enables the GCW Auditor that audits workloads on
// standard clusters.
optional bool autopilot_compatibility_auditing_enabled = 2;
}
// LoggingConfig is cluster logging configuration.
message LoggingConfig {
// Logging components configuration
LoggingComponentConfig component_config = 1;
}
// LoggingComponentConfig is cluster logging component configuration.
message LoggingComponentConfig {
// GKE components exposing logs
enum 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;
// kcp-sshd
KCP_SSHD = 7;
// kcp connection logs
KCP_CONNECTION = 8;
// horizontal pod autoscaler decision logs
KCP_HPA = 9;
}
// Select components to collect logs. An empty set would disable all logging.
repeated Component enable_components = 1;
}
// RayClusterLoggingConfig specifies configuration of Ray logging.
message RayClusterLoggingConfig {
// Enable log collection for Ray clusters.
bool enabled = 1;
}
// MonitoringConfig is cluster monitoring configuration.
message MonitoringConfig {
// Monitoring components configuration
MonitoringComponentConfig component_config = 1;
// Enable Google Cloud Managed Service for Prometheus
// in the cluster.
ManagedPrometheusConfig managed_prometheus_config = 2;
// Configuration of Advanced Datapath Observability features.
AdvancedDatapathObservabilityConfig advanced_datapath_observability_config =
3;
}
// AdvancedDatapathObservabilityConfig specifies configuration of observability
// features of advanced datapath.
message AdvancedDatapathObservabilityConfig {
// Supported Relay modes
enum 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;
}
// Expose flow metrics on nodes
bool enable_metrics = 1;
// Method used to make Relay available
RelayMode relay_mode = 2;
// Enable Relay component
optional bool enable_relay = 3;
}
// RayClusterMonitoringConfig specifies monitoring configuration for Ray
// clusters.
message RayClusterMonitoringConfig {
// Enable metrics collection for Ray clusters.
bool enabled = 1;
}
// NodePoolLoggingConfig specifies logging configuration for nodepools.
message NodePoolLoggingConfig {
// Logging variant configuration.
LoggingVariantConfig variant_config = 1;
}
// LoggingVariantConfig specifies the behaviour of the logging component.
message LoggingVariantConfig {
// Logging component variants.
enum Variant {
// Default value. This shouldn't be used.
VARIANT_UNSPECIFIED = 0;
// default logging variant.
DEFAULT = 1;
// maximum logging throughput variant.
MAX_THROUGHPUT = 2;
}
// Logging variant deployed on nodes.
Variant variant = 1;
}
// MonitoringComponentConfig is cluster monitoring component configuration.
message MonitoringComponentConfig {
// GKE components exposing metrics
enum Component {
// Default value. This shouldn't be used.
COMPONENT_UNSPECIFIED = 0;
// system components
SYSTEM_COMPONENTS = 1;
// 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;
// CADVISOR
CADVISOR = 13;
// KUBELET
KUBELET = 14;
// NVIDIA Data Center GPU Manager (DCGM)
DCGM = 15;
// JobSet
JOBSET = 16;
}
// 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 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 upgrade a node pool.
// max_surge and max_unavailable determines the level of upgrade parallelism.
SURGE = 3;
// SHORT_LIVED is the dedicated upgrade strategy for
// QueuedProvisioning and flex start nodepools scaled up only by enqueueing to
// the Dynamic Workload Scheduler (DWS).
SHORT_LIVED = 5;
}
// ManagedPrometheusConfig defines the configuration for
// Google Cloud Managed Service for Prometheus.
message ManagedPrometheusConfig {
// Enable Managed Collection.
bool enabled = 1;
// GKE Workload Auto-Monitoring Configuration.
AutoMonitoringConfig auto_monitoring_config = 2;
}
// AutoMonitoringConfig defines the configuration for GKE Workload
// Auto-Monitoring.
message AutoMonitoringConfig {
// Scope for applications monitored by Auto-Monitoring
enum Scope {
// Not set.
SCOPE_UNSPECIFIED = 0;
// Auto-Monitoring is enabled for all supported applications.
ALL = 1;
// Disable Auto-Monitoring.
NONE = 2;
}
// Scope for GKE Workload Auto-Monitoring.
Scope scope = 1;
}
// PodAutoscaling is used for configuration of parameters
// for workload autoscaling.
message PodAutoscaling {
// Possible types of Horizontal Pod Autoscaling profile.
enum HPAProfile {
// HPA_PROFILE_UNSPECIFIED is used when no custom HPA profile is set.
HPA_PROFILE_UNSPECIFIED = 0;
// Customers explicitly opt-out of HPA profiles.
NONE = 1;
// PERFORMANCE is used when customers opt-in to the performance HPA profile.
// In this profile we support a higher number of HPAs per cluster and faster
// metrics collection for workload autoscaling.
PERFORMANCE = 2;
}
// Selected Horizontal Pod Autoscaling profile.
optional HPAProfile hpa_profile = 2;
}
// Fleet is the fleet configuration for the cluster.
message Fleet {
// MembershipType describes if the membership supports all features or only
// lightweight compatible ones.
enum MembershipType {
// The MembershipType is not set.
MEMBERSHIP_TYPE_UNSPECIFIED = 0;
// The membership supports only lightweight compatible features.
LIGHTWEIGHT = 1;
}
// 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.
string project = 1;
// Output only. The full resource name of the registered fleet membership of
// the cluster, in the format
// `//gkehub.googleapis.com/projects/*/locations/*/memberships/*`.
string membership = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Whether the cluster has been registered through the fleet
// API.
bool pre_registered = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// The type of the cluster's fleet membership.
MembershipType membership_type = 4;
}
// Possible values for IP stack type
enum StackType {
// Default value, will be defaulted as IPV4 only
STACK_TYPE_UNSPECIFIED = 0;
// Cluster is IPV4 only
IPV4 = 1;
// Cluster can use both IPv4 and IPv6
IPV4_IPV6 = 2;
}
// Configuration for all of the cluster's control plane endpoints.
message ControlPlaneEndpointsConfig {
// Describes the configuration of a DNS endpoint.
message DNSEndpointConfig {
// Output only. The cluster's DNS endpoint configuration.
// A DNS format address. This is accessible from the public internet.
// Ex: uid.us-central1.gke.goog.
// Always present, but the behavior may change according to the value of
// [DNSEndpointConfig.allow_external_traffic][google.container.v1.ControlPlaneEndpointsConfig.DNSEndpointConfig.allow_external_traffic].
string endpoint = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Controls whether user traffic is allowed over this endpoint. Note that
// Google-managed services may still use the endpoint even if this is false.
optional bool allow_external_traffic = 3;
// Controls whether the k8s token auth is allowed via DNS.
optional bool enable_k8s_tokens_via_dns = 5;
// Controls whether the k8s certs auth is allowed via DNS.
optional bool enable_k8s_certs_via_dns = 6;
}
// IP endpoints configuration.
message IPEndpointsConfig {
// Controls whether to allow direct IP access.
optional bool enabled = 1;
// Controls whether the control plane allows access through a public IP.
// It is invalid to specify both
// [PrivateClusterConfig.enablePrivateEndpoint][] and this field at the same
// time.
optional bool enable_public_endpoint = 2;
// Controls whether the control plane's private endpoint is accessible from
// sources in other regions.
// It is invalid to specify both
// [PrivateClusterMasterGlobalAccessConfig.enabled][google.container.v1.PrivateClusterMasterGlobalAccessConfig.enabled]
// and this field at the same time.
optional bool global_access = 3;
// Configuration of authorized networks. If enabled, restricts access to the
// control plane based on source IP.
// It is invalid to specify both
// [Cluster.masterAuthorizedNetworksConfig][] and this field at the same
// time.
MasterAuthorizedNetworksConfig authorized_networks_config = 4;
// Output only. The external IP address of this cluster's control plane.
// Only populated if enabled.
string public_endpoint = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The internal IP address of this cluster's control plane.
// Only populated if enabled.
string private_endpoint = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Subnet to provision the master's private endpoint during cluster
// creation. Specified in projects/*/regions/*/subnetworks/* format. It is
// invalid to specify both
// [PrivateClusterConfig.privateEndpointSubnetwork][] and this field at the
// same time.
string private_endpoint_subnetwork = 7;
}
// DNS endpoint configuration.
DNSEndpointConfig dns_endpoint_config = 1;
// IP endpoints configuration.
IPEndpointsConfig ip_endpoints_config = 3;
}
// Possible values for IPv6 access type
enum 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;
}
// LocalNvmeSsdBlockConfig contains configuration for using raw-block local
// NVMe SSDs
message LocalNvmeSsdBlockConfig {
// 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.
int32 local_ssd_count = 1;
}
// EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral
// storage using Local SSDs.
message EphemeralStorageLocalSsdConfig {
// 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.
int32 local_ssd_count = 1;
// Number of local SSDs to use for GKE Data Cache.
int32 data_cache_count = 2;
}
// 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.
message ResourceManagerTags {
// TagKeyValue must be in one of the following formats ([KEY]=[VALUE])
// 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}`
// 2. `{org_id}/{tag_key_name}={tag_value_name}`
// 3. `{project_id}/{tag_key_name}={tag_value_name}`
map<string, string> tags = 1;
}
// EnterpriseConfig is the cluster enterprise configuration.
//
// Deprecated: GKE Enterprise features are now available without an Enterprise
// tier.
message EnterpriseConfig {
option deprecated = true;
// Premium tiers for GKE Cluster.
//
// Deprecated: GKE Enterprise features are now available without an Enterprise
// tier.
enum ClusterTier {
option deprecated = true;
// 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;
}
// Output only. cluster_tier indicates the effective tier of the cluster.
ClusterTier cluster_tier = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// desired_tier specifies the desired tier of the cluster.
ClusterTier desired_tier = 2;
}
// SecretManagerConfig is config for secret manager enablement.
message SecretManagerConfig {
// RotationConfig is config for secret manager auto rotation.
message RotationConfig {
// Whether the rotation is enabled.
optional bool enabled = 1;
// The interval between two consecutive rotations. Default rotation interval
// is 2 minutes.
optional google.protobuf.Duration rotation_interval = 2;
}
// Enable/Disable Secret Manager Config.
optional bool enabled = 1;
// Rotation config for secret manager.
optional RotationConfig rotation_config = 2;
}
// BootDisk specifies the boot disk configuration for nodepools.
message BootDisk {
// Disk type of the boot disk.
// (i.e. Hyperdisk-Balanced, PD-Balanced, etc.)
string disk_type = 1;
// Disk size in GB. Replaces NodeConfig.disk_size_gb
int64 size_gb = 2;
// For Hyperdisk-Balanced only, the provisioned IOPS config value.
int64 provisioned_iops = 3;
// For Hyperdisk-Balanced only, the provisioned throughput config value.
int64 provisioned_throughput = 4;
}
// SecondaryBootDisk represents a persistent disk attached to a node
// with special configurations based on its mode.
message SecondaryBootDisk {
// Mode specifies how the secondary boot disk will be used.
// This triggers mode-specified logic in the control plane.
enum Mode {
// MODE_UNSPECIFIED is when mode is not set.
MODE_UNSPECIFIED = 0;
// CONTAINER_IMAGE_CACHE is for using the secondary boot disk as
// a container image cache.
CONTAINER_IMAGE_CACHE = 1;
}
// Disk mode (container image cache, etc.)
Mode mode = 1;
// Fully-qualified resource ID for an existing disk image.
string disk_image = 2;
}
// Options for in-transit encryption.
enum 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;
}
// SecondaryBootDiskUpdateStrategy is a placeholder which will be extended
// in the future to define different options for updating secondary boot disks.
message SecondaryBootDiskUpdateStrategy {}
// FetchClusterUpgradeInfoRequest fetches the upgrade information of a cluster.
message FetchClusterUpgradeInfoRequest {
// Required. The name (project, location, cluster) of the cluster to get.
// Specified in the format `projects/*/locations/*/clusters/*` or
// `projects/*/zones/*/clusters/*`.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// API request version that initiates this operation.
string version = 100;
}
// ClusterUpgradeInfo contains the upgrade information of a cluster.
message ClusterUpgradeInfo {
// AutoUpgradeStatus indicates the status of auto upgrade.
enum AutoUpgradeStatus {
// UNKNOWN indicates an unknown status.
UNKNOWN = 0;
// ACTIVE indicates an active status.
ACTIVE = 1;
// MINOR_UPGRADE_PAUSED indicates the minor version upgrade is
// paused.
MINOR_UPGRADE_PAUSED = 4;
// UPGRADE_PAUSED indicates the upgrade is paused.
UPGRADE_PAUSED = 5;
}
// AutoUpgradePausedReason indicates the reason for auto upgrade paused
// status.
enum AutoUpgradePausedReason {
// AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED indicates an unspecified reason.
AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED = 0;
// MAINTENANCE_WINDOW indicates the cluster is outside customer maintenance
// window.
MAINTENANCE_WINDOW = 1;
// MAINTENANCE_EXCLUSION_NO_UPGRADES indicates the cluster is in a
// maintenance exclusion with scope NO_UPGRADES.
MAINTENANCE_EXCLUSION_NO_UPGRADES = 5;
// MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES indicates the cluster is in a
// maintenance exclusion with scope NO_MINOR_UPGRADES.
MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES = 6;
// CLUSTER_DISRUPTION_BUDGET indicates the cluster is outside the cluster
// disruption budget.
CLUSTER_DISRUPTION_BUDGET = 4;
// CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE indicates the cluster is outside
// the cluster disruption budget for minor version upgrade.
CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE = 7;
// SYSTEM_CONFIG indicates the cluster upgrade is paused by system config.
SYSTEM_CONFIG = 8;
}
// minor_target_version indicates the target version for minor upgrade.
optional string minor_target_version = 7;
// patch_target_version indicates the target version for patch upgrade.
optional string patch_target_version = 8;
// The auto upgrade status.
repeated AutoUpgradeStatus auto_upgrade_status = 2;
// The auto upgrade paused reason.
repeated AutoUpgradePausedReason paused_reason = 3;
// The list of past auto upgrades.
repeated UpgradeDetails upgrade_details = 4;
// The cluster's current minor version's end of standard support timestamp.
optional string end_of_standard_support_timestamp = 5;
// The cluster's current minor version's end of extended support timestamp.
optional string end_of_extended_support_timestamp = 6;
}
// UpgradeDetails contains detailed information of each individual upgrade
// operation.
message UpgradeDetails {
// State indicates the state of the upgrade.
enum State {
// Upgrade state is unknown.
UNKNOWN = 0;
// Upgrade has failed with an error.
FAILED = 1;
// Upgrade has succeeded.
SUCCEEDED = 2;
// Upgrade has been canceled.
CANCELED = 3;
// Upgrade is running.
RUNNING = 4;
}
// StartType indicates the type of starting the upgrade.
enum StartType {
// Upgrade start type is unspecified.
START_TYPE_UNSPECIFIED = 0;
// Upgrade started automatically.
AUTOMATIC = 1;
// Upgrade started manually.
MANUAL = 2;
}
// Output only. The state of the upgrade.
State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// The start timestamp of the upgrade.
optional google.protobuf.Timestamp start_time = 2;
// The end timestamp of the upgrade.
optional google.protobuf.Timestamp end_time = 3;
// The version before the upgrade.
string initial_version = 4;
// The version after the upgrade.
string target_version = 5;
// The start type of the upgrade.
StartType start_type = 6;
}
// FetchNodePoolUpgradeInfoRequest fetches the upgrade information of a
// nodepool.
message FetchNodePoolUpgradeInfoRequest {
// Required. The name (project, location, cluster, nodepool) of the nodepool
// to get. Specified in the format
// `projects/*/locations/*/clusters/*/nodePools/*` or
// `projects/*/zones/*/clusters/*/nodePools/*`.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// API request version that initiates this operation.
string version = 100;
}
// NodePoolUpgradeInfo contains the upgrade information of a nodepool.
message NodePoolUpgradeInfo {
// AutoUpgradeStatus indicates the status of auto upgrade.
enum AutoUpgradeStatus {
// UNKNOWN indicates an unknown status.
UNKNOWN = 0;
// ACTIVE indicates an active status.
ACTIVE = 1;
// MINOR_UPGRADE_PAUSED indicates the minor version upgrade is
// paused.
MINOR_UPGRADE_PAUSED = 2;
// UPGRADE_PAUSED indicates the upgrade is paused.
UPGRADE_PAUSED = 3;
}
// AutoUpgradePausedReason indicates the reason for auto upgrade paused
// status.
enum AutoUpgradePausedReason {
// AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED indicates an unspecified reason.
AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED = 0;
// MAINTENANCE_WINDOW indicates the cluster is outside customer maintenance
// window.
MAINTENANCE_WINDOW = 1;
// MAINTENANCE_EXCLUSION_NO_UPGRADES indicates the cluster is in a
// maintenance exclusion with scope NO_UPGRADES.
MAINTENANCE_EXCLUSION_NO_UPGRADES = 2;
// MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES indicates the cluster is in a
// maintenance exclusion with scope NO_MINOR_UPGRADES.
MAINTENANCE_EXCLUSION_NO_MINOR_UPGRADES = 3;
// SYSTEM_CONFIG indicates the cluster upgrade is paused by system config.
SYSTEM_CONFIG = 4;
}
// minor_target_version indicates the target version for minor upgrade.
optional string minor_target_version = 1;
// patch_target_version indicates the target version for patch upgrade.
optional string patch_target_version = 2;
// The auto upgrade status.
repeated AutoUpgradeStatus auto_upgrade_status = 3;
// The auto upgrade paused reason.
repeated AutoUpgradePausedReason paused_reason = 4;
// The list of past auto upgrades.
repeated UpgradeDetails upgrade_details = 5;
// The nodepool's current minor version's end of standard support timestamp.
optional string end_of_standard_support_timestamp = 6;
// The nodepool's current minor version's end of extended support timestamp.
optional string end_of_extended_support_timestamp = 7;
}
// GkeAutoUpgradeConfig is the configuration for GKE auto upgrades.
message GkeAutoUpgradeConfig {
// PatchMode specifies how auto upgrade patch builds should be
// selected.
enum PatchMode {
// PATCH_MODE_UNSPECIFIED defaults to using the upgrade target from the
// channel's patch upgrade targets as the upgrade target for the
// version.
PATCH_MODE_UNSPECIFIED = 0;
// ACCELERATED denotes that the latest patch build in the channel should be
// used as the upgrade target for the version.
ACCELERATED = 1;
}
// PatchMode specifies how auto upgrade patch builds should be
// selected.
PatchMode patch_mode = 1;
}
// NetworkTierConfig contains network tier information.
message NetworkTierConfig {
// Network tier configuration.
enum NetworkTier {
// By default, use project-level configuration. When unspecified, the
// behavior defaults to NETWORK_TIER_DEFAULT. For cluster updates, this
// implies no action (no-op).
NETWORK_TIER_UNSPECIFIED = 0;
// Default network tier. Use project-level configuration. User can specify
// this value, meaning they want to keep the same behaviour as before
// cluster level network tier configuration is introduced. This field
// ensures backward compatibility for the network tier of cluster resources,
// such as node pools and load balancers, for their external IP addresses.
NETWORK_TIER_DEFAULT = 1;
// Premium network tier.
NETWORK_TIER_PREMIUM = 2;
// Standard network tier.
NETWORK_TIER_STANDARD = 3;
}
// Network tier configuration.
NetworkTier network_tier = 1;
}
// ManagedOpenTelemetryConfig is the configuration for the GKE Managed
// OpenTelemetry pipeline.
message ManagedOpenTelemetryConfig {
// Scope is the scope of the Managed OpenTelemetry pipeline.
enum Scope {
// SCOPE_UNSPECIFIED is when the scope is not set.
SCOPE_UNSPECIFIED = 0;
// NONE is used to disable the Managed OpenTelemetry pipeline.
NONE = 1;
// COLLECTION_AND_INSTRUMENTATION_COMPONENTS is used to enable the Managed
// OpenTelemetry pipeline for collection and instrumentation components.
COLLECTION_AND_INSTRUMENTATION_COMPONENTS = 2;
}
// Scope of the Managed OpenTelemetry pipeline.
optional Scope scope = 1;
}