aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/googleapis/google/container/v1/cluster_service.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/container/v1/cluster_service.proto')
-rw-r--r--third_party/googleapis/google/container/v1/cluster_service.proto986
1 files changed, 986 insertions, 0 deletions
diff --git a/third_party/googleapis/google/container/v1/cluster_service.proto b/third_party/googleapis/google/container/v1/cluster_service.proto
new file mode 100644
index 0000000000..8215fa14dd
--- /dev/null
+++ b/third_party/googleapis/google/container/v1/cluster_service.proto
@@ -0,0 +1,986 @@
+// Copyright 2017 Google Inc.
+//
+// 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/protobuf/empty.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/container/v1;container";
+option java_multiple_files = true;
+option java_outer_classname = "ClusterServiceProto";
+option java_package = "com.google.container.v1";
+
+
+// Google Container Engine Cluster Manager v1
+service ClusterManager {
+ // 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/projects/{project_id}/zones/{zone}/clusters" };
+ }
+
+ // Gets the details of a specific cluster.
+ rpc GetCluster(GetClusterRequest) returns (Cluster) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}" };
+ }
+
+ // 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](/compute/docs/networks-and-firewalls#networks).
+ //
+ // One firewall is added for the cluster. After cluster creation,
+ // the cluster 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 is being used by the cluster.
+ rpc CreateCluster(CreateClusterRequest) returns (Operation) {
+ option (google.api.http) = { post: "/v1/projects/{project_id}/zones/{zone}/clusters" body: "*" };
+ }
+
+ // Updates the settings of a specific cluster.
+ rpc UpdateCluster(UpdateClusterRequest) returns (Operation) {
+ option (google.api.http) = { put: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}" 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
+ // (e.g. load balancer resources) will not be deleted if they weren't present
+ // at the initial create time.
+ rpc DeleteCluster(DeleteClusterRequest) returns (Operation) {
+ option (google.api.http) = { delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}" };
+ }
+
+ // Lists all operations in a project in a specific zone or all zones.
+ rpc ListOperations(ListOperationsRequest) returns (ListOperationsResponse) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/operations" };
+ }
+
+ // Gets the specified operation.
+ rpc GetOperation(GetOperationRequest) returns (Operation) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}" };
+ }
+
+ // Cancels the specified operation.
+ rpc CancelOperation(CancelOperationRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = { post: "/v1/projects/{project_id}/zones/{zone}/operations/{operation_id}:cancel" body: "*" };
+ }
+
+ // Returns configuration info about the Container Engine service.
+ rpc GetServerConfig(GetServerConfigRequest) returns (ServerConfig) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/serverconfig" };
+ }
+
+ // Lists the node pools for a cluster.
+ rpc ListNodePools(ListNodePoolsRequest) returns (ListNodePoolsResponse) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools" };
+ }
+
+ // Retrieves the node pool requested.
+ rpc GetNodePool(GetNodePoolRequest) returns (NodePool) {
+ option (google.api.http) = { get: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}" };
+ }
+
+ // Creates a node pool for a cluster.
+ rpc CreateNodePool(CreateNodePoolRequest) returns (Operation) {
+ option (google.api.http) = { post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools" body: "*" };
+ }
+
+ // Deletes a node pool from a cluster.
+ rpc DeleteNodePool(DeleteNodePoolRequest) returns (Operation) {
+ option (google.api.http) = { delete: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}" };
+ }
+
+ // Roll back the previously Aborted or Failed NodePool upgrade.
+ // This will be an no-op if the last upgrade successfully completed.
+ rpc RollbackNodePoolUpgrade(RollbackNodePoolUpgradeRequest) returns (Operation) {
+ option (google.api.http) = { post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}:rollback" body: "*" };
+ }
+
+ // Sets the NodeManagement options for a node pool.
+ rpc SetNodePoolManagement(SetNodePoolManagementRequest) returns (Operation) {
+ option (google.api.http) = { post: "/v1/projects/{project_id}/zones/{zone}/clusters/{cluster_id}/nodePools/{node_pool_id}/setManagement" body: "*" };
+ }
+}
+
+// Parameters that describe the nodes in a cluster.
+message NodeConfig {
+ // The name of a Google Compute Engine [machine
+ // type](/compute/docs/machine-types) (e.g.
+ // `n1-standard-1`).
+ //
+ // If unspecified, the default machine type is
+ // `n1-standard-1`.
+ 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 [Google Container Registry](/container-registry/)).
+ //
+ // If unspecified, no scopes are added, unless Cloud Logging or Cloud
+ // Monitoring are enabled, in which case their required scopes will be added.
+ repeated string oauth_scopes = 3;
+
+ // The Google Cloud Platform Service Account to be used by the node VMs. 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 four reserved keys:
+ // "instance-template", "kube-env", "startup-script", and "user-data"
+ //
+ // 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.
+ 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:
+ // http://kubernetes.io/v1.1/docs/user-guide/labels.html
+ map<string, string> labels = 6;
+
+ // The number of local SSD disks to be attached to the node.
+ //
+ // The limit for this value is dependant upon the maximum number of
+ // disks available on a machine per zone. See:
+ // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits
+ // 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
+ // inforamtion about preemptible VM instances.
+ bool preemptible = 10;
+}
+
+// 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.
+ string username = 1;
+
+ // 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.
+ string password = 2;
+
+ // [Output only] Base64-encoded public certificate that is the root of
+ // trust for the cluster.
+ string cluster_ca_certificate = 100;
+
+ // [Output only] Base64-encoded public certificate used by clients to
+ // authenticate to the cluster endpoint.
+ string client_certificate = 101;
+
+ // [Output only] Base64-encoded private key used by clients to authenticate
+ // to the cluster endpoint.
+ string client_key = 102;
+}
+
+// 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 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 a Heapster pod is running in the cluster,
+ // which is also used by the Cloud Monitoring service.
+ bool disabled = 1;
+}
+
+// A Google Container 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 may be unusable. Details
+ // can be found in the `statusMessage` field.
+ ERROR = 5;
+ }
+
+ // The name of this cluster. The name must be unique within this project
+ // and zone, 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 <a href="/compute/docs/resource-quotas">resource quota</a>
+ // 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.
+ int32 initial_node_count = 3;
+
+ // Parameters used in creating the cluster's nodes.
+ // See `nodeConfig` for the description of its properties.
+ // 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.
+ //
+ // If unspecified, the defaults are used.
+ NodeConfig node_config = 4;
+
+ // The authentication information for accessing the master endpoint.
+ MasterAuth master_auth = 5;
+
+ // The logging service the cluster should use to write logs.
+ // Currently available options:
+ //
+ // * `logging.googleapis.com` - the Google Cloud Logging service.
+ // * `none` - no logs will be exported from the cluster.
+ // * if left as an empty string,`logging.googleapis.com` will be used.
+ string logging_service = 6;
+
+ // The monitoring service the cluster should use to write metrics.
+ // Currently available options:
+ //
+ // * `monitoring.googleapis.com` - the Google Cloud Monitoring service.
+ // * `none` - no metrics will be exported from the cluster.
+ // * if left as an empty string, `monitoring.googleapis.com` will be used.
+ string monitoring_service = 7;
+
+ // The name of the Google Compute Engine
+ // [network](/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](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
+ // notation (e.g. `10.96.0.0/14`). Leave blank to have
+ // one automatically chosen or specify a `/14` block in `10.0.0.0/8`.
+ 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](/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
+ // [locations](/compute/docs/zones#available) in which the cluster's nodes
+ // should be located.
+ 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;
+
+ // [Output only] Server-defined URL for the resource.
+ string self_link = 100;
+
+ // [Output only] The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 101;
+
+ // [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;
+
+ // [Output only] The software version of the master endpoint and kubelets used
+ // in the cluster when it was first created. The version can be upgraded over
+ // time.
+ string initial_cluster_version = 103;
+
+ // [Output only] The current software version of the master endpoint.
+ string current_master_version = 104;
+
+ // [Output only] 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;
+
+ // [Output only] The time the cluster was created, in
+ // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
+ string create_time = 106;
+
+ // [Output only] The current status of this cluster.
+ Status status = 107;
+
+ // [Output only] Additional information about the current status of this
+ // cluster, if available.
+ string status_message = 108;
+
+ // [Output only] The size of the address space on each node for hosting
+ // containers. This is provisioned from within the `container_ipv4_cidr`
+ // range.
+ int32 node_ipv4_cidr_size = 109;
+
+ // [Output only] The IP address range of the Kubernetes services in
+ // this cluster, in
+ // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
+ // notation (e.g. `1.2.3.4/29`). Service addresses are
+ // typically put in the last `/16` from the container CIDR.
+ string services_ipv4_cidr = 110;
+
+ // [Output only] The resource URLs of [instance
+ // groups](/compute/docs/instance-groups/) associated with this
+ // cluster.
+ repeated string instance_group_urls = 111;
+
+ // [Output only] The number of nodes currently in the cluster.
+ int32 current_node_count = 112;
+
+ // [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;
+}
+
+// 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). Use `-` to upgrade to the latest version supported by
+ // the server.
+ string desired_node_version = 4;
+
+ // The monitoring service the cluster should use to write metrics.
+ // Currently available options:
+ //
+ // * "monitoring.googleapis.com" - the Google Cloud Monitoring service
+ // * "none" - no metrics will be exported from the cluster
+ 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;
+
+ // 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
+ // [locations](/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 desired_locations = 10;
+
+ // The Kubernetes version to change the master to. The only valid value is the
+ // latest supported version. Use "-" to have the server automatically select
+ // the latest version.
+ string desired_master_version = 100;
+}
+
+// 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.
+ enum Type {
+ // Not set.
+ TYPE_UNSPECIFIED = 0;
+
+ // Cluster create.
+ CREATE_CLUSTER = 1;
+
+ // Cluster delete.
+ DELETE_CLUSTER = 2;
+
+ // A master upgrade.
+ UPGRADE_MASTER = 3;
+
+ // A node upgrade.
+ UPGRADE_NODES = 4;
+
+ // Cluster repair.
+ REPAIR_CLUSTER = 5;
+
+ // Cluster update.
+ UPDATE_CLUSTER = 6;
+
+ // Node pool create.
+ CREATE_NODE_POOL = 7;
+
+ // Node pool delete.
+ DELETE_NODE_POOL = 8;
+
+ // Set node pool management.
+ SET_NODE_POOL_MANAGEMENT = 9;
+ }
+
+ // The server-assigned ID for the operation.
+ string name = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the operation
+ // is taking place.
+ string zone = 2;
+
+ // The operation type.
+ Type operation_type = 3;
+
+ // The current status of the operation.
+ Status status = 4;
+
+ // Detailed operation progress, if available.
+ string detail = 8;
+
+ // If an error has occurred, a textual description of the error.
+ string status_message = 5;
+
+ // Server-defined URL for the resource.
+ string self_link = 6;
+
+ // Server-defined URL for the target of the operation.
+ string target_link = 7;
+}
+
+// CreateClusterRequest creates a cluster.
+message CreateClusterRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // A [cluster
+ // resource](/container-engine/reference/rest/v1/projects.zones.clusters)
+ Cluster cluster = 3;
+}
+
+// GetClusterRequest gets the settings of a cluster.
+message GetClusterRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster to retrieve.
+ string cluster_id = 3;
+}
+
+// UpdateClusterRequest updates the settings of a cluster.
+message UpdateClusterRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster to upgrade.
+ string cluster_id = 3;
+
+ // A description of the update.
+ ClusterUpdate update = 4;
+}
+
+// DeleteClusterRequest deletes a cluster.
+message DeleteClusterRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster to delete.
+ string cluster_id = 3;
+}
+
+// ListClustersRequest lists clusters.
+message ListClustersRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides, or "-" for all zones.
+ string zone = 2;
+}
+
+// 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 {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The server-assigned `name` of the operation.
+ string operation_id = 3;
+}
+
+// ListOperationsRequest lists operations.
+message ListOperationsRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine [zone](/compute/docs/zones#available)
+ // to return operations for, or `-` for all zones.
+ string zone = 2;
+}
+
+// CancelOperationRequest cancels a single operation.
+message CancelOperationRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the operation resides.
+ string zone = 2;
+
+ // The server-assigned `name` of the operation.
+ string operation_id = 3;
+}
+
+// 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 Container Engine service configuration.
+message GetServerConfigRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine [zone](/compute/docs/zones#available)
+ // to return operations for.
+ string zone = 2;
+}
+
+// Container Engine service configuration.
+message ServerConfig {
+ // Version of Kubernetes the service deploys by default.
+ string default_cluster_version = 1;
+
+ // List of valid node upgrade target versions.
+ 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.
+ repeated string valid_master_versions = 6;
+}
+
+// CreateNodePoolRequest creates a node pool for a cluster.
+message CreateNodePoolRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://developers.google.com/console/help/new/#projectnumber).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster.
+ string cluster_id = 3;
+
+ // The node pool to create.
+ NodePool node_pool = 4;
+}
+
+// DeleteNodePoolRequest deletes a node pool for a cluster.
+message DeleteNodePoolRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://developers.google.com/console/help/new/#projectnumber).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster.
+ string cluster_id = 3;
+
+ // The name of the node pool to delete.
+ string node_pool_id = 4;
+}
+
+// ListNodePoolsRequest lists the node pool(s) for a cluster.
+message ListNodePoolsRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://developers.google.com/console/help/new/#projectnumber).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster.
+ string cluster_id = 3;
+}
+
+// GetNodePoolRequest retrieves a node pool for a cluster.
+message GetNodePoolRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://developers.google.com/console/help/new/#projectnumber).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster.
+ string cluster_id = 3;
+
+ // The name of the node pool.
+ string node_pool_id = 4;
+}
+
+// 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 {
+ // 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;
+ }
+
+ // 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 <a href="/compute/docs/resource-quotas">resource quota</a>
+ // is sufficient for this number of instances. You must also have available
+ // firewall and routes quota.
+ int32 initial_node_count = 3;
+
+ // [Output only] Server-defined URL for the resource.
+ string self_link = 100;
+
+ // [Output only] The version of the Kubernetes of this node.
+ string version = 101;
+
+ // [Output only] The resource URLs of [instance
+ // groups](/compute/docs/instance-groups/) associated with this
+ // node pool.
+ repeated string instance_group_urls = 102;
+
+ // [Output only] The status of the nodes in this pool instance.
+ Status status = 103;
+
+ // [Output only] Additional information about the current status of this
+ // node pool instance, if available.
+ string status_message = 104;
+
+ // 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;
+}
+
+// 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;
+}
+
+// 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;
+
+ // [Output only] This field is set when upgrades are about to commence
+ // with the description of the upgrade.
+ string description = 2;
+}
+
+// SetNodePoolManagementRequest sets the node management properties of a node
+// pool.
+message SetNodePoolManagementRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster to update.
+ string cluster_id = 3;
+
+ // The name of the node pool to update.
+ string node_pool_id = 4;
+
+ // NodeManagement configuration for the node pool.
+ NodeManagement management = 5;
+}
+
+// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
+// NodePool upgrade. This will be an no-op if the last upgrade successfully
+// completed.
+message RollbackNodePoolUpgradeRequest {
+ // The Google Developers Console [project ID or project
+ // number](https://support.google.com/cloud/answer/6158840).
+ string project_id = 1;
+
+ // The name of the Google Compute Engine
+ // [zone](/compute/docs/zones#available) in which the cluster
+ // resides.
+ string zone = 2;
+
+ // The name of the cluster to rollback.
+ string cluster_id = 3;
+
+ // The name of the node pool to rollback.
+ string node_pool_id = 4;
+}
+
+// ListNodePoolsResponse is the result of ListNodePoolsRequest.
+message ListNodePoolsResponse {
+ // A list of node pools for a cluster.
+ repeated NodePool node_pools = 1;
+}
+
+// NodePoolAutoscaling contains information required by cluster autoscaler to
+// adjust the size of the node pool to the current cluster usage.
+message NodePoolAutoscaling {
+ // Is autoscaling enabled for this node pool.
+ bool enabled = 1;
+
+ // Minimum number of nodes in the NodePool. Must be >= 1 and <=
+ // max_node_count.
+ int32 min_node_count = 2;
+
+ // Maximum number of nodes in the NodePool. Must be >= min_node_count. There
+ // has to enough quota to scale up the cluster.
+ int32 max_node_count = 3;
+}