Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / container / v1alpha1 / cluster_service.proto
1 // Copyright 2017 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 syntax = "proto3";
16
17 package google.container.v1alpha1;
18
19 import "google/api/annotations.proto";
20 import "google/protobuf/empty.proto";
21
22 option go_package = "google.golang.org/genproto/googleapis/container/v1alpha1;container";
23 option java_multiple_files = true;
24 option java_outer_classname = "ClusterServiceProto";
25 option java_package = "com.google.container.v1alpha1";
26 option csharp_namespace = "Google.Cloud.Container.V1Alpha1";
27 option php_namespace = "Google\\Cloud\\Container\\V1alpha1";
28
29
30 // Google Container Engine Cluster Manager v1alpha1
31 service ClusterManager {
32   // Lists all clusters owned by a project in either the specified zone or all
33   // zones.
34   rpc ListClusters(ListClustersRequest) returns (ListClustersResponse) {
35     option (google.api.http) = { get: "/v1alpha1/{parent=projects/*/locations/*}/clusters" };
36   }
37
38   // Gets the details of a specific cluster.
39   rpc GetCluster(GetClusterRequest) returns (Cluster) {
40     option (google.api.http) = { get: "/v1alpha1/{name=projects/*/locations/*/clusters/*}" };
41   }
42
43   // Creates a cluster, consisting of the specified number and type of Google
44   // Compute Engine instances.
45   //
46   // By default, the cluster is created in the project's
47   // [default network](/compute/docs/networks-and-firewalls#networks).
48   //
49   // One firewall is added for the cluster. After cluster creation,
50   // the cluster creates routes for each node to allow the containers
51   // on that node to communicate with all other instances in the
52   // cluster.
53   //
54   // Finally, an entry is added to the project's global metadata indicating
55   // which CIDR range is being used by the cluster.
56   rpc CreateCluster(CreateClusterRequest) returns (Operation) {
57     option (google.api.http) = { post: "/v1alpha1/{parent=projects/*/locations/*}/clusters" body: "*" };
58   }
59
60   // Updates the settings of a specific cluster.
61   rpc UpdateCluster(UpdateClusterRequest) returns (Operation) {
62     option (google.api.http) = { put: "/v1alpha1/{name=projects/*/locations/*/clusters/*}" body: "*" };
63   }
64
65   // Updates the version and/or iamge type of a specific node pool.
66   rpc UpdateNodePool(UpdateNodePoolRequest) returns (Operation) {
67     option (google.api.http) = { put: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}" body: "*" };
68   }
69
70   // Sets the autoscaling settings of a specific node pool.
71   rpc SetNodePoolAutoscaling(SetNodePoolAutoscalingRequest) returns (Operation) {
72     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setAutoscaling" body: "*" };
73   }
74
75   // Sets the logging service of a specific cluster.
76   rpc SetLoggingService(SetLoggingServiceRequest) returns (Operation) {
77     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setLogging" body: "*" };
78   }
79
80   // Sets the monitoring service of a specific cluster.
81   rpc SetMonitoringService(SetMonitoringServiceRequest) returns (Operation) {
82     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setMonitoring" body: "*" };
83   }
84
85   // Sets the addons of a specific cluster.
86   rpc SetAddonsConfig(SetAddonsConfigRequest) returns (Operation) {
87     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setAddons" body: "*" };
88   }
89
90   // Sets the locations of a specific cluster.
91   rpc SetLocations(SetLocationsRequest) returns (Operation) {
92     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setLocations" body: "*" };
93   }
94
95   // Updates the master of a specific cluster.
96   rpc UpdateMaster(UpdateMasterRequest) returns (Operation) {
97     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:updateMaster" body: "*" };
98   }
99
100   // Used to set master auth materials. Currently supports :-
101   // Changing the admin password of a specific cluster.
102   // This can be either via password generation or explicitly set.
103   // Modify basic_auth.csv and reset the K8S API server.
104   rpc SetMasterAuth(SetMasterAuthRequest) returns (Operation) {
105     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setMasterAuth" body: "*" };
106   }
107
108   // Deletes the cluster, including the Kubernetes endpoint and all worker
109   // nodes.
110   //
111   // Firewalls and routes that were configured during cluster creation
112   // are also deleted.
113   //
114   // Other Google Compute Engine resources that might be in use by the cluster
115   // (e.g. load balancer resources) will not be deleted if they weren't present
116   // at the initial create time.
117   rpc DeleteCluster(DeleteClusterRequest) returns (Operation) {
118     option (google.api.http) = { delete: "/v1alpha1/{name=projects/*/locations/*/clusters/*}" };
119   }
120
121   // Lists all operations in a project in a specific zone or all zones.
122   rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
123     option (google.api.http) = { get: "/v1alpha1/{parent=projects/*/locations/*}/operations" };
124   }
125
126   // Gets the specified operation.
127   rpc GetOperation(GetOperationRequest) returns (Operation) {
128     option (google.api.http) = { get: "/v1alpha1/{name=projects/*/locations/*/operations/*}" };
129   }
130
131   // Cancels the specified operation.
132   rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
133     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/operations/*}:cancel" body: "*" };
134   }
135
136   // Returns configuration info about the Container Engine service.
137   rpc GetServerConfig(GetServerConfigRequest) returns (ServerConfig) {
138     option (google.api.http) = { get: "/v1alpha1/{name=projects/*/locations/*}/serverConfig" };
139   }
140
141   // Lists the node pools for a cluster.
142   rpc ListNodePools(ListNodePoolsRequest) returns (ListNodePoolsResponse) {
143     option (google.api.http) = { get: "/v1alpha1/{parent=projects/*/locations/*/clusters/*}/nodePools" };
144   }
145
146   // Retrieves the node pool requested.
147   rpc GetNodePool(GetNodePoolRequest) returns (NodePool) {
148     option (google.api.http) = { get: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}" };
149   }
150
151   // Creates a node pool for a cluster.
152   rpc CreateNodePool(CreateNodePoolRequest) returns (Operation) {
153     option (google.api.http) = { post: "/v1alpha1/{parent=projects/*/locations/*/clusters/*}/nodePools" body: "*" };
154   }
155
156   // Deletes a node pool from a cluster.
157   rpc DeleteNodePool(DeleteNodePoolRequest) returns (Operation) {
158     option (google.api.http) = { delete: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}" };
159   }
160
161   // Roll back the previously Aborted or Failed NodePool upgrade.
162   // This will be an no-op if the last upgrade successfully completed.
163   rpc RollbackNodePoolUpgrade(RollbackNodePoolUpgradeRequest) returns (Operation) {
164     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}:rollback" body: "*" };
165   }
166
167   // Sets the NodeManagement options for a node pool.
168   rpc SetNodePoolManagement(SetNodePoolManagementRequest) returns (Operation) {
169     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setManagement" body: "*" };
170   }
171
172   // Sets labels on a cluster.
173   rpc SetLabels(SetLabelsRequest) returns (Operation) {
174     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setResourceLabels" body: "*" };
175   }
176
177   // Enables or disables the ABAC authorization mechanism on a cluster.
178   rpc SetLegacyAbac(SetLegacyAbacRequest) returns (Operation) {
179     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setLegacyAbac" body: "*" };
180   }
181
182   // Start master IP rotation.
183   rpc StartIPRotation(StartIPRotationRequest) returns (Operation) {
184     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:startIpRotation" body: "*" };
185   }
186
187   // Completes master IP rotation.
188   rpc CompleteIPRotation(CompleteIPRotationRequest) returns (Operation) {
189     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:completeIpRotation" body: "*" };
190   }
191
192   // Sets the size of a specific node pool.
193   rpc SetNodePoolSize(SetNodePoolSizeRequest) returns (Operation) {
194     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*/nodePools/*}:setSize" body: "*" };
195   }
196
197   // Enables/Disables Network Policy for a cluster.
198   rpc SetNetworkPolicy(SetNetworkPolicyRequest) returns (Operation) {
199     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setNetworkPolicy" body: "*" };
200   }
201
202   // Sets the maintenance policy for a cluster.
203   rpc SetMaintenancePolicy(SetMaintenancePolicyRequest) returns (Operation) {
204     option (google.api.http) = { post: "/v1alpha1/{name=projects/*/locations/*/clusters/*}:setMaintenancePolicy" body: "*" };
205   }
206 }
207
208 // Parameters that describe the nodes in a cluster.
209 message NodeConfig {
210   // The name of a Google Compute Engine [machine
211   // type](/compute/docs/machine-types) (e.g.
212   // `n1-standard-1`).
213   //
214   // If unspecified, the default machine type is
215   // `n1-standard-1`.
216   string machine_type = 1;
217
218   // Size of the disk attached to each node, specified in GB.
219   // The smallest allowed disk size is 10GB.
220   //
221   // If unspecified, the default disk size is 100GB.
222   int32 disk_size_gb = 2;
223
224   // The set of Google API scopes to be made available on all of the
225   // node VMs under the "default" service account.
226   //
227   // The following scopes are recommended, but not required, and by default are
228   // not included:
229   //
230   // * `https://www.googleapis.com/auth/compute` is required for mounting
231   // persistent storage on your nodes.
232   // * `https://www.googleapis.com/auth/devstorage.read_only` is required for
233   // communicating with **gcr.io**
234   // (the [Google Container Registry](/container-registry/)).
235   //
236   // If unspecified, no scopes are added, unless Cloud Logging or Cloud
237   // Monitoring are enabled, in which case their required scopes will be added.
238   repeated string oauth_scopes = 3;
239
240   // The Google Cloud Platform Service Account to be used by the node VMs. If
241   // no Service Account is specified, the "default" service account is used.
242   string service_account = 9;
243
244   // The metadata key/value pairs assigned to instances in the cluster.
245   //
246   // Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes
247   // in length. These are reflected as part of a URL in the metadata server.
248   // Additionally, to avoid ambiguity, keys must not conflict with any other
249   // metadata keys for the project or be one of the four reserved keys:
250   // "instance-template", "kube-env", "startup-script", and "user-data"
251   //
252   // Values are free-form strings, and only have meaning as interpreted by
253   // the image running in the instance. The only restriction placed on them is
254   // that each value's size must be less than or equal to 32 KB.
255   //
256   // The total size of all keys and values must be less than 512 KB.
257   map<string, string> metadata = 4;
258
259   // The image type to use for this node. Note that for a given image type,
260   // the latest version of it will be used.
261   string image_type = 5;
262
263   // The map of Kubernetes labels (key/value pairs) to be applied to each node.
264   // These will added in addition to any default label(s) that
265   // Kubernetes may apply to the node.
266   // In case of conflict in label keys, the applied set may differ depending on
267   // the Kubernetes version -- it's best to assume the behavior is undefined
268   // and conflicts should be avoided.
269   // For more information, including usage and the valid values, see:
270   // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
271   map<string, string> labels = 6;
272
273   // The number of local SSD disks to be attached to the node.
274   //
275   // The limit for this value is dependant upon the maximum number of
276   // disks available on a machine per zone. See:
277   // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
278   // for more information.
279   int32 local_ssd_count = 7;
280
281   // The list of instance tags applied to all nodes. Tags are used to identify
282   // valid sources or targets for network firewalls and are specified by
283   // the client during cluster or node pool creation. Each tag within the list
284   // must comply with RFC1035.
285   repeated string tags = 8;
286
287   // Whether the nodes are created as preemptible VM instances. See:
288   // https://cloud.google.com/compute/docs/instances/preemptible for more
289   // inforamtion about preemptible VM instances.
290   bool preemptible = 10;
291
292   // A list of hardware accelerators to be attached to each node.
293   // See https://cloud.google.com/compute/docs/gpus for more information about
294   // support for GPUs.
295   repeated AcceleratorConfig accelerators = 11;
296
297   // Minimum CPU platform to be used by this instance. The instance may be
298   // scheduled on the specified or newer CPU platform. Applicable values are the
299   // friendly names of CPU platforms, such as
300   // <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or
301   // <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more
302   // information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
303   string min_cpu_platform = 13;
304
305   // List of kubernetes taints to be applied to each node.
306   //
307   // For more information, including usage and the valid values, see:
308   // https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
309   repeated NodeTaint taints = 15;
310 }
311
312 // Kubernetes taint is comprised of three fields: key, value, and effect. Effect
313 // can only be one of three types:  NoSchedule, PreferNoSchedule or NoExecute.
314 //
315 // For more information, including usage and the valid values, see:
316 // https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
317 message NodeTaint {
318   // Possible values for Effect in taint.
319   enum Effect {
320     // Not set
321     EFFECT_UNSPECIFIED = 0;
322
323     // NoSchedule
324     NO_SCHEDULE = 1;
325
326     // PreferNoSchedule
327     PREFER_NO_SCHEDULE = 2;
328
329     // NoExecute
330     NO_EXECUTE = 3;
331   }
332
333   // Key for taint.
334   string key = 1;
335
336   // Value for taint.
337   string value = 2;
338
339   // Effect for taint.
340   Effect effect = 3;
341 }
342
343 // The authentication information for accessing the master endpoint.
344 // Authentication can be done using HTTP basic auth or using client
345 // certificates.
346 message MasterAuth {
347   // The username to use for HTTP basic authentication to the master endpoint.
348   // For clusters v1.6.0 and later, you can disable basic authentication by
349   // providing an empty username.
350   string username = 1;
351
352   // The password to use for HTTP basic authentication to the master endpoint.
353   // Because the master endpoint is open to the Internet, you should create a
354   // strong password.  If a password is provided for cluster creation, username
355   // must be non-empty.
356   string password = 2;
357
358   // Configuration for client certificate authentication on the cluster.  If no
359   // configuration is specified, a client certificate is issued.
360   ClientCertificateConfig client_certificate_config = 3;
361
362   // [Output only] Base64-encoded public certificate that is the root of
363   // trust for the cluster.
364   string cluster_ca_certificate = 100;
365
366   // [Output only] Base64-encoded public certificate used by clients to
367   // authenticate to the cluster endpoint.
368   string client_certificate = 101;
369
370   // [Output only] Base64-encoded private key used by clients to authenticate
371   // to the cluster endpoint.
372   string client_key = 102;
373 }
374
375 // Configuration for client certificates on the cluster.
376 message ClientCertificateConfig {
377   // Issue a client certificate.
378   bool issue_client_certificate = 1;
379 }
380
381 // Configuration for the addons that can be automatically spun up in the
382 // cluster, enabling additional functionality.
383 message AddonsConfig {
384   // Configuration for the HTTP (L7) load balancing controller addon, which
385   // makes it easy to set up HTTP load balancers for services in a cluster.
386   HttpLoadBalancing http_load_balancing = 1;
387
388   // Configuration for the horizontal pod autoscaling feature, which
389   // increases or decreases the number of replica pods a replication controller
390   // has based on the resource usage of the existing pods.
391   HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;
392
393   // Configuration for the Kubernetes Dashboard.
394   KubernetesDashboard kubernetes_dashboard = 3;
395
396   // Configuration for NetworkPolicy. This only tracks whether the addon
397   // is enabled or not on the Master, it does not track whether network policy
398   // is enabled for the nodes.
399   NetworkPolicyConfig network_policy_config = 4;
400 }
401
402 // Configuration options for the HTTP (L7) load balancing controller addon,
403 // which makes it easy to set up HTTP load balancers for services in a cluster.
404 message HttpLoadBalancing {
405   // Whether the HTTP Load Balancing controller is enabled in the cluster.
406   // When enabled, it runs a small pod in the cluster that manages the load
407   // balancers.
408   bool disabled = 1;
409 }
410
411 // Configuration options for the horizontal pod autoscaling feature, which
412 // increases or decreases the number of replica pods a replication controller
413 // has based on the resource usage of the existing pods.
414 message HorizontalPodAutoscaling {
415   // Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
416   // When enabled, it ensures that a Heapster pod is running in the cluster,
417   // which is also used by the Cloud Monitoring service.
418   bool disabled = 1;
419 }
420
421 // Configuration for the Kubernetes Dashboard.
422 message KubernetesDashboard {
423   // Whether the Kubernetes Dashboard is enabled for this cluster.
424   bool disabled = 1;
425 }
426
427 // Configuration for NetworkPolicy. This only tracks whether the addon
428 // is enabled or not on the Master, it does not track whether network policy
429 // is enabled for the nodes.
430 message NetworkPolicyConfig {
431   // Whether NetworkPolicy is enabled for this cluster.
432   bool disabled = 1;
433 }
434
435 // Configuration options for the master authorized networks feature. Enabled
436 // master authorized networks will disallow all external traffic to access
437 // Kubernetes master through HTTPS except traffic from the given CIDR blocks,
438 // Google Compute Engine Public IPs and Google Prod IPs.
439 message MasterAuthorizedNetworksConfig {
440   // CidrBlock contains an optional name and one CIDR block.
441   message CidrBlock {
442     // display_name is an optional field for users to identify CIDR blocks.
443     string display_name = 1;
444
445     // cidr_block must be specified in CIDR notation.
446     string cidr_block = 2;
447   }
448
449   // Whether or not master authorized networks is enabled.
450   bool enabled = 1;
451
452   // cidr_blocks define up to 10 external networks that could access
453   // Kubernetes master through HTTPS.
454   repeated CidrBlock cidr_blocks = 2;
455 }
456
457 // Configuration options for the NetworkPolicy feature.
458 // https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
459 message NetworkPolicy {
460   // Allowed Network Policy providers.
461   enum Provider {
462     // Not set
463     PROVIDER_UNSPECIFIED = 0;
464
465     // Tigera (Calico Felix).
466     CALICO = 1;
467   }
468
469   // The selected network policy provider.
470   Provider provider = 1;
471
472   // Whether network policy is enabled on the cluster.
473   bool enabled = 2;
474 }
475
476 // Configuration for controlling how IPs are allocated in the cluster.
477 message IPAllocationPolicy {
478   // Whether alias IPs will be used for pod IPs in the cluster.
479   bool use_ip_aliases = 1;
480
481   // Whether a new subnetwork will be created automatically for the cluster.
482   //
483   // This field is only applicable when `use_ip_aliases` is true.
484   bool create_subnetwork = 2;
485
486   // A custom subnetwork name to be used if `create_subnetwork` is true.  If
487   // this field is empty, then an automatic name will be chosen for the new
488   // subnetwork.
489   string subnetwork_name = 3;
490
491   // This field is deprecated, use cluster_ipv4_cidr_block.
492   string cluster_ipv4_cidr = 4;
493
494   // This field is deprecated, use node_ipv4_cidr_block.
495   string node_ipv4_cidr = 5;
496
497   // This field is deprecated, use services_ipv4_cidr_block.
498   string services_ipv4_cidr = 6;
499
500   // The name of the secondary range to be used for the cluster CIDR
501   // block.  The secondary range will be used for pod IP
502   // addresses. This must be an existing secondary range associated
503   // with the cluster subnetwork.
504   //
505   // This field is only applicable if use_ip_aliases is true and
506   // create_subnetwork is false.
507   string cluster_secondary_range_name = 7;
508
509   // The name of the secondary range to be used as for the services
510   // CIDR block.  The secondary range will be used for service
511   // ClusterIPs. This must be an existing secondary range associated
512   // with the cluster subnetwork.
513   //
514   // This field is only applicable with use_ip_aliases is true and
515   // create_subnetwork is false.
516   string services_secondary_range_name = 8;
517
518   // The IP address range for the cluster pod IPs. If this field is set, then
519   // `cluster.cluster_ipv4_cidr` must be left blank.
520   //
521   // This field is only applicable when `use_ip_aliases` is true.
522   //
523   // Set to blank to have a range chosen with the default size.
524   //
525   // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
526   // netmask.
527   //
528   // Set to a
529   // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
530   // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
531   // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
532   // to use.
533   string cluster_ipv4_cidr_block = 9;
534
535   // The IP address range of the instance IPs in this cluster.
536   //
537   // This is applicable only if `create_subnetwork` is true.
538   //
539   // Set to blank to have a range chosen with the default size.
540   //
541   // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
542   // netmask.
543   //
544   // Set to a
545   // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
546   // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
547   // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
548   // to use.
549   string node_ipv4_cidr_block = 10;
550
551   // The IP address range of the services IPs in this cluster. If blank, a range
552   // will be automatically chosen with the default size.
553   //
554   // This field is only applicable when `use_ip_aliases` is true.
555   //
556   // Set to blank to have a range chosen with the default size.
557   //
558   // Set to /netmask (e.g. `/14`) to have a range chosen with a specific
559   // netmask.
560   //
561   // Set to a
562   // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
563   // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
564   // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
565   // to use.
566   string services_ipv4_cidr_block = 11;
567 }
568
569 // Configuration for the PodSecurityPolicy feature.
570 message PodSecurityPolicyConfig {
571   // Enable the PodSecurityPolicy controller for this cluster. If enabled, pods
572   // must be valid under a PodSecurityPolicy to be created.
573   bool enabled = 1;
574 }
575
576 // A Google Container Engine cluster.
577 message Cluster {
578   // The current status of the cluster.
579   enum Status {
580     // Not set.
581     STATUS_UNSPECIFIED = 0;
582
583     // The PROVISIONING state indicates the cluster is being created.
584     PROVISIONING = 1;
585
586     // The RUNNING state indicates the cluster has been created and is fully
587     // usable.
588     RUNNING = 2;
589
590     // The RECONCILING state indicates that some work is actively being done on
591     // the cluster, such as upgrading the master or node software. Details can
592     // be found in the `statusMessage` field.
593     RECONCILING = 3;
594
595     // The STOPPING state indicates the cluster is being deleted.
596     STOPPING = 4;
597
598     // The ERROR state indicates the cluster may be unusable. Details
599     // can be found in the `statusMessage` field.
600     ERROR = 5;
601   }
602
603   // The name of this cluster. The name must be unique within this project
604   // and zone, and can be up to 40 characters with the following restrictions:
605   //
606   // * Lowercase letters, numbers, and hyphens only.
607   // * Must start with a letter.
608   // * Must end with a number or a letter.
609   string name = 1;
610
611   // An optional description of this cluster.
612   string description = 2;
613
614   // The number of nodes to create in this cluster. You must ensure that your
615   // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
616   // is sufficient for this number of instances. You must also have available
617   // firewall and routes quota.
618   // For requests, this field should only be used in lieu of a
619   // "node_pool" object, since this configuration (along with the
620   // "node_config") will be used to create a "NodePool" object with an
621   // auto-generated name. Do not use this and a node_pool at the same time.
622   int32 initial_node_count = 3;
623
624   // Parameters used in creating the cluster's nodes.
625   // See `nodeConfig` for the description of its properties.
626   // For requests, this field should only be used in lieu of a
627   // "node_pool" object, since this configuration (along with the
628   // "initial_node_count") will be used to create a "NodePool" object with an
629   // auto-generated name. Do not use this and a node_pool at the same time.
630   // For responses, this field will be populated with the node configuration of
631   // the first node pool.
632   //
633   // If unspecified, the defaults are used.
634   NodeConfig node_config = 4;
635
636   // The authentication information for accessing the master endpoint.
637   MasterAuth master_auth = 5;
638
639   // The logging service the cluster should use to write logs.
640   // Currently available options:
641   //
642   // * `logging.googleapis.com` - the Google Cloud Logging service.
643   // * `none` - no logs will be exported from the cluster.
644   // * if left as an empty string,`logging.googleapis.com` will be used.
645   string logging_service = 6;
646
647   // The monitoring service the cluster should use to write metrics.
648   // Currently available options:
649   //
650   // * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
651   // * `none` - no metrics will be exported from the cluster.
652   // * if left as an empty string, `monitoring.googleapis.com` will be used.
653   string monitoring_service = 7;
654
655   // The name of the Google Compute Engine
656   // [network](/compute/docs/networks-and-firewalls#networks) to which the
657   // cluster is connected. If left unspecified, the `default` network
658   // will be used.
659   string network = 8;
660
661   // The IP address range of the container pods in this cluster, in
662   // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
663   // notation (e.g. `10.96.0.0/14`). Leave blank to have
664   // one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
665   string cluster_ipv4_cidr = 9;
666
667   // Configurations for the various addons available to run in the cluster.
668   AddonsConfig addons_config = 10;
669
670   // The name of the Google Compute Engine
671   // [subnetwork](/compute/docs/subnetworks) to which the
672   // cluster is connected.
673   string subnetwork = 11;
674
675   // The node pools associated with this cluster.
676   // This field should not be set if "node_config" or "initial_node_count" are
677   // specified.
678   repeated NodePool node_pools = 12;
679
680   // The list of Google Compute Engine
681   // [locations](/compute/docs/zones#available) in which the cluster's nodes
682   // should be located.
683   repeated string locations = 13;
684
685   // Kubernetes alpha features are enabled on this cluster. This includes alpha
686   // API groups (e.g. v1alpha1) and features that may not be production ready in
687   // the kubernetes version of the master and nodes.
688   // The cluster has no SLA for uptime and master/node upgrades are disabled.
689   // Alpha enabled clusters are automatically deleted thirty days after
690   // creation.
691   bool enable_kubernetes_alpha = 14;
692
693   // Configuration options for the NetworkPolicy feature.
694   NetworkPolicy network_policy = 19;
695
696   // Configuration for cluster IP allocation.
697   IPAllocationPolicy ip_allocation_policy = 20;
698
699   // The configuration options for master authorized networks feature.
700   MasterAuthorizedNetworksConfig master_authorized_networks_config = 22;
701
702   // Configure the maintenance policy for this cluster.
703   MaintenancePolicy maintenance_policy = 23;
704
705   // Configuration for the PodSecurityPolicy feature.
706   PodSecurityPolicyConfig pod_security_policy_config = 25;
707
708   // [Output only] Server-defined URL for the resource.
709   string self_link = 100;
710
711   // [Output only] The name of the Google Compute Engine
712   // [zone](/compute/docs/zones#available) in which the cluster
713   // resides.
714   // This field is deprecated, use location instead.
715   string zone = 101;
716
717   // [Output only] The IP address of this cluster's master endpoint.
718   // The endpoint can be accessed from the internet at
719   // `https://username:password@endpoint/`.
720   //
721   // See the `masterAuth` property of this resource for username and
722   // password information.
723   string endpoint = 102;
724
725   // The initial Kubernetes version for this cluster.  Valid versions are those
726   // found in validMasterVersions returned by getServerConfig.  The version can
727   // be upgraded over time; such upgrades are reflected in
728   // currentMasterVersion and currentNodeVersion.
729   string initial_cluster_version = 103;
730
731   // [Output only] The current software version of the master endpoint.
732   string current_master_version = 104;
733
734   // [Output only] The current version of the node software components.
735   // If they are currently at multiple versions because they're in the process
736   // of being upgraded, this reflects the minimum version of all nodes.
737   string current_node_version = 105;
738
739   // [Output only] The time the cluster was created, in
740   // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
741   string create_time = 106;
742
743   // [Output only] The current status of this cluster.
744   Status status = 107;
745
746   // [Output only] Additional information about the current status of this
747   // cluster, if available.
748   string status_message = 108;
749
750   // [Output only] The size of the address space on each node for hosting
751   // containers. This is provisioned from within the `container_ipv4_cidr`
752   // range.
753   int32 node_ipv4_cidr_size = 109;
754
755   // [Output only] The IP address range of the Kubernetes services in
756   // this cluster, in
757   // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
758   // notation (e.g. `1.2.3.4/29`). Service addresses are
759   // typically put in the last `/16` from the container CIDR.
760   string services_ipv4_cidr = 110;
761
762   // [Output only] The resource URLs of [instance
763   // groups](/compute/docs/instance-groups/) associated with this
764   // cluster.
765   repeated string instance_group_urls = 111;
766
767   // [Output only] The number of nodes currently in the cluster.
768   int32 current_node_count = 112;
769
770   // [Output only] The time the cluster will be automatically
771   // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
772   string expire_time = 113;
773
774   // [Output only] The name of the Google Compute Engine
775   // [zone](/compute/docs/regions-zones/regions-zones#available) or
776   // [region](/compute/docs/regions-zones/regions-zones#available) in which
777   // the cluster resides.
778   string location = 114;
779 }
780
781 // ClusterUpdate describes an update to the cluster. Exactly one update can
782 // be applied to a cluster with each request, so at most one field can be
783 // provided.
784 message ClusterUpdate {
785   // The Kubernetes version to change the nodes to (typically an
786   // upgrade). Use `-` to upgrade to the latest version supported by
787   // the server.
788   string desired_node_version = 4;
789
790   // The monitoring service the cluster should use to write metrics.
791   // Currently available options:
792   //
793   // * "monitoring.googleapis.com" - the Google Cloud Monitoring service
794   // * "none" - no metrics will be exported from the cluster
795   string desired_monitoring_service = 5;
796
797   // Configurations for the various addons available to run in the cluster.
798   AddonsConfig desired_addons_config = 6;
799
800   // The node pool to be upgraded. This field is mandatory if
801   // "desired_node_version", "desired_image_family" or
802   // "desired_node_pool_autoscaling" is specified and there is more than one
803   // node pool on the cluster.
804   string desired_node_pool_id = 7;
805
806   // The desired image type for the node pool.
807   // NOTE: Set the "desired_node_pool" field as well.
808   string desired_image_type = 8;
809
810   // Autoscaler configuration for the node pool specified in
811   // desired_node_pool_id. If there is only one pool in the
812   // cluster and desired_node_pool_id is not provided then
813   // the change applies to that single node pool.
814   NodePoolAutoscaling desired_node_pool_autoscaling = 9;
815
816   // The desired list of Google Compute Engine
817   // [locations](/compute/docs/zones#available) in which the cluster's nodes
818   // should be located. Changing the locations a cluster is in will result
819   // in nodes being either created or removed from the cluster, depending on
820   // whether locations are being added or removed.
821   //
822   // This list must always include the cluster's primary zone.
823   repeated string desired_locations = 10;
824
825   // The desired configuration options for master authorized networks feature.
826   MasterAuthorizedNetworksConfig desired_master_authorized_networks_config = 12;
827
828   // The desired configuration options for the PodSecurityPolicy feature.
829   PodSecurityPolicyConfig desired_pod_security_policy_config = 14;
830
831   // The Kubernetes version to change the master to. The only valid value is the
832   // latest supported version. Use "-" to have the server automatically select
833   // the latest version.
834   string desired_master_version = 100;
835 }
836
837 // This operation resource represents operations that may have happened or are
838 // happening on the cluster. All fields are output only.
839 message Operation {
840   // Current status of the operation.
841   enum Status {
842     // Not set.
843     STATUS_UNSPECIFIED = 0;
844
845     // The operation has been created.
846     PENDING = 1;
847
848     // The operation is currently running.
849     RUNNING = 2;
850
851     // The operation is done, either cancelled or completed.
852     DONE = 3;
853
854     // The operation is aborting.
855     ABORTING = 4;
856   }
857
858   // Operation type.
859   enum Type {
860     // Not set.
861     TYPE_UNSPECIFIED = 0;
862
863     // Cluster create.
864     CREATE_CLUSTER = 1;
865
866     // Cluster delete.
867     DELETE_CLUSTER = 2;
868
869     // A master upgrade.
870     UPGRADE_MASTER = 3;
871
872     // A node upgrade.
873     UPGRADE_NODES = 4;
874
875     // Cluster repair.
876     REPAIR_CLUSTER = 5;
877
878     // Cluster update.
879     UPDATE_CLUSTER = 6;
880
881     // Node pool create.
882     CREATE_NODE_POOL = 7;
883
884     // Node pool delete.
885     DELETE_NODE_POOL = 8;
886
887     // Set node pool management.
888     SET_NODE_POOL_MANAGEMENT = 9;
889
890     // Automatic node pool repair.
891     AUTO_REPAIR_NODES = 10;
892
893     // Automatic node upgrade.
894     AUTO_UPGRADE_NODES = 11;
895
896     // Set labels.
897     SET_LABELS = 12;
898
899     // Set/generate master auth materials
900     SET_MASTER_AUTH = 13;
901
902     // Set node pool size.
903     SET_NODE_POOL_SIZE = 14;
904
905     // Updates network policy for a cluster.
906     SET_NETWORK_POLICY = 15;
907
908     // Set the maintenance policy.
909     SET_MAINTENANCE_POLICY = 16;
910   }
911
912   // The server-assigned ID for the operation.
913   string name = 1;
914
915   // The name of the Google Compute Engine
916   // [zone](/compute/docs/zones#available) in which the operation
917   // is taking place.
918   // This field is deprecated, use location instead.
919   string zone = 2;
920
921   // The operation type.
922   Type operation_type = 3;
923
924   // The current status of the operation.
925   Status status = 4;
926
927   // Detailed operation progress, if available.
928   string detail = 8;
929
930   // If an error has occurred, a textual description of the error.
931   string status_message = 5;
932
933   // Server-defined URL for the resource.
934   string self_link = 6;
935
936   // Server-defined URL for the target of the operation.
937   string target_link = 7;
938
939   // [Output only] The name of the Google Compute Engine
940   // [zone](/compute/docs/regions-zones/regions-zones#available) or
941   // [region](/compute/docs/regions-zones/regions-zones#available) in which
942   // the cluster resides.
943   string location = 9;
944
945   // [Output only] The time the operation started, in
946   // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
947   string start_time = 10;
948
949   // [Output only] The time the operation completed, in
950   // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
951   string end_time = 11;
952 }
953
954 // CreateClusterRequest creates a cluster.
955 message CreateClusterRequest {
956   // The Google Developers Console [project ID or project
957   // number](https://support.google.com/cloud/answer/6158840).
958   // This field is deprecated, use parent instead.
959   string project_id = 1;
960
961   // The name of the Google Compute Engine
962   // [zone](/compute/docs/zones#available) in which the cluster
963   // resides.
964   // This field is deprecated, use parent instead.
965   string zone = 2;
966
967   // A [cluster
968   // resource](/container-engine/reference/rest/v1alpha1/projects.zones.clusters)
969   Cluster cluster = 3;
970
971   // The parent (project and location) where the cluster will be created.
972   // Specified in the format 'projects/*/locations/*'.
973   string parent = 5;
974 }
975
976 // GetClusterRequest gets the settings of a cluster.
977 message GetClusterRequest {
978   // The Google Developers Console [project ID or project
979   // number](https://support.google.com/cloud/answer/6158840).
980   // This field is deprecated, use name instead.
981   string project_id = 1;
982
983   // The name of the Google Compute Engine
984   // [zone](/compute/docs/zones#available) in which the cluster
985   // resides.
986   // This field is deprecated, use name instead.
987   string zone = 2;
988
989   // The name of the cluster to retrieve.
990   // This field is deprecated, use name instead.
991   string cluster_id = 3;
992
993   // The name (project, location, cluster) of the cluster to retrieve.
994   // Specified in the format 'projects/*/locations/*/clusters/*'.
995   string name = 5;
996 }
997
998 // UpdateClusterRequest updates the settings of a cluster.
999 message UpdateClusterRequest {
1000   // The Google Developers Console [project ID or project
1001   // number](https://support.google.com/cloud/answer/6158840).
1002   // This field is deprecated, use name instead.
1003   string project_id = 1;
1004
1005   // The name of the Google Compute Engine
1006   // [zone](/compute/docs/zones#available) in which the cluster
1007   // resides.
1008   // This field is deprecated, use name instead.
1009   string zone = 2;
1010
1011   // The name of the cluster to upgrade.
1012   // This field is deprecated, use name instead.
1013   string cluster_id = 3;
1014
1015   // A description of the update.
1016   ClusterUpdate update = 4;
1017
1018   // The name (project, location, cluster) of the cluster to update.
1019   // Specified in the format 'projects/*/locations/*/clusters/*'.
1020   string name = 5;
1021 }
1022
1023 // SetNodePoolVersionRequest updates the version of a node pool.
1024 message UpdateNodePoolRequest {
1025   // The Google Developers Console [project ID or project
1026   // number](https://support.google.com/cloud/answer/6158840).
1027   // This field is deprecated, use name instead.
1028   string project_id = 1;
1029
1030   // The name of the Google Compute Engine
1031   // [zone](/compute/docs/zones#available) in which the cluster
1032   // resides.
1033   // This field is deprecated, use name instead.
1034   string zone = 2;
1035
1036   // The name of the cluster to upgrade.
1037   // This field is deprecated, use name instead.
1038   string cluster_id = 3;
1039
1040   // The name of the node pool to upgrade.
1041   // This field is deprecated, use name instead.
1042   string node_pool_id = 4;
1043
1044   // The Kubernetes version to change the nodes to (typically an
1045   // upgrade). Use `-` to upgrade to the latest version supported by
1046   // the server.
1047   string node_version = 5;
1048
1049   // The desired image type for the node pool.
1050   string image_type = 6;
1051
1052   // The name (project, location, cluster, node pool) of the node pool to update.
1053   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1054   string name = 8;
1055 }
1056
1057 // SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
1058 message SetNodePoolAutoscalingRequest {
1059   // The Google Developers Console [project ID or project
1060   // number](https://support.google.com/cloud/answer/6158840).
1061   // This field is deprecated, use name instead.
1062   string project_id = 1;
1063
1064   // The name of the Google Compute Engine
1065   // [zone](/compute/docs/zones#available) in which the cluster
1066   // resides.
1067   // This field is deprecated, use name instead.
1068   string zone = 2;
1069
1070   // The name of the cluster to upgrade.
1071   // This field is deprecated, use name instead.
1072   string cluster_id = 3;
1073
1074   // The name of the node pool to upgrade.
1075   // This field is deprecated, use name instead.
1076   string node_pool_id = 4;
1077
1078   // Autoscaling configuration for the node pool.
1079   NodePoolAutoscaling autoscaling = 5;
1080
1081   // The name (project, location, cluster, node pool) of the node pool to set
1082   // autoscaler settings. Specified in the format
1083   // 'projects/*/locations/*/clusters/*/nodePools/*'.
1084   string name = 6;
1085 }
1086
1087 // SetLoggingServiceRequest sets the logging service of a cluster.
1088 message SetLoggingServiceRequest {
1089   // The Google Developers Console [project ID or project
1090   // number](https://support.google.com/cloud/answer/6158840).
1091   // This field is deprecated, use name instead.
1092   string project_id = 1;
1093
1094   // The name of the Google Compute Engine
1095   // [zone](/compute/docs/zones#available) in which the cluster
1096   // resides.
1097   string zone = 2;
1098
1099   // The name of the cluster to upgrade.
1100   // This field is deprecated, use name instead.
1101   string cluster_id = 3;
1102
1103   // The logging service the cluster should use to write metrics.
1104   // Currently available options:
1105   //
1106   // * "logging.googleapis.com" - the Google Cloud Logging service
1107   // * "none" - no metrics will be exported from the cluster
1108   string logging_service = 4;
1109
1110   // The name (project, location, cluster) of the cluster to set logging.
1111   // Specified in the format 'projects/*/locations/*/clusters/*'.
1112   string name = 5;
1113 }
1114
1115 // SetMonitoringServiceRequest sets the monitoring service of a cluster.
1116 message SetMonitoringServiceRequest {
1117   // The Google Developers Console [project ID or project
1118   // number](https://support.google.com/cloud/answer/6158840).
1119   // This field is deprecated, use name instead.
1120   string project_id = 1;
1121
1122   // The name of the Google Compute Engine
1123   // [zone](/compute/docs/zones#available) in which the cluster
1124   // resides.
1125   // This field is deprecated, use name instead.
1126   string zone = 2;
1127
1128   // The name of the cluster to upgrade.
1129   // This field is deprecated, use name instead.
1130   string cluster_id = 3;
1131
1132   // The monitoring service the cluster should use to write metrics.
1133   // Currently available options:
1134   //
1135   // * "monitoring.googleapis.com" - the Google Cloud Monitoring service
1136   // * "none" - no metrics will be exported from the cluster
1137   string monitoring_service = 4;
1138
1139   // The name (project, location, cluster) of the cluster to set monitoring.
1140   // Specified in the format 'projects/*/locations/*/clusters/*'.
1141   string name = 6;
1142 }
1143
1144 // SetAddonsRequest sets the addons associated with the cluster.
1145 message SetAddonsConfigRequest {
1146   // The Google Developers Console [project ID or project
1147   // number](https://support.google.com/cloud/answer/6158840).
1148   // This field is deprecated, use name instead.
1149   string project_id = 1;
1150
1151   // The name of the Google Compute Engine
1152   // [zone](/compute/docs/zones#available) in which the cluster
1153   // resides.
1154   // This field is deprecated, use name instead.
1155   string zone = 2;
1156
1157   // The name of the cluster to upgrade.
1158   // This field is deprecated, use name instead.
1159   string cluster_id = 3;
1160
1161   // The desired configurations for the various addons available to run in the
1162   // cluster.
1163   AddonsConfig addons_config = 4;
1164
1165   // The name (project, location, cluster) of the cluster to set addons.
1166   // Specified in the format 'projects/*/locations/*/clusters/*'.
1167   string name = 6;
1168 }
1169
1170 // SetLocationsRequest sets the locations of the cluster.
1171 message SetLocationsRequest {
1172   // The Google Developers Console [project ID or project
1173   // number](https://support.google.com/cloud/answer/6158840).
1174   // This field is deprecated, use name instead.
1175   string project_id = 1;
1176
1177   // The name of the Google Compute Engine
1178   // [zone](/compute/docs/zones#available) in which the cluster
1179   // resides.
1180   // This field is deprecated, use name instead.
1181   string zone = 2;
1182
1183   // The name of the cluster to upgrade.
1184   // This field is deprecated, use name instead.
1185   string cluster_id = 3;
1186
1187   // The desired list of Google Compute Engine
1188   // [locations](/compute/docs/zones#available) in which the cluster's nodes
1189   // should be located. Changing the locations a cluster is in will result
1190   // in nodes being either created or removed from the cluster, depending on
1191   // whether locations are being added or removed.
1192   //
1193   // This list must always include the cluster's primary zone.
1194   repeated string locations = 4;
1195
1196   // The name (project, location, cluster) of the cluster to set locations.
1197   // Specified in the format 'projects/*/locations/*/clusters/*'.
1198   string name = 6;
1199 }
1200
1201 // UpdateMasterRequest updates the master of the cluster.
1202 message UpdateMasterRequest {
1203   // The Google Developers Console [project ID or project
1204   // number](https://support.google.com/cloud/answer/6158840).
1205   string project_id = 1;
1206
1207   // The name of the Google Compute Engine
1208   // [zone](/compute/docs/zones#available) in which the cluster
1209   // resides.
1210   // This field is deprecated, use name instead.
1211   string zone = 2;
1212
1213   // The name of the cluster to upgrade.
1214   // This field is deprecated, use name instead.
1215   string cluster_id = 3;
1216
1217   // The Kubernetes version to change the master to. The only valid value is the
1218   // latest supported version. Use "-" to have the server automatically select
1219   // the latest version.
1220   string master_version = 4;
1221
1222   // The name (project, location, cluster) of the cluster to update.
1223   // Specified in the format 'projects/*/locations/*/clusters/*'.
1224   string name = 7;
1225 }
1226
1227 // SetMasterAuthRequest updates the admin password of a cluster.
1228 message SetMasterAuthRequest {
1229   // Operation type: what type update to perform.
1230   enum Action {
1231     // Operation is unknown and will error out.
1232     UNKNOWN = 0;
1233
1234     // Set the password to a user generated value.
1235     SET_PASSWORD = 1;
1236
1237     // Generate a new password and set it to that.
1238     GENERATE_PASSWORD = 2;
1239
1240     // Set the username.  If an empty username is provided, basic authentication
1241     // is disabled for the cluster.  If a non-empty username is provided, basic
1242     // authentication is enabled, with either a provided password or a generated
1243     // one.
1244     SET_USERNAME = 3;
1245   }
1246
1247   // The Google Developers Console [project ID or project
1248   // number](https://support.google.com/cloud/answer/6158840).
1249   // This field is deprecated, use name instead.
1250   string project_id = 1;
1251
1252   // The name of the Google Compute Engine
1253   // [zone](/compute/docs/zones#available) in which the cluster
1254   // resides.
1255   // This field is deprecated, use name instead.
1256   string zone = 2;
1257
1258   // The name of the cluster to upgrade.
1259   // This field is deprecated, use name instead.
1260   string cluster_id = 3;
1261
1262   // The exact form of action to be taken on the master auth.
1263   Action action = 4;
1264
1265   // A description of the update.
1266   MasterAuth update = 5;
1267
1268   // The name (project, location, cluster) of the cluster to set auth.
1269   // Specified in the format 'projects/*/locations/*/clusters/*'.
1270   string name = 7;
1271 }
1272
1273 // DeleteClusterRequest deletes a cluster.
1274 message DeleteClusterRequest {
1275   // The Google Developers Console [project ID or project
1276   // number](https://support.google.com/cloud/answer/6158840).
1277   // This field is deprecated, use name instead.
1278   string project_id = 1;
1279
1280   // The name of the Google Compute Engine
1281   // [zone](/compute/docs/zones#available) in which the cluster
1282   // resides.
1283   // This field is deprecated, use name instead.
1284   string zone = 2;
1285
1286   // The name of the cluster to delete.
1287   // This field is deprecated, use name instead.
1288   string cluster_id = 3;
1289
1290   // The name (project, location, cluster) of the cluster to delete.
1291   // Specified in the format 'projects/*/locations/*/clusters/*'.
1292   string name = 4;
1293 }
1294
1295 // ListClustersRequest lists clusters.
1296 message ListClustersRequest {
1297   // The Google Developers Console [project ID or project
1298   // number](https://support.google.com/cloud/answer/6158840).
1299   // This field is deprecated, use parent instead.
1300   string project_id = 1;
1301
1302   // The name of the Google Compute Engine
1303   // [zone](/compute/docs/zones#available) in which the cluster
1304   // resides, or "-" for all zones.
1305   // This field is deprecated, use parent instead.
1306   string zone = 2;
1307
1308   // The parent (project and location) where the clusters will be listed.
1309   // Specified in the format 'projects/*/locations/*'.
1310   // Location "-" matches all zones and all regions.
1311   string parent = 4;
1312 }
1313
1314 // ListClustersResponse is the result of ListClustersRequest.
1315 message ListClustersResponse {
1316   // A list of clusters in the project in the specified zone, or
1317   // across all ones.
1318   repeated Cluster clusters = 1;
1319
1320   // If any zones are listed here, the list of clusters returned
1321   // may be missing those zones.
1322   repeated string missing_zones = 2;
1323 }
1324
1325 // GetOperationRequest gets a single operation.
1326 message GetOperationRequest {
1327   // The Google Developers Console [project ID or project
1328   // number](https://support.google.com/cloud/answer/6158840).
1329   // This field is deprecated, use name instead.
1330   string project_id = 1;
1331
1332   // The name of the Google Compute Engine
1333   // [zone](/compute/docs/zones#available) in which the cluster
1334   // resides.
1335   // This field is deprecated, use name instead.
1336   string zone = 2;
1337
1338   // The server-assigned `name` of the operation.
1339   // This field is deprecated, use name instead.
1340   string operation_id = 3;
1341
1342   // The name (project, location, operation id) of the operation to get.
1343   // Specified in the format 'projects/*/locations/*/operations/*'.
1344   string name = 5;
1345 }
1346
1347 // ListOperationsRequest lists operations.
1348 message ListOperationsRequest {
1349   // The Google Developers Console [project ID or project
1350   // number](https://support.google.com/cloud/answer/6158840).
1351   // This field is deprecated, use parent instead.
1352   string project_id = 1;
1353
1354   // The name of the Google Compute Engine [zone](/compute/docs/zones#available)
1355   // to return operations for, or `-` for all zones.
1356   // This field is deprecated, use parent instead.
1357   string zone = 2;
1358
1359   // The parent (project and location) where the operations will be listed.
1360   // Specified in the format 'projects/*/locations/*'.
1361   // Location "-" matches all zones and all regions.
1362   string parent = 4;
1363 }
1364
1365 // CancelOperationRequest cancels a single operation.
1366 message CancelOperationRequest {
1367   // The Google Developers Console [project ID or project
1368   // number](https://support.google.com/cloud/answer/6158840).
1369   // This field is deprecated, use name instead.
1370   string project_id = 1;
1371
1372   // The name of the Google Compute Engine
1373   // [zone](/compute/docs/zones#available) in which the operation resides.
1374   // This field is deprecated, use name instead.
1375   string zone = 2;
1376
1377   // The server-assigned `name` of the operation.
1378   // This field is deprecated, use name instead.
1379   string operation_id = 3;
1380
1381   // The name (project, location, operation id) of the operation to cancel.
1382   // Specified in the format 'projects/*/locations/*/operations/*'.
1383   string name = 4;
1384 }
1385
1386 // ListOperationsResponse is the result of ListOperationsRequest.
1387 message ListOperationsResponse {
1388   // A list of operations in the project in the specified zone.
1389   repeated Operation operations = 1;
1390
1391   // If any zones are listed here, the list of operations returned
1392   // may be missing the operations from those zones.
1393   repeated string missing_zones = 2;
1394 }
1395
1396 // Gets the current Container Engine service configuration.
1397 message GetServerConfigRequest {
1398   // The Google Developers Console [project ID or project
1399   // number](https://support.google.com/cloud/answer/6158840).
1400   // This field is deprecated, use name instead.
1401   string project_id = 1;
1402
1403   // The name of the Google Compute Engine [zone](/compute/docs/zones#available)
1404   // to return operations for.
1405   // This field is deprecated, use name instead.
1406   string zone = 2;
1407
1408   // The name (project and location) of the server config to get
1409   // Specified in the format 'projects/*/locations/*'.
1410   string name = 4;
1411 }
1412
1413 // Container Engine service configuration.
1414 message ServerConfig {
1415   // Version of Kubernetes the service deploys by default.
1416   string default_cluster_version = 1;
1417
1418   // List of valid node upgrade target versions.
1419   repeated string valid_node_versions = 3;
1420
1421   // Default image type.
1422   string default_image_type = 4;
1423
1424   // List of valid image types.
1425   repeated string valid_image_types = 5;
1426
1427   // List of valid master versions.
1428   repeated string valid_master_versions = 6;
1429 }
1430
1431 // CreateNodePoolRequest creates a node pool for a cluster.
1432 message CreateNodePoolRequest {
1433   // The Google Developers Console [project ID or project
1434   // number](https://developers.google.com/console/help/new/#projectnumber).
1435   // This field is deprecated, use parent instead.
1436   string project_id = 1;
1437
1438   // The name of the Google Compute Engine
1439   // [zone](/compute/docs/zones#available) in which the cluster
1440   // resides.
1441   // This field is deprecated, use parent instead.
1442   string zone = 2;
1443
1444   // The name of the cluster.
1445   // This field is deprecated, use parent instead.
1446   string cluster_id = 3;
1447
1448   // The node pool to create.
1449   NodePool node_pool = 4;
1450
1451   // The parent (project, location, cluster id) where the node pool will be created.
1452   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1453   string parent = 6;
1454 }
1455
1456 // DeleteNodePoolRequest deletes a node pool for a cluster.
1457 message DeleteNodePoolRequest {
1458   // The Google Developers Console [project ID or project
1459   // number](https://developers.google.com/console/help/new/#projectnumber).
1460   // This field is deprecated, use name instead.
1461   string project_id = 1;
1462
1463   // The name of the Google Compute Engine
1464   // [zone](/compute/docs/zones#available) in which the cluster
1465   // resides.
1466   // This field is deprecated, use name instead.
1467   string zone = 2;
1468
1469   // The name of the cluster.
1470   // This field is deprecated, use name instead.
1471   string cluster_id = 3;
1472
1473   // The name of the node pool to delete.
1474   // This field is deprecated, use name instead.
1475   string node_pool_id = 4;
1476
1477   // The name (project, location, cluster, node pool id) of the node pool to delete.
1478   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1479   string name = 6;
1480 }
1481
1482 // ListNodePoolsRequest lists the node pool(s) for a cluster.
1483 message ListNodePoolsRequest {
1484   // The Google Developers Console [project ID or project
1485   // number](https://developers.google.com/console/help/new/#projectnumber).
1486   // This field is deprecated, use parent instead.
1487   string project_id = 1;
1488
1489   // The name of the Google Compute Engine
1490   // [zone](/compute/docs/zones#available) in which the cluster
1491   // resides.
1492   // This field is deprecated, use parent instead.
1493   string zone = 2;
1494
1495   // The name of the cluster.
1496   // This field is deprecated, use parent instead.
1497   string cluster_id = 3;
1498
1499   // The parent (project, location, cluster id) where the node pools will be listed.
1500   // Specified in the format 'projects/*/locations/*/clusters/*'.
1501   string parent = 5;
1502 }
1503
1504 // GetNodePoolRequest retrieves a node pool for a cluster.
1505 message GetNodePoolRequest {
1506   // The Google Developers Console [project ID or project
1507   // number](https://developers.google.com/console/help/new/#projectnumber).
1508   // This field is deprecated, use name instead.
1509   string project_id = 1;
1510
1511   // The name of the Google Compute Engine
1512   // [zone](/compute/docs/zones#available) in which the cluster
1513   // resides.
1514   // This field is deprecated, use name instead.
1515   string zone = 2;
1516
1517   // The name of the cluster.
1518   // This field is deprecated, use name instead.
1519   string cluster_id = 3;
1520
1521   // The name of the node pool.
1522   // This field is deprecated, use name instead.
1523   string node_pool_id = 4;
1524
1525   // The name (project, location, cluster, node pool id) of the node pool to get.
1526   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1527   string name = 6;
1528 }
1529
1530 // NodePool contains the name and configuration for a cluster's node pool.
1531 // Node pools are a set of nodes (i.e. VM's), with a common configuration and
1532 // specification, under the control of the cluster master. They may have a set
1533 // of Kubernetes labels applied to them, which may be used to reference them
1534 // during pod scheduling. They may also be resized up or down, to accommodate
1535 // the workload.
1536 message NodePool {
1537   // The current status of the node pool instance.
1538   enum Status {
1539     // Not set.
1540     STATUS_UNSPECIFIED = 0;
1541
1542     // The PROVISIONING state indicates the node pool is being created.
1543     PROVISIONING = 1;
1544
1545     // The RUNNING state indicates the node pool has been created
1546     // and is fully usable.
1547     RUNNING = 2;
1548
1549     // The RUNNING_WITH_ERROR state indicates the node pool has been created
1550     // and is partially usable. Some error state has occurred and some
1551     // functionality may be impaired. Customer may need to reissue a request
1552     // or trigger a new update.
1553     RUNNING_WITH_ERROR = 3;
1554
1555     // The RECONCILING state indicates that some work is actively being done on
1556     // the node pool, such as upgrading node software. Details can
1557     // be found in the `statusMessage` field.
1558     RECONCILING = 4;
1559
1560     // The STOPPING state indicates the node pool is being deleted.
1561     STOPPING = 5;
1562
1563     // The ERROR state indicates the node pool may be unusable. Details
1564     // can be found in the `statusMessage` field.
1565     ERROR = 6;
1566   }
1567
1568   // The name of the node pool.
1569   string name = 1;
1570
1571   // The node configuration of the pool.
1572   NodeConfig config = 2;
1573
1574   // The initial node count for the pool. You must ensure that your
1575   // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a>
1576   // is sufficient for this number of instances. You must also have available
1577   // firewall and routes quota.
1578   int32 initial_node_count = 3;
1579
1580   // Autoscaler configuration for this NodePool. Autoscaler is enabled
1581   // only if a valid configuration is present.
1582   NodePoolAutoscaling autoscaling = 4;
1583
1584   // NodeManagement configuration for this NodePool.
1585   NodeManagement management = 5;
1586
1587   // [Output only] Server-defined URL for the resource.
1588   string self_link = 100;
1589
1590   // [Output only] The version of the Kubernetes of this node.
1591   string version = 101;
1592
1593   // [Output only] The resource URLs of [instance
1594   // groups](/compute/docs/instance-groups/) associated with this
1595   // node pool.
1596   repeated string instance_group_urls = 102;
1597
1598   // [Output only] The status of the nodes in this pool instance.
1599   Status status = 103;
1600
1601   // [Output only] Additional information about the current status of this
1602   // node pool instance, if available.
1603   string status_message = 104;
1604 }
1605
1606 // NodeManagement defines the set of node management services turned on for the
1607 // node pool.
1608 message NodeManagement {
1609   // Whether the nodes will be automatically upgraded.
1610   bool auto_upgrade = 1;
1611
1612   // Whether the nodes will be automatically repaired.
1613   bool auto_repair = 2;
1614
1615   // Specifies the Auto Upgrade knobs for the node pool.
1616   AutoUpgradeOptions upgrade_options = 10;
1617 }
1618
1619 // AutoUpgradeOptions defines the set of options for the user to control how
1620 // the Auto Upgrades will proceed.
1621 message AutoUpgradeOptions {
1622   // [Output only] This field is set when upgrades are about to commence
1623   // with the approximate start time for the upgrades, in
1624   // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
1625   string auto_upgrade_start_time = 1;
1626
1627   // [Output only] This field is set when upgrades are about to commence
1628   // with the description of the upgrade.
1629   string description = 2;
1630 }
1631
1632 // MaintenancePolicy defines the maintenance policy to be used for the cluster.
1633 message MaintenancePolicy {
1634   // Specifies the maintenance window in which maintenance may be performed.
1635   MaintenanceWindow window = 1;
1636 }
1637
1638 // MaintenanceWindow defines the maintenance window to be used for the cluster.
1639 message MaintenanceWindow {
1640   // Unimplemented, reserved for future use.
1641   // HourlyMaintenanceWindow hourly_maintenance_window = 1;
1642   oneof policy {
1643     // DailyMaintenanceWindow specifies a daily maintenance operation window.
1644     DailyMaintenanceWindow daily_maintenance_window = 2;
1645   }
1646 }
1647
1648 // Time window specified for daily maintenance operations.
1649 message DailyMaintenanceWindow {
1650   // Time within the maintenance window to start the maintenance operations.
1651   // It must be in format "HH:MM”, where HH : [00-23] and MM : [00-59] GMT.
1652   string start_time = 2;
1653
1654   // [Output only] Duration of the time window, automatically chosen to be
1655   // smallest possible in the given scenario.
1656   string duration = 3;
1657 }
1658
1659 // SetNodePoolManagementRequest sets the node management properties of a node
1660 // pool.
1661 message SetNodePoolManagementRequest {
1662   // The Google Developers Console [project ID or project
1663   // number](https://support.google.com/cloud/answer/6158840).
1664   // This field is deprecated, use name instead.
1665   string project_id = 1;
1666
1667   // The name of the Google Compute Engine
1668   // [zone](/compute/docs/zones#available) in which the cluster
1669   // resides.
1670   // This field is deprecated, use name instead.
1671   string zone = 2;
1672
1673   // The name of the cluster to update.
1674   // This field is deprecated, use name instead.
1675   string cluster_id = 3;
1676
1677   // The name of the node pool to update.
1678   // This field is deprecated, use name instead.
1679   string node_pool_id = 4;
1680
1681   // NodeManagement configuration for the node pool.
1682   NodeManagement management = 5;
1683
1684   // The name (project, location, cluster, node pool id) of the node pool to set
1685   // management properties. Specified in the format
1686   // 'projects/*/locations/*/clusters/*/nodePools/*'.
1687   string name = 7;
1688 }
1689
1690 // SetNodePoolSizeRequest sets the size a node
1691 // pool.
1692 message SetNodePoolSizeRequest {
1693   // The Google Developers Console [project ID or project
1694   // number](https://support.google.com/cloud/answer/6158840).
1695   string project_id = 1;
1696
1697   // The name of the Google Compute Engine
1698   // [zone](/compute/docs/zones#available) in which the cluster
1699   // resides.
1700   // This field is deprecated, use name instead.
1701   string zone = 2;
1702
1703   // The name of the cluster to update.
1704   // This field is deprecated, use name instead.
1705   string cluster_id = 3;
1706
1707   // The name of the node pool to update.
1708   // This field is deprecated, use name instead.
1709   string node_pool_id = 4;
1710
1711   // The desired node count for the pool.
1712   int32 node_count = 5;
1713
1714   // The name (project, location, cluster, node pool id) of the node pool to set
1715   // size.
1716   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1717   string name = 7;
1718 }
1719
1720 // RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
1721 // NodePool upgrade. This will be an no-op if the last upgrade successfully
1722 // completed.
1723 message RollbackNodePoolUpgradeRequest {
1724   // The Google Developers Console [project ID or project
1725   // number](https://support.google.com/cloud/answer/6158840).
1726   // This field is deprecated, use name instead.
1727   string project_id = 1;
1728
1729   // The name of the Google Compute Engine
1730   // [zone](/compute/docs/zones#available) in which the cluster
1731   // resides.
1732   // This field is deprecated, use name instead.
1733   string zone = 2;
1734
1735   // The name of the cluster to rollback.
1736   // This field is deprecated, use name instead.
1737   string cluster_id = 3;
1738
1739   // The name of the node pool to rollback.
1740   // This field is deprecated, use name instead.
1741   string node_pool_id = 4;
1742
1743   // The name (project, location, cluster, node pool id) of the node poll to
1744   // rollback upgrade.
1745   // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.
1746   string name = 6;
1747 }
1748
1749 // ListNodePoolsResponse is the result of ListNodePoolsRequest.
1750 message ListNodePoolsResponse {
1751   // A list of node pools for a cluster.
1752   repeated NodePool node_pools = 1;
1753 }
1754
1755 // NodePoolAutoscaling contains information required by cluster autoscaler to
1756 // adjust the size of the node pool to the current cluster usage.
1757 message NodePoolAutoscaling {
1758   // Is autoscaling enabled for this node pool.
1759   bool enabled = 1;
1760
1761   // Minimum number of nodes in the NodePool. Must be >= 1 and <=
1762   // max_node_count.
1763   int32 min_node_count = 2;
1764
1765   // Maximum number of nodes in the NodePool. Must be >= min_node_count. There
1766   // has to enough quota to scale up the cluster.
1767   int32 max_node_count = 3;
1768 }
1769
1770 // SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
1771 // Engine cluster, which will in turn set them for Google Compute Engine
1772 // resources used by that cluster
1773 message SetLabelsRequest {
1774   // The Google Developers Console [project ID or project
1775   // number](https://developers.google.com/console/help/new/#projectnumber).
1776   // This field is deprecated, use name instead.
1777   string project_id = 1;
1778
1779   // The name of the Google Compute Engine
1780   // [zone](/compute/docs/zones#available) in which the cluster
1781   // resides.
1782   // This field is deprecated, use name instead.
1783   string zone = 2;
1784
1785   // The name of the cluster.
1786   // This field is deprecated, use name instead.
1787   string cluster_id = 3;
1788
1789   // The labels to set for that cluster.
1790   map<string, string> resource_labels = 4;
1791
1792   // The fingerprint of the previous set of labels for this resource,
1793   // used to detect conflicts. The fingerprint is initially generated by
1794   // Container Engine and changes after every request to modify or update
1795   // labels. You must always provide an up-to-date fingerprint hash when
1796   // updating or changing labels. Make a <code>get()</code> request to the
1797   // resource to get the latest fingerprint.
1798   string label_fingerprint = 5;
1799
1800   // The name (project, location, cluster id) of the cluster to set labels.
1801   // Specified in the format 'projects/*/locations/*/clusters/*'.
1802   string name = 7;
1803 }
1804
1805 // SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for
1806 // a cluster.
1807 message SetLegacyAbacRequest {
1808   // The Google Developers Console [project ID or project
1809   // number](https://support.google.com/cloud/answer/6158840).
1810   // This field is deprecated, use name instead.
1811   string project_id = 1;
1812
1813   // The name of the Google Compute Engine
1814   // [zone](/compute/docs/zones#available) in which the cluster
1815   // resides.
1816   // This field is deprecated, use name instead.
1817   string zone = 2;
1818
1819   // The name of the cluster to update.
1820   // This field is deprecated, use name instead.
1821   string cluster_id = 3;
1822
1823   // Whether ABAC authorization will be enabled in the cluster.
1824   bool enabled = 4;
1825
1826   // The name (project, location, cluster id) of the cluster to set legacy abac.
1827   // Specified in the format 'projects/*/locations/*/clusters/*'.
1828   string name = 6;
1829 }
1830
1831 // StartIPRotationRequest creates a new IP for the cluster and then performs
1832 // a node upgrade on each node pool to point to the new IP.
1833 message StartIPRotationRequest {
1834   // The Google Developers Console [project ID or project
1835   // number](https://developers.google.com/console/help/new/#projectnumber).
1836   // This field is deprecated, use name instead.
1837   string project_id = 1;
1838
1839   // The name of the Google Compute Engine
1840   // [zone](/compute/docs/zones#available) in which the cluster
1841   // resides.
1842   // This field is deprecated, use name instead.
1843   string zone = 2;
1844
1845   // The name of the cluster.
1846   // This field is deprecated, use name instead.
1847   string cluster_id = 3;
1848
1849   // The name (project, location, cluster id) of the cluster to start IP rotation.
1850   // Specified in the format 'projects/*/locations/*/clusters/*'.
1851   string name = 6;
1852 }
1853
1854 // CompleteIPRotationRequest moves the cluster master back into single-IP mode.
1855 message CompleteIPRotationRequest {
1856   // The Google Developers Console [project ID or project
1857   // number](https://developers.google.com/console/help/new/#projectnumber).
1858   // This field is deprecated, use name instead.
1859   string project_id = 1;
1860
1861   // The name of the Google Compute Engine
1862   // [zone](/compute/docs/zones#available) in which the cluster
1863   // resides.
1864   // This field is deprecated, use name instead.
1865   string zone = 2;
1866
1867   // The name of the cluster.
1868   // This field is deprecated, use name instead.
1869   string cluster_id = 3;
1870
1871   // The name (project, location, cluster id) of the cluster to complete IP rotation.
1872   // Specified in the format 'projects/*/locations/*/clusters/*'.
1873   string name = 7;
1874 }
1875
1876 // AcceleratorConfig represents a Hardware Accelerator request.
1877 message AcceleratorConfig {
1878   // The number of the accelerator cards exposed to an instance.
1879   int64 accelerator_count = 1;
1880
1881   // The accelerator type resource name. List of supported accelerators
1882   // [here](/compute/docs/gpus/#Introduction)
1883   string accelerator_type = 2;
1884 }
1885
1886 // SetNetworkPolicyRequest enables/disables network policy for a cluster.
1887 message SetNetworkPolicyRequest {
1888   // The Google Developers Console [project ID or project
1889   // number](https://developers.google.com/console/help/new/#projectnumber).
1890   // This field is deprecated, use name instead.
1891   string project_id = 1;
1892
1893   // The name of the Google Compute Engine
1894   // [zone](/compute/docs/zones#available) in which the cluster
1895   // resides.
1896   // This field is deprecated, use name instead.
1897   string zone = 2;
1898
1899   // The name of the cluster.
1900   // This field is deprecated, use name instead.
1901   string cluster_id = 3;
1902
1903   // Configuration options for the NetworkPolicy feature.
1904   NetworkPolicy network_policy = 4;
1905
1906   // The name (project, location, cluster id) of the cluster to set networking
1907   // policy.
1908   // Specified in the format 'projects/*/locations/*/clusters/*'.
1909   string name = 6;
1910 }
1911
1912 // SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
1913 message SetMaintenancePolicyRequest {
1914   // The Google Developers Console [project ID or project
1915   // number](https://support.google.com/cloud/answer/6158840).
1916   string project_id = 1;
1917
1918   // The name of the Google Compute Engine
1919   // [zone](/compute/docs/zones#available) in which the cluster
1920   // resides.
1921   string zone = 2;
1922
1923   // The name of the cluster to update.
1924   string cluster_id = 3;
1925
1926   // The maintenance policy to be set for the cluster. An empty field
1927   // clears the existing maintenance policy.
1928   MaintenancePolicy maintenance_policy = 4;
1929
1930   // The name (project, location, cluster id) of the cluster to set maintenance
1931   // policy.
1932   // Specified in the format 'projects/*/locations/*/clusters/*'.
1933   string name = 5;
1934 }