Skip to content

Commit 30e2c3b

Browse files
Google APIscopybara-github
authored andcommitted
feat: add APIs for GKE Control Plane Logs
--- feat: GKE cluster's control plan/node-pool network isolation Users now can change the network isolation for your public cluster's control plane. By default, when a new public cluster is created, GKE assigns a public IP address (external endpoint) to the control plane and provisions public nodes. New APIs allows to change cluster network isolation of the control plane and/or node-pool from the internet --- feat: add nodeconfig resource_labels api --- feat: add API to enable GKE Gateway controller PiperOrigin-RevId: 486164478
1 parent e4a656d commit 30e2c3b

2 files changed

Lines changed: 90 additions & 1 deletion

File tree

google/container/v1/cluster_service.proto

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,21 @@ service ClusterManager {
493493

494494
// Parameters that can be configured on Linux nodes.
495495
message LinuxNodeConfig {
496+
// Possible cgroup modes that can be used.
497+
enum CgroupMode {
498+
// CGROUP_MODE_UNSPECIFIED is when unspecified cgroup configuration is used.
499+
// The default for the GKE node OS image will be used.
500+
CGROUP_MODE_UNSPECIFIED = 0;
501+
502+
// CGROUP_MODE_V1 specifies to use cgroupv1 for the cgroup configuration on
503+
// the node image.
504+
CGROUP_MODE_V1 = 1;
505+
506+
// CGROUP_MODE_V2 specifies to use cgroupv2 for the cgroup configuration on
507+
// the node image.
508+
CGROUP_MODE_V2 = 2;
509+
}
510+
496511
// The Linux kernel parameters to be applied to the nodes and all pods running
497512
// on the nodes.
498513
//
@@ -510,6 +525,9 @@ message LinuxNodeConfig {
510525
// net.ipv4.tcp_wmem
511526
// net.ipv4.tcp_tw_reuse
512527
map<string, string> sysctls = 1;
528+
529+
// cgroup_mode specifies the cgroup mode to be used on the node.
530+
CgroupMode cgroup_mode = 2;
513531
}
514532

515533
// Node kubelet configs.
@@ -741,6 +759,10 @@ message NodeConfig {
741759
// All the nodes in the node pool will be Confidential VM once enabled.
742760
ConfidentialNodes confidential_nodes = 35;
743761

762+
// The resource labels for the node pool to use to annotate any related
763+
// Google Compute Engine resources.
764+
map<string, string> resource_labels = 37;
765+
744766
// Logging configuration.
745767
NodePoolLoggingConfig logging_config = 38;
746768
}
@@ -811,6 +833,11 @@ message NodeNetworkConfig {
811833
// This field cannot be changed after the node pool has been created.
812834
string pod_ipv4_cidr_block = 6;
813835

836+
// Whether nodes have internal IP addresses only.
837+
// If enable_private_nodes is not specified, then the value is derived from
838+
// [cluster.privateClusterConfig.enablePrivateNodes][google.container.v1beta1.PrivateClusterConfig.enablePrivateNodes]
839+
optional bool enable_private_nodes = 9;
840+
814841
// Network bandwidth tier configuration.
815842
optional NetworkPerformanceConfig network_performance_config = 11;
816843
}
@@ -934,6 +961,13 @@ message NodeLabels {
934961
map<string, string> labels = 1;
935962
}
936963

964+
// Collection of [GCP
965+
// labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).
966+
message ResourceLabels {
967+
// Map of node label keys and node label values.
968+
map<string, string> labels = 1;
969+
}
970+
937971
// Collection of Compute Engine network tags that can be applied to a node's
938972
// underlying VM instance.
939973
message NetworkTags {
@@ -1107,6 +1141,10 @@ message PrivateClusterConfig {
11071141

11081142
// Controls master global access settings.
11091143
PrivateClusterMasterGlobalAccessConfig master_global_access_config = 8;
1144+
1145+
// Subnet to provision the master's private endpoint during cluster creation.
1146+
// Specified in projects/*/regions/*/subnetworks/* format.
1147+
string private_endpoint_subnetwork = 10;
11101148
}
11111149

11121150
// Configuration for returning group information from authenticators.
@@ -1185,6 +1223,9 @@ message MasterAuthorizedNetworksConfig {
11851223
// cidr_blocks define up to 50 external networks that could access
11861224
// Kubernetes master through HTTPS.
11871225
repeated CidrBlock cidr_blocks = 2;
1226+
1227+
// Whether master is accessbile via Google Compute Engine Public IP addresses.
1228+
optional bool gcp_public_cidrs_access_enabled = 3;
11881229
}
11891230

11901231
// Configuration for the legacy Attribute Based Access Control authorization
@@ -1881,6 +1922,9 @@ message ClusterUpdate {
18811922
// ExternalIPs field.
18821923
ServiceExternalIPsConfig desired_service_external_ips_config = 60;
18831924

1925+
// Enable/Disable private endpoint for the cluster's master.
1926+
optional bool desired_enable_private_endpoint = 71;
1927+
18841928
// The Kubernetes version to change the master to.
18851929
//
18861930
// Users may specify either explicit versions offered by
@@ -1900,6 +1944,9 @@ message ClusterUpdate {
19001944
// in autopilot clusters and node auto-provisioning enabled clusters.
19011945
NetworkTags desired_node_pool_auto_config_network_tags = 110;
19021946

1947+
// The desired config of Gateway API on this cluster.
1948+
GatewayAPIConfig desired_gateway_api_config = 114;
1949+
19031950
// The desired node pool logging configuration defaults for the cluster.
19041951
NodePoolLoggingConfig desired_node_pool_logging_config = 116;
19051952
}
@@ -2239,6 +2286,10 @@ message UpdateNodePoolRequest {
22392286

22402287
// Logging configuration.
22412288
NodePoolLoggingConfig logging_config = 32;
2289+
2290+
// The resource labels for the node pool to use to annotate any related
2291+
// Google Compute Engine resources.
2292+
ResourceLabels resource_labels = 33;
22422293
}
22432294

22442295
// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
@@ -2762,7 +2813,7 @@ message BlueGreenSettings {
27622813
message StandardRolloutPolicy {
27632814
// Blue pool size to drain in a batch.
27642815
oneof update_batch_size {
2765-
// Percentage of the bool pool nodes to drain in a batch.
2816+
// Percentage of the blue pool nodes to drain in a batch.
27662817
// The range of this field should be (0.0, 1.0].
27672818
float batch_percentage = 1;
27682819

@@ -3737,6 +3788,32 @@ message NetworkConfig {
37373788
// ServiceExternalIPsConfig specifies if services with externalIPs field are
37383789
// blocked or not.
37393790
ServiceExternalIPsConfig service_external_ips_config = 15;
3791+
3792+
// GatewayAPIConfig contains the desired config of Gateway API on this
3793+
// cluster.
3794+
GatewayAPIConfig gateway_api_config = 16;
3795+
}
3796+
3797+
// GatewayAPIConfig contains the desired config of Gateway API on this cluster.
3798+
message GatewayAPIConfig {
3799+
// Channel describes if/how Gateway API should be installed and implemented in
3800+
// a cluster.
3801+
enum Channel {
3802+
// Default value.
3803+
CHANNEL_UNSPECIFIED = 0;
3804+
3805+
// Gateway API support is disabled
3806+
CHANNEL_DISABLED = 1;
3807+
3808+
// Gateway API support is enabled, experimental CRDs are installed
3809+
CHANNEL_EXPERIMENTAL = 3;
3810+
3811+
// Gateway API support is enabled, standard CRDs are installed
3812+
CHANNEL_STANDARD = 4;
3813+
}
3814+
3815+
// The Gateway API release channel to use for Gateway API.
3816+
Channel channel = 1;
37403817
}
37413818

37423819
// Config to block services with externalIPs field.
@@ -4310,6 +4387,15 @@ message LoggingComponentConfig {
43104387

43114388
// workloads
43124389
WORKLOADS = 2;
4390+
4391+
// kube-apiserver
4392+
APISERVER = 3;
4393+
4394+
// kube-scheduler
4395+
SCHEDULER = 4;
4396+
4397+
// kube-controller-manager
4398+
CONTROLLER_MANAGER = 5;
43134399
}
43144400

43154401
// Select components to collect logs. An empty set would disable all logging.

google/container/v1/container_v1.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@ authentication:
3434
oauth:
3535
canonical_scopes: |-
3636
https://www.googleapis.com/auth/cloud-platform
37+
38+
publishing:
39+
organization: CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED

0 commit comments

Comments
 (0)