@controlplane/schema 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/build/src/interfaces/command.d.ts +175 -1
  2. package/build/src/interfaces/discovery.d.ts +1 -0
  3. package/build/src/interfaces/domain.d.ts +2 -1
  4. package/build/src/interfaces/env.d.ts +1 -0
  5. package/build/src/interfaces/envoy.d.ts +14 -0
  6. package/build/src/interfaces/envoy.js +3 -0
  7. package/build/src/interfaces/envoyAccessLog.d.ts +21 -0
  8. package/build/src/interfaces/envoyAccessLog.js +3 -0
  9. package/build/src/interfaces/envoyCluster.d.ts +64 -0
  10. package/build/src/interfaces/envoyCluster.js +3 -0
  11. package/build/src/interfaces/envoyCommon.d.ts +437 -0
  12. package/build/src/interfaces/envoyCommon.js +3 -0
  13. package/build/src/interfaces/envoyExcExtAuth.d.ts +12 -0
  14. package/build/src/interfaces/envoyExcExtAuth.js +3 -0
  15. package/build/src/interfaces/envoyHttp.d.ts +273 -0
  16. package/build/src/interfaces/envoyHttp.js +3 -0
  17. package/build/src/interfaces/envoyRateLimit.d.ts +45 -0
  18. package/build/src/interfaces/envoyRateLimit.js +3 -0
  19. package/build/src/interfaces/gvc.d.ts +7 -3
  20. package/build/src/interfaces/mk8s.d.ts +27 -3
  21. package/build/src/interfaces/mk8sAddons.d.ts +20 -2
  22. package/build/src/interfaces/mk8sAws.d.ts +12 -3
  23. package/build/src/interfaces/mk8sCommon.d.ts +5 -1
  24. package/build/src/interfaces/mk8sEphemeral.d.ts +18 -0
  25. package/build/src/interfaces/mk8sEphemeral.js +3 -0
  26. package/build/src/interfaces/mk8sGeneric.d.ts +4 -0
  27. package/build/src/interfaces/mk8sHetzner.d.ts +10 -1
  28. package/build/src/interfaces/mk8sLambdalabs.d.ts +1 -1
  29. package/build/src/interfaces/mk8sLinode.d.ts +2 -1
  30. package/build/src/interfaces/mk8sPaperspace.d.ts +2 -1
  31. package/build/src/interfaces/org.d.ts +21 -1
  32. package/build/src/interfaces/orgLogging.d.ts +22 -0
  33. package/build/src/interfaces/port.d.ts +1 -0
  34. package/build/src/interfaces/port.js +3 -0
  35. package/build/src/interfaces/secret.d.ts +1 -0
  36. package/build/src/interfaces/tracing.d.ts +9 -0
  37. package/build/src/interfaces/util.d.ts +0 -0
  38. package/build/src/interfaces/util.js +2 -0
  39. package/build/src/interfaces/volumeSet.d.ts +15 -14
  40. package/build/src/interfaces/volumeSpec.d.ts +5 -0
  41. package/build/src/interfaces/volumeSpec.js +3 -0
  42. package/build/src/interfaces/workload.d.ts +15 -60
  43. package/build/src/interfaces/workloadOptions.d.ts +18 -0
  44. package/build/src/interfaces/workloadOptions.js +3 -0
  45. package/package.json +1 -1
@@ -0,0 +1,273 @@
1
+ import { DurationRestricted, Duration, RetryPolicy, Empty, RouteMatch, RouteMatchRestricted, DataSource, GoogleCallCredentials, Struct, HeaderValue, ApiVersion, UInt32, Priority, GrpcService, ListStringMatcher, HttpStatus, FractionalPercent, RuntimeFeatureFlag, StringMatcher, RuntimeFractionalPercent, HeaderValueOption } from './envoyCommon';
2
+ export interface HttpUri {
3
+ uri: string;
4
+ cluster: string;
5
+ timeout: string | {
6
+ seconds?: number;
7
+ nanos?: number;
8
+ };
9
+ }
10
+ export interface HttpUriRestricted {
11
+ uri: string;
12
+ cluster: string;
13
+ timeout?: DurationRestricted;
14
+ }
15
+ export interface BufferSettings {
16
+ max_request_bytes?: number;
17
+ allow_partial_message?: boolean;
18
+ pack_as_bytes?: boolean;
19
+ }
20
+ export interface JwtProvider {
21
+ issuer?: string;
22
+ audiences?: string[];
23
+ claim_to_headers?: {
24
+ header_name: string;
25
+ claim_name: string;
26
+ }[];
27
+ remote_jwks?: {
28
+ http_uri?: HttpUri;
29
+ cache_duration?: Duration;
30
+ async_fetch?: {
31
+ fast_listener?: boolean;
32
+ failed_refetch_duration?: Duration;
33
+ };
34
+ retry_policy?: RetryPolicy;
35
+ };
36
+ }
37
+ export interface JwtProviderUIRestricted {
38
+ issuer?: string;
39
+ audiences?: string[];
40
+ claim_to_headers?: {
41
+ header_name: string;
42
+ claim_name: string;
43
+ }[];
44
+ remote_jwks?: {
45
+ http_uri?: HttpUriRestricted;
46
+ cache_duration?: DurationRestricted;
47
+ };
48
+ }
49
+ export interface JwtRequirement {
50
+ provider_name?: string;
51
+ provider_and_audiences?: {
52
+ provider_name?: string;
53
+ audiences?: string[];
54
+ };
55
+ requires_any?: {
56
+ requirements?: any[];
57
+ };
58
+ requires_all?: {
59
+ requirements?: any[];
60
+ };
61
+ allow_missing_or_failed?: Empty;
62
+ allow_missing?: Empty;
63
+ }
64
+ export interface JwtRequirementRestricted {
65
+ provider_name?: string;
66
+ }
67
+ export interface JwtRequirementRule {
68
+ match?: RouteMatch;
69
+ requires?: JwtRequirement;
70
+ requirement_name?: string;
71
+ }
72
+ export interface JwtRequirementRuleRestricted {
73
+ match?: RouteMatchRestricted;
74
+ requires?: JwtRequirementRestricted;
75
+ }
76
+ export interface JwtRequirementMap {
77
+ [x: string]: JwtRequirement;
78
+ }
79
+ export interface RateLimitService {
80
+ grpc_service: {
81
+ envoy_grpc?: {
82
+ cluster_name: string;
83
+ authority?: string;
84
+ retry_policy?: RetryPolicy;
85
+ };
86
+ google_grpc?: {
87
+ target_uri: string;
88
+ channel_credentials?: {
89
+ ssl_credentials?: {
90
+ root_certs?: DataSource;
91
+ private_key?: DataSource;
92
+ cert_chain?: DataSource;
93
+ };
94
+ google_default?: Empty;
95
+ };
96
+ call_credentials?: GoogleCallCredentials[];
97
+ stat_prefix: string;
98
+ credentials_factory_name?: string;
99
+ config?: Struct;
100
+ };
101
+ timeout?: string | {
102
+ seconds?: number;
103
+ nanos?: number;
104
+ };
105
+ initial_metadata?: HeaderValue[];
106
+ };
107
+ transport_api_version?: ApiVersion;
108
+ }
109
+ export interface Descriptor {
110
+ key: string;
111
+ value?: string;
112
+ rate_limit?: {
113
+ name?: string;
114
+ replaces?: {
115
+ name?: string;
116
+ }[];
117
+ unit?: 'second' | 'minute' | 'hour' | 'day';
118
+ requests_per_unit?: UInt32;
119
+ };
120
+ shadow_mode?: string;
121
+ detailed_metric?: string;
122
+ }
123
+ export interface ExtAuthz {
124
+ priority?: Priority;
125
+ excludedWorkloads?: string[];
126
+ name: 'envoy.filters.http.ext_authz';
127
+ typed_config?: {
128
+ grpc_service?: GrpcService;
129
+ http_service?: {
130
+ server_uri?: HttpUri;
131
+ path_prefix?: string;
132
+ authroization_request?: {
133
+ allowed_headers?: ListStringMatcher;
134
+ headers_to_add?: HeaderValue[];
135
+ };
136
+ authorization_response?: {
137
+ allowed_upstream_headers?: ListStringMatcher;
138
+ allowed_upstream_headers_to_append?: ListStringMatcher;
139
+ allowed_client_headers?: ListStringMatcher;
140
+ allowed_client_headers_on_success?: ListStringMatcher;
141
+ dynamic_metadata_from_headers?: ListStringMatcher;
142
+ };
143
+ };
144
+ failure_mode_allow?: boolean;
145
+ failure_mode_allow_header_add?: boolean;
146
+ with_request_body?: BufferSettings;
147
+ clear_route_cache?: boolean;
148
+ status_on_error?: HttpStatus;
149
+ metadata_context_namespaces?: string[];
150
+ typed_metadata_context_namespaces?: string[];
151
+ route_metadata_context_namespaces?: string[];
152
+ route_typed_metadata_context_namespaces?: string[];
153
+ filter_enabled?: FractionalPercent;
154
+ deny_at_disable?: RuntimeFeatureFlag;
155
+ include_peer_certificate?: boolean;
156
+ stat_prefix?: string;
157
+ bootstrap_metadata_labels_key?: string;
158
+ allowed_headers?: ListStringMatcher;
159
+ include_tls_session?: boolean;
160
+ charge_cluster_response_stats?: boolean;
161
+ transport_api_version?: ApiVersion;
162
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz';
163
+ };
164
+ }
165
+ export interface JwtAuthn {
166
+ priority?: Priority;
167
+ excludedWorkloads?: string[];
168
+ name: 'envoy.filters.http.jwt_authn';
169
+ typed_config?: {
170
+ providers?: {
171
+ [x: string]: JwtProvider;
172
+ };
173
+ rules?: JwtRequirementRuleRestricted[];
174
+ filter_state_rules?: {
175
+ name: string;
176
+ requires?: JwtRequirementMap;
177
+ };
178
+ bypass_cors_preflight?: boolean;
179
+ requirement_map?: {
180
+ [x: string]: JwtRequirement;
181
+ };
182
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication';
183
+ };
184
+ }
185
+ export interface GrpcWeb {
186
+ priority?: Priority;
187
+ excludedWorkloads?: string[];
188
+ name: 'envoy.filters.http.grpc_web';
189
+ typed_config?: {
190
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb';
191
+ };
192
+ }
193
+ export interface GrpcJsonTranscoder {
194
+ priority?: Priority;
195
+ excludedWorkloads?: string[];
196
+ name: 'envoy.filters.http.grpc_json_transcoder';
197
+ typed_config?: {
198
+ proto_descriptor?: string;
199
+ proto_descriptor_bin?: any;
200
+ services?: string[];
201
+ print_options?: {
202
+ add_whitespace?: boolean;
203
+ always_print_primitive_fields?: boolean;
204
+ always_print_enums_as_ints?: boolean;
205
+ preserve_proto_field_names?: boolean;
206
+ stream_newline_delimited?: boolean;
207
+ };
208
+ match_incoming_request_route?: boolean;
209
+ ignored_query_parameters?: string[];
210
+ auto_mapping?: boolean;
211
+ ignore_unknown_query_parameters?: boolean;
212
+ convert_grpc_status?: boolean;
213
+ url_unescape_spec?: 'ALL_CHARACTERS_EXCEPT_RESERVED' | 'ALL_CHARACTERS_EXCEPT_SLASH' | 'ALL_CHARACTERS';
214
+ query_param_unescape_plus?: boolean;
215
+ match_unregistered_custom_verb?: boolean;
216
+ request_validation_options?: {
217
+ reject_unknown_method?: boolean;
218
+ reject_unknown_query_parameters?: boolean;
219
+ reject_binding_body_field_collisions?: boolean;
220
+ };
221
+ case_insensitive_enum_parsing?: boolean;
222
+ max_request_body_size?: UInt32;
223
+ max_response_body_size?: UInt32;
224
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.grpc_json_transcoder.v3.GrpcJsonTranscoder';
225
+ };
226
+ }
227
+ export interface Cors {
228
+ priority?: Priority;
229
+ excludedWorkloads?: string[];
230
+ name: 'envoy.filters.http.cors';
231
+ typed_config?: {
232
+ allow_origin_string_match?: StringMatcher[];
233
+ allow_methods?: string;
234
+ allow_headers?: string;
235
+ expose_headers?: string;
236
+ max_age?: string;
237
+ allow_credentials?: boolean;
238
+ filter_enabled?: RuntimeFractionalPercent;
239
+ shadow_enabled?: RuntimeFractionalPercent;
240
+ allow_private_network_access?: boolean;
241
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors';
242
+ };
243
+ }
244
+ export interface RateLimit {
245
+ priority?: Priority;
246
+ excludedWorkloads?: string[];
247
+ name: 'envoy.filters.http.ratelimit';
248
+ typed_config?: {
249
+ domain: string;
250
+ stage?: number;
251
+ request_type?: 'internal' | 'external' | 'both';
252
+ timeout?: Duration;
253
+ failure_mode_deny?: boolean;
254
+ rate_limited_as_resource_exhausted?: boolean;
255
+ rate_limit_service?: RateLimitService;
256
+ enable_x_ratelimit_headers?: 'OFF' | 'DRAFT_VERSION_03';
257
+ disable_x_envoy_ratelimited_header?: boolean;
258
+ rate_limited_status?: HttpStatus;
259
+ response_headers_to_add?: HeaderValueOption[];
260
+ status_on_error?: HttpStatus;
261
+ stat_prefix?: string;
262
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit';
263
+ };
264
+ }
265
+ export interface ConnectRpc {
266
+ priority?: Priority;
267
+ excludedWorkloads?: string[];
268
+ name: 'envoy.filters.http.connect_grpc_bridge';
269
+ typed_config?: {
270
+ "@type": 'type.googleapis.com/envoy.extensions.filters.http.connect_grpc_bridge.v3.FilterConfig';
271
+ };
272
+ }
273
+ export type HttpFilter = ExtAuthz | JwtAuthn | GrpcWeb | ConnectRpc | GrpcJsonTranscoder | Cors | RateLimit;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ /* auto-generated */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,45 @@
1
+ import { RetryPolicy, DataSource, Empty, GoogleCallCredentials, Struct, ApiVersion, Duration, HttpStatus, HeaderValueOption } from './envoyCommon';
2
+ export interface RateLimitService {
3
+ grpc_service: {
4
+ envoy_grpc?: {
5
+ cluster_name: string;
6
+ authority?: string;
7
+ retry_policy?: RetryPolicy;
8
+ };
9
+ google_grpc?: {
10
+ target_uri: string;
11
+ channel_credentials?: {
12
+ ssl_credentials?: {
13
+ root_certs?: DataSource;
14
+ private_key?: DataSource;
15
+ cert_chain?: DataSource;
16
+ };
17
+ google_default?: Empty;
18
+ };
19
+ call_credentials?: GoogleCallCredentials[];
20
+ stat_prefix: string;
21
+ credentials_factory_name?: string;
22
+ config?: Struct;
23
+ };
24
+ timeout?: string | {
25
+ seconds?: number;
26
+ nanos?: number;
27
+ };
28
+ };
29
+ transport_api_version?: ApiVersion;
30
+ }
31
+ export interface RateLimit {
32
+ domain: string;
33
+ stage?: number;
34
+ request_type?: 'internal' | 'external' | 'both';
35
+ timeout?: Duration;
36
+ failure_mode_deny?: boolean;
37
+ rate_limited_as_resource_exhausted?: boolean;
38
+ rate_limit_service?: RateLimitService;
39
+ enable_x_ratelimit_headers?: 'OFF' | 'DRAFT_VERSION_03';
40
+ disable_x_envoy_ratelimited_header?: boolean;
41
+ rate_limited_status?: HttpStatus;
42
+ response_headers?: HeaderValueOption[];
43
+ status_on_error?: HttpStatus;
44
+ stat_prefix?: string;
45
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ /* auto-generated */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,6 @@
1
1
  import { Query } from './query';
2
2
  import { Tracing } from './tracing';
3
+ import { EnvoyFilters } from './envoy';
3
4
  import { EnvVar } from './env';
4
5
  import { Name, Kind, Tags, Links } from './base';
5
6
  export interface GvcStatus {
@@ -15,13 +16,12 @@ export interface GvcSpec {
15
16
  domain?: string;
16
17
  tracing?: Tracing;
17
18
  sidecar?: {
18
- envoy?: {
19
- [x: string]: any;
20
- };
19
+ envoy?: EnvoyFilters;
21
20
  };
22
21
  env?: EnvVar[];
23
22
  loadBalancer?: {
24
23
  dedicated?: boolean;
24
+ trustedProxies?: number;
25
25
  };
26
26
  }
27
27
  export interface Gvc {
@@ -50,4 +50,8 @@ export interface GvcConfig {
50
50
  clusterId?: string;
51
51
  };
52
52
  };
53
+ loadBalancer?: {
54
+ minScale?: number;
55
+ };
56
+ thinProvision?: number;
53
57
  }
@@ -5,10 +5,15 @@ import { LinodeProvider } from './mk8sLinode';
5
5
  import { OblivusProvider } from './mk8sOblivus';
6
6
  import { LambdalabsProvider } from './mk8sLambdalabs';
7
7
  import { PaperspaceProvider } from './mk8sPaperspace';
8
- import { NonCustomizableAddonConfig, AzureAddonConfig, MetricsAddonConfig, LogsAddonConfig, NvidiaAddonConfig, DashboardAddonStatus, AwsWorkloadIdentityAddonStatus, MetricsAddonStatus, LogsAddonStatus } from './mk8sAddons';
8
+ import { EphemeralProvider } from './mk8sEphemeral';
9
+ import { NonCustomizableAddonConfig, AzureAddonConfig, MetricsAddonConfig, LogsAddonConfig, NvidiaAddonConfig, AwsEFSAddonConfig, AwsECRAddonConfig, AwsELBAddonConfig, AzureACRAddonConfig, DashboardAddonStatus, AwsWorkloadIdentityAddonStatus, MetricsAddonStatus, LogsAddonStatus, AwsTrustPolicyConfig } from './mk8sAddons';
9
10
  import { Name, Kind, Tags, Links } from './base';
10
11
  export interface Mk8sSpec {
11
- version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2';
12
+ version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4';
13
+ firewall?: {
14
+ sourceCIDR: string;
15
+ description?: string;
16
+ }[];
12
17
  provider: {
13
18
  generic?: GenericProvider;
14
19
  hetzner?: HetznerProvider;
@@ -17,6 +22,7 @@ export interface Mk8sSpec {
17
22
  oblivus?: OblivusProvider;
18
23
  lambdalabs?: LambdalabsProvider;
19
24
  paperspace?: PaperspaceProvider;
25
+ ephemeral?: EphemeralProvider;
20
26
  };
21
27
  addOns?: {
22
28
  dashboard?: NonCustomizableAddonConfig;
@@ -26,6 +32,11 @@ export interface Mk8sSpec {
26
32
  metrics?: MetricsAddonConfig;
27
33
  logs?: LogsAddonConfig;
28
34
  nvidia?: NvidiaAddonConfig;
35
+ awsEFS?: AwsEFSAddonConfig;
36
+ awsECR?: AwsECRAddonConfig;
37
+ awsELB?: AwsELBAddonConfig;
38
+ azureACR?: AzureACRAddonConfig;
39
+ sysbox?: NonCustomizableAddonConfig;
29
40
  };
30
41
  }
31
42
  export interface Mk8sStatus {
@@ -37,6 +48,9 @@ export interface Mk8sStatus {
37
48
  awsWorkloadIdentity?: AwsWorkloadIdentityAddonStatus;
38
49
  metrics?: MetricsAddonStatus;
39
50
  logs?: LogsAddonStatus;
51
+ awsECR?: AwsTrustPolicyConfig;
52
+ awsEFS?: AwsTrustPolicyConfig;
53
+ awsELB?: AwsTrustPolicyConfig;
40
54
  };
41
55
  }
42
56
  export interface Mk8sCluster {
@@ -50,7 +64,11 @@ export interface Mk8sCluster {
50
64
  lastModified?: Date;
51
65
  links?: Links;
52
66
  spec: {
53
- version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2';
67
+ version: '1.26.0' | '1.26.4' | '1.27.3' | '1.28.2' | '1.28.4';
68
+ firewall?: {
69
+ sourceCIDR: string;
70
+ description?: string;
71
+ }[];
54
72
  provider: {
55
73
  generic?: GenericProvider;
56
74
  hetzner?: HetznerProvider;
@@ -59,6 +77,7 @@ export interface Mk8sCluster {
59
77
  oblivus?: OblivusProvider;
60
78
  lambdalabs?: LambdalabsProvider;
61
79
  paperspace?: PaperspaceProvider;
80
+ ephemeral?: EphemeralProvider;
62
81
  };
63
82
  addOns?: {
64
83
  dashboard?: NonCustomizableAddonConfig;
@@ -68,6 +87,11 @@ export interface Mk8sCluster {
68
87
  metrics?: MetricsAddonConfig;
69
88
  logs?: LogsAddonConfig;
70
89
  nvidia?: NvidiaAddonConfig;
90
+ awsEFS?: AwsEFSAddonConfig;
91
+ awsECR?: AwsECRAddonConfig;
92
+ awsELB?: AwsELBAddonConfig;
93
+ azureACR?: AzureACRAddonConfig;
94
+ sysbox?: NonCustomizableAddonConfig;
71
95
  };
72
96
  };
73
97
  alias?: string;
@@ -7,9 +7,14 @@ export interface NonCustomizableAddonConfig {
7
7
  export interface AzureAddonConfig {
8
8
  tenantId?: string;
9
9
  }
10
+ export interface AwsEFSAddonConfig {
11
+ roleArn: string;
12
+ }
10
13
  export interface MetricsAddonConfig {
11
- retentionDays?: number;
12
14
  kubeState?: boolean;
15
+ coreDns?: boolean;
16
+ kubelet?: boolean;
17
+ apiserver?: boolean;
13
18
  nodeExporter?: boolean;
14
19
  cadvisor?: boolean;
15
20
  scrapeAnnotated?: {
@@ -26,7 +31,6 @@ export interface MetricsAddonStatus {
26
31
  };
27
32
  }
28
33
  export interface LogsAddonConfig {
29
- retentionDays?: number;
30
34
  auditEnabled?: boolean;
31
35
  includeNamespaces?: RegularExpression;
32
36
  excludeNamespaces?: RegularExpression;
@@ -46,6 +50,20 @@ export interface AwsWorkloadIdentityAddonStatus {
46
50
  [x: string]: any;
47
51
  };
48
52
  }
53
+ export interface AwsTrustPolicyConfig {
54
+ trustPolicy?: {
55
+ [x: string]: any;
56
+ };
57
+ }
49
58
  export interface NvidiaAddonConfig {
50
59
  taintGPUNodes?: boolean;
51
60
  }
61
+ export interface AwsECRAddonConfig {
62
+ roleArn?: string;
63
+ }
64
+ export interface AwsELBAddonConfig {
65
+ roleArn?: string;
66
+ }
67
+ export interface AzureACRAddonConfig {
68
+ clientId: string;
69
+ }
@@ -1,4 +1,4 @@
1
- import { Labels, Taints } from './mk8sCommon';
1
+ import { Labels, Taints, AutoscalerConfig } from './mk8sCommon';
2
2
  export interface Ami {
3
3
  recommended?: 'ubuntu/jammy-22.04' | 'ubuntu/jammy-22.04+nvidia' | 'ubuntu/focal-20.04' | 'ubuntu/focal-20.04+nvidia' | 'ubuntu/bionic-18.04' | 'amazon/amzn2' | 'amazon/al2023';
4
4
  exact?: string;
@@ -12,15 +12,23 @@ export interface AwsPool {
12
12
  bootDiskSize: number;
13
13
  minSize: number;
14
14
  maxSize: number;
15
- onDemandBaseCapacity?: number;
16
- onDemandPercentageAboveBaseCapacity?: number;
15
+ onDemandBaseCapacity: number;
16
+ onDemandPercentageAboveBaseCapacity: number;
17
17
  spotAllocationStrategy?: 'lowest-price' | 'capacity-optimized' | 'capacity-optimized-prioritized' | 'price-capacity-optimized';
18
18
  subnetIds: string[];
19
19
  extraSecurityGroupIds?: string[];
20
20
  }
21
21
  export interface AwsProvider {
22
22
  region: 'af-south-1' | 'ap-east-1' | 'ap-northeast-1' | 'ap-northeast-2' | 'ap-northeast-3' | 'ap-south-1' | 'ap-south-2' | 'ap-southeast-1' | 'ap-southeast-2' | 'ap-southeast-3' | 'ap-southeast-4' | 'ca-central-1' | 'eu-central-1' | 'eu-central-2' | 'eu-north-1' | 'eu-south-1' | 'eu-south-2' | 'eu-west-1' | 'eu-west-2' | 'eu-west-3' | 'me-central-1' | 'me-south-1' | 'sa-east-1' | 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2';
23
+ awsTags?: {
24
+ [x: string]: string;
25
+ };
23
26
  skipCreateRoles?: boolean;
27
+ networking?: {
28
+ serviceNetwork?: '10.43.0.0/16' | '192.168.0.0/16';
29
+ podNetwork?: 'vpc' | '10.42.0.0/16' | '172.16.0.0/15' | '172.18.0.0/15' | '172.20.0.0/15' | '172.22.0.0/15' | '172.24.0.0/15' | '172.26.0.0/15' | '172.28.0.0/15' | '172.30.0.0/15';
30
+ };
31
+ preInstallScript?: string;
24
32
  image: {
25
33
  recommended?: 'ubuntu/jammy-22.04' | 'ubuntu/jammy-22.04+nvidia' | 'ubuntu/focal-20.04' | 'ubuntu/focal-20.04+nvidia' | 'ubuntu/bionic-18.04' | 'amazon/amzn2' | 'amazon/al2023';
26
34
  exact?: string;
@@ -31,6 +39,7 @@ export interface AwsProvider {
31
39
  diskEncryptionKeyArn?: string;
32
40
  securityGroupIds?: string[];
33
41
  nodePools?: AwsPool[];
42
+ autoscaler?: AutoscalerConfig;
34
43
  }
35
44
  export interface AwsProviderStatus {
36
45
  [x: string]: any;
@@ -11,10 +11,14 @@ export type Taints = Taint[];
11
11
  export type NodePoolName = string;
12
12
  export type SshPublicKey = string;
13
13
  export interface AutoscalerConfig {
14
- expander?: ('random' | 'most-pods' | 'least-waste' | 'price' | 'priority')[];
14
+ expander: ('random' | 'most-pods' | 'least-waste' | 'price' | 'priority')[];
15
+ unneededTime: string;
16
+ unreadyTime: string;
17
+ utilizationThreshold: number;
15
18
  }
16
19
  export interface UnmanagedPool {
17
20
  name: string;
18
21
  labels?: Labels;
19
22
  taints?: Taints;
20
23
  }
24
+ export type PreInstallScript = string;
@@ -0,0 +1,18 @@
1
+ import { Labels, Taints } from './mk8sCommon';
2
+ export interface EphemeralPool {
3
+ name: string;
4
+ labels?: Labels;
5
+ taints?: Taints;
6
+ count: number;
7
+ arch: 'any' | 'arm64' | 'amd64';
8
+ flavor: 'debian' | 'ubuntu' | 'fedora';
9
+ cpu: string;
10
+ memory: string;
11
+ }
12
+ export interface EphemeralProvider {
13
+ location: 'aws-eu-central-1' | 'aws-us-east-2' | 'aws-us-west-2' | 'gcp-me-west1' | 'gcp-us-east1';
14
+ nodePools?: EphemeralPool[];
15
+ }
16
+ export interface EphemeralProviderStatus {
17
+ [x: string]: any;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ /* auto-generated */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -6,6 +6,10 @@ export interface GenericPool {
6
6
  }
7
7
  export interface GenericProvider {
8
8
  location: 'aws-eu-central-1' | 'aws-us-east-2' | 'aws-us-west-2' | 'gcp-me-west1' | 'gcp-us-east1';
9
+ networking?: {
10
+ serviceNetwork?: '10.43.0.0/16' | '192.168.0.0/16';
11
+ podNetwork?: '10.42.0.0/16' | '172.16.0.0/15' | '172.18.0.0/15' | '172.20.0.0/15' | '172.22.0.0/15' | '172.24.0.0/15' | '172.26.0.0/15' | '172.28.0.0/15' | '172.30.0.0/15';
12
+ };
9
13
  nodePools?: GenericPool[];
10
14
  }
11
15
  export interface GenericProviderStatus {
@@ -1,4 +1,4 @@
1
- import { Labels, Taints } from './mk8sCommon';
1
+ import { Labels, Taints, PreInstallScript, AutoscalerConfig } from './mk8sCommon';
2
2
  export interface DedicatedServerHetznerPool {
3
3
  name: string;
4
4
  labels?: Labels;
@@ -15,6 +15,14 @@ export interface HetznerPool {
15
15
  }
16
16
  export interface HetznerProvider {
17
17
  region: 'fsn1' | 'nbg1' | 'hel1' | 'ash' | 'hil';
18
+ hetznerLabels?: {
19
+ [x: string]: string;
20
+ };
21
+ networking?: {
22
+ serviceNetwork?: '10.43.0.0/16' | '192.168.0.0/16';
23
+ podNetwork?: '10.42.0.0/16' | '172.16.0.0/15' | '172.18.0.0/15' | '172.20.0.0/15' | '172.22.0.0/15' | '172.24.0.0/15' | '172.26.0.0/15' | '172.28.0.0/15' | '172.30.0.0/15';
24
+ };
25
+ preInstallScript?: PreInstallScript;
18
26
  tokenSecretLink: string;
19
27
  networkId: string;
20
28
  firewallId?: string;
@@ -22,6 +30,7 @@ export interface HetznerProvider {
22
30
  dedicatedServerNodePools?: DedicatedServerHetznerPool[];
23
31
  image: string;
24
32
  sshKey?: string;
33
+ autoscaler?: AutoscalerConfig;
25
34
  }
26
35
  export interface HetznerProviderStatus {
27
36
  [x: string]: any;
@@ -5,7 +5,7 @@ export interface LambdalabsPool {
5
5
  taints?: Taints;
6
6
  minSize: number;
7
7
  maxSize: number;
8
- instanceType: 'gpu_1x_a10' | 'gpu_1x_a100' | 'gpu_1x_a100_sxm4' | 'gpu_1x_a6000' | 'gpu_1x_h100_pcie' | 'gpu_1x_rtx6000' | 'gpu_2x_a100' | 'gpu_2x_a6000' | 'gpu_4x_a100' | 'gpu_4x_a6000' | 'gpu_8x_a100' | 'gpu_8x_a100_80gb_sxm4';
8
+ instanceType: 'gpu_1x_a10' | 'gpu_1x_a100' | 'gpu_1x_a100_sxm4' | 'gpu_1x_a6000' | 'gpu_1x_h100_pcie' | 'gpu_1x_rtx6000' | 'gpu_2x_a100' | 'gpu_2x_a6000' | 'gpu_4x_a100' | 'gpu_4x_a6000' | 'gpu_8x_h100_sxm5' | 'gpu_8x_a100' | 'gpu_8x_a100_80gb_sxm4';
9
9
  }
10
10
  export interface LambdalabsProvider {
11
11
  region: 'us-south-1' | 'us-west-2' | 'us-west-1' | 'us-midwest-1' | 'us-west-3' | 'us-east-1' | 'australia-southeast-1' | 'europe-central-1' | 'asia-south-1' | 'me-west-1' | 'europe-south-1' | 'asia-northeast-1' | 'asia-northeast-2';
@@ -1,4 +1,4 @@
1
- import { Labels, Taints } from './mk8sCommon';
1
+ import { Labels, Taints, AutoscalerConfig } from './mk8sCommon';
2
2
  export interface LinodePool {
3
3
  name: string;
4
4
  labels?: Labels;
@@ -16,6 +16,7 @@ export interface LinodeProvider {
16
16
  nodePools?: LinodePool[];
17
17
  image: string;
18
18
  authorizedUsers?: string[];
19
+ autoscaler?: AutoscalerConfig;
19
20
  }
20
21
  export interface LinodeProviderStatus {
21
22
  [x: string]: any;
@@ -1,4 +1,4 @@
1
- import { Labels, Taints, UnmanagedPool } from './mk8sCommon';
1
+ import { Labels, Taints, AutoscalerConfig, UnmanagedPool } from './mk8sCommon';
2
2
  export interface PaperspacePool {
3
3
  name: string;
4
4
  labels?: Labels;
@@ -12,6 +12,7 @@ export interface PaperspaceProvider {
12
12
  tokenSecretLink: string;
13
13
  sharedDrives?: string[];
14
14
  nodePools?: PaperspacePool[];
15
+ autoscaler?: AutoscalerConfig;
15
16
  unmanagedNodePools?: UnmanagedPool[];
16
17
  }
17
18
  export interface PaperspaceProviderStatus {