aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/k8s/v1/cluster.proto
blob: a7b552a9fad200e61280a7e8ec792679ada2bd5f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
syntax = "proto3";

package yandex.cloud.k8s.v1;

import "google/protobuf/timestamp.proto";
import "yandex/cloud/k8s/v1/maintenance.proto";
import "yandex/cloud/k8s/v1/version.proto";
import "yandex/cloud/validation.proto";

option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/k8s/v1;k8s";
option java_package = "yandex.cloud.api.k8s.v1";

// A Kubernetes cluster.
message Cluster {
  enum Status {
    STATUS_UNSPECIFIED = 0;

    // Kubernetes cluster is waiting for resources to be allocated.
    PROVISIONING = 1;

    // Kubernetes cluster is running.
    RUNNING = 2;

    // Kubernetes cluster is being reconciled.
    RECONCILING = 3;

    // Kubernetes cluster is being stopped.
    STOPPING = 4;

    // Kubernetes cluster stopped.
    STOPPED = 5;

    // Kubernetes cluster is being deleted.
    DELETING = 6;

    // Kubernetes cluster is being started.
    STARTING = 7;
  }

  enum Health {
    HEALTH_UNSPECIFIED = 0;

    // Kubernetes cluster is alive and well.
    HEALTHY = 1;

    // Kubernetes cluster is inoperable.
    UNHEALTHY = 2;
  }

  // ID of the Kubernetes cluster.
  string id = 1;

  // ID of the folder that the Kubernetes cluster belongs to.
  string folder_id = 2;

  // Creation timestamp.
  google.protobuf.Timestamp created_at = 3;

  // Name of the Kubernetes cluster.
  string name = 4;

  // Description of the Kubernetes cluster. 0-256 characters long.
  string description = 5;

  // Resource labels as `key:value` pairs. Maximum of 64 per resource.
  map<string, string> labels = 6;

  // Status of the Kubernetes cluster.
  Status status = 7;

  // Health of the Kubernetes cluster.
  Health health = 8;

  // ID of the network the Kubernetes cluster belongs to.
  string network_id = 9;

  // Properties of the master for the Kubernetes cluster.
  Master master = 10;

  // Allocation policy for IP addresses of services and pods inside the Kubernetes cluster in different availability zones.
  IPAllocationPolicy ip_allocation_policy = 11;

  oneof internet_gateway {
    // Gateway IPv4 address.
    string gateway_ipv4_address = 12 [(length) = "<=15"];
  }

  // Service account to be used for provisioning Compute Cloud and VPC resources for Kubernetes cluster.
  string service_account_id = 13;

  // Service account to be used by the worker nodes of the Kubernetes cluster to access Container Registry or to push node logs and metrics.
  string node_service_account_id = 14;

  // When creating a Kubernetes cluster, you should specify one of three release channels. The release channel contains several Kubernetes versions.
  // Channels differ in the set of available versions, the management of auto-updates, and the updates received.
  // You can't change the channel once the Kubernetes cluster is created, you can only recreate the Kubernetes cluster and specify a new release channel.
  // For more details see [documentation](/docs/managed-kubernetes/concepts/release-channels-and-updates).
  ReleaseChannel release_channel = 15;

  NetworkPolicy network_policy = 16;

  // KMS provider configuration.
  KMSProvider kms_provider = 17;

  // Log group where cluster stores cluster system logs, like audit, events, or controlplane logs.
  string log_group_id = 18;

  oneof network_implementation {
    Cilium cilium = 19;
  }
}

enum ReleaseChannel {
  RELEASE_CHANNEL_UNSPECIFIED = 0;

  // Minor updates with new functions and improvements are often added.
  // You can't disable automatic updates in this channel, but you can specify a time period for automatic updates.
  RAPID = 1;

  // New functions and improvements are added in chunks shortly after they appear on `RAPID`.
  REGULAR = 2;

  // Only updates related to bug fixes or security improvements are added.
  STABLE = 3;
}

message Master {
  oneof master_type {
    // Parameters of the availability zone for the master.
    ZonalMaster zonal_master = 1;

    // Parameters of the region for the master.
    RegionalMaster regional_master = 7;
  }

  // Locations specification for Kubernetes control-plane (master) instances.
  repeated Location locations = 10;

  // Number of etcd nodes in cluster.
  int64 etcd_cluster_size = 11;

  // Version of Kubernetes components that runs on the master.
  string version = 2;

  // Endpoints of the master. Endpoints constitute of scheme and port (i.e. `https://ip-address:port`)
  //and can be used by the clients to communicate with the Kubernetes API of the Kubernetes cluster.
  MasterEndpoints endpoints = 3;

  // Master authentication parameters are used to establish trust between the master and a client.
  MasterAuth master_auth = 4;

  // Detailed information about the Kubernetes version that is running on the master.
  VersionInfo version_info = 5;

  // Maintenance policy of the master.
  MasterMaintenancePolicy maintenance_policy = 6;

  // Master security groups.
  repeated string security_group_ids = 8;

  // Cloud Logging for master components.
  MasterLogging master_logging = 9;
}

message MasterAuth {
  // PEM-encoded public certificate that is the root of trust for the Kubernetes cluster.
  string cluster_ca_certificate = 1;
}

message ZonalMaster {
  // ID of the availability zone where the master resides.
  string zone_id = 1;

  // IPv4 internal network address that is assigned to the master.
  string internal_v4_address = 2;

  // IPv4 external network address that is assigned to the master.
  string external_v4_address = 3;
}

message RegionalMaster {
  // ID of the region where the master resides.
  string region_id = 1;

  // IPv4 internal network address that is assigned to the master.
  string internal_v4_address = 2;

  // IPv4 external network address that is assigned to the master.
  string external_v4_address = 3;

  // IPv6 external network address that is assigned to the master.
  string external_v6_address = 4;
}

message Location {
  // ID of the availability zone where the master resides.
  string zone_id = 1;

  // ID of the VPC network's subnet where the master resides.
  string subnet_id = 2;
}

message MasterEndpoints {
  // Internal endpoint that can be used to connect to the master from cloud networks.
  string internal_v4_endpoint = 1;

  // External endpoint that can be used to access Kubernetes cluster API from the internet (outside of the cloud).
  string external_v4_endpoint = 2;

  // External IPv6 endpoint that can be used to access Kubernetes cluster API from the internet (outside of the cloud).
  string external_v6_endpoint = 3;
}

message IPAllocationPolicy {
  reserved 3 to 4;
  // CIDR block. IP range for allocating pod addresses.
  //
  // It should not overlap with any subnet in the network the Kubernetes cluster located in. Static routes will be
  // set up for this CIDR blocks in node subnets.
  string cluster_ipv4_cidr_block = 1;

  // Size of the masks that are assigned for each node in the cluster.
  //
  // If not specified, 24 is used.
  int64 node_ipv4_cidr_mask_size = 5 [(value) = "0,24,25,26,27,28"];

  // CIDR block. IP range Kubernetes service Kubernetes cluster IP addresses will be allocated from.
  //
  // It should not overlap with any subnet in the network the Kubernetes cluster located in.
  string service_ipv4_cidr_block = 2;

  // IPv6 range for allocating pod IP addresses.
  string cluster_ipv6_cidr_block = 6;
  // IPv6 range for allocating Kubernetes service IP addresses
  string service_ipv6_cidr_block = 7;
}

message MasterMaintenancePolicy {
  // If set to true, automatic updates are installed in the specified period of time with no interaction from the user.
  // If set to false, automatic upgrades are disabled.
  bool auto_upgrade = 1;

  // Maintenance window settings. Update will start at the specified time and last no more than the specified duration.
  // The time is set in UTC.
  MaintenanceWindow maintenance_window = 2;
}

message MasterLogging {
  // Identifies whether Cloud Logging is enabled for master components.
  bool enabled = 1;

  // The destination of master components' logs.
  oneof destination {
    // ID of the log group where logs of master components should be stored.
    string log_group_id = 2 [(pattern) = "([a-zA-Z][-a-zA-Z0-9_.]{0,63})?"];

    // ID of the folder where logs should be stored (in default group).
    string folder_id = 3 [(pattern) = "([a-zA-Z][-a-zA-Z0-9_.]{0,63})?"];
  }

  // Identifies whether Cloud Logging is enabled for audit logs.
  bool audit_enabled = 4;

  // Identifies whether Cloud Logging is enabled for cluster-autoscaler.
  bool cluster_autoscaler_enabled = 5;

  // Identifies whether Cloud Logging is enabled for kube-apiserver.
  bool kube_apiserver_enabled = 6;

  // Identifies whether Cloud Logging is enabled for events.
  bool events_enabled = 7;
}

message NetworkPolicy {
  enum Provider {
    PROVIDER_UNSPECIFIED = 0;
    CALICO = 1;
  }
  Provider provider = 1;
}

message KMSProvider {
  // KMS key ID for secrets encryption.
  // To obtain a KMS key ID use a [yandex.cloud.kms.v1.SymmetricKeyService.List] request.
  string key_id = 1;
}

message Cilium {
  enum RoutingMode {
    ROUTING_MODE_UNSPECIFIED = 0;
    TUNNEL = 1;
  }

  RoutingMode routing_mode = 1;
}