@highstate/k8s 0.9.18 → 0.9.20
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.
- package/dist/chunk-2EEHJZPD.js +13 -0
- package/dist/chunk-2EEHJZPD.js.map +1 -0
- package/dist/{chunk-OFFSHGC6.js → chunk-4JGXGN2L.js} +66 -48
- package/dist/chunk-4JGXGN2L.js.map +1 -0
- package/dist/chunk-A3XGSDIW.js +306 -0
- package/dist/chunk-A3XGSDIW.js.map +1 -0
- package/dist/chunk-IMTXUK2U.js +244 -0
- package/dist/chunk-IMTXUK2U.js.map +1 -0
- package/dist/chunk-JYNXQ3I3.js +287 -0
- package/dist/chunk-JYNXQ3I3.js.map +1 -0
- package/dist/{chunk-5C2BJGES.js → chunk-KDD6XUWM.js} +30 -23
- package/dist/chunk-KDD6XUWM.js.map +1 -0
- package/dist/chunk-NOFJC3EM.js +236 -0
- package/dist/chunk-NOFJC3EM.js.map +1 -0
- package/dist/chunk-NXSYCA3V.js +337 -0
- package/dist/chunk-NXSYCA3V.js.map +1 -0
- package/dist/chunk-SBC3TUIN.js +1513 -0
- package/dist/chunk-SBC3TUIN.js.map +1 -0
- package/dist/chunk-SI7X6N46.js +338 -0
- package/dist/chunk-SI7X6N46.js.map +1 -0
- package/dist/chunk-WGMJCZSK.js +360 -0
- package/dist/chunk-WGMJCZSK.js.map +1 -0
- package/dist/deployment-752P6JIT.js +8 -0
- package/dist/{deployment-XK3CDJOE.js.map → deployment-752P6JIT.js.map} +1 -1
- package/dist/highstate.manifest.json +8 -7
- package/dist/impl/gateway-route.js +123 -0
- package/dist/impl/gateway-route.js.map +1 -0
- package/dist/impl/tls-certificate.js +32 -0
- package/dist/impl/tls-certificate.js.map +1 -0
- package/dist/index.js +736 -208
- package/dist/index.js.map +1 -1
- package/dist/stateful-set-N64YVKR7.js +8 -0
- package/dist/{stateful-set-7CAQWTV2.js.map → stateful-set-N64YVKR7.js.map} +1 -1
- package/dist/units/cert-manager/index.js +11 -10
- package/dist/units/cert-manager/index.js.map +1 -1
- package/dist/units/dns01-issuer/index.js +27 -23
- package/dist/units/dns01-issuer/index.js.map +1 -1
- package/dist/units/existing-cluster/index.js +11 -8
- package/dist/units/existing-cluster/index.js.map +1 -1
- package/dist/units/gateway-api/index.js +2 -2
- package/dist/units/gateway-api/index.js.map +1 -1
- package/package.json +39 -13
- package/src/cluster.ts +30 -22
- package/src/config-map.ts +195 -57
- package/src/container.ts +5 -5
- package/src/cron-job.ts +403 -31
- package/src/deployment.ts +260 -120
- package/src/dns01-solver.ts +10 -0
- package/src/gateway/backend.ts +2 -2
- package/src/gateway/gateway.ts +383 -0
- package/src/gateway/http-route.ts +17 -24
- package/src/gateway/index.ts +1 -0
- package/src/helm.ts +83 -53
- package/src/impl/gateway-route.ts +155 -0
- package/src/impl/tls-certificate.ts +33 -0
- package/src/index.ts +22 -67
- package/src/job.ts +393 -28
- package/src/namespace.ts +236 -99
- package/src/network-policy.ts +216 -165
- package/src/network.ts +2 -2
- package/src/pvc.ts +266 -65
- package/src/rbac.ts +218 -0
- package/src/scripting/bundle.ts +9 -20
- package/src/scripting/container.ts +1 -1
- package/src/scripting/environment.ts +5 -5
- package/src/secret.ts +200 -62
- package/src/service.ts +288 -158
- package/src/shared.ts +94 -67
- package/src/stateful-set.ts +270 -117
- package/src/tls.ts +344 -0
- package/src/units/cert-manager/index.ts +2 -3
- package/src/units/dns01-issuer/index.ts +30 -14
- package/src/units/existing-cluster/index.ts +10 -7
- package/src/units/gateway-api/index.ts +2 -2
- package/src/worker.ts +26 -0
- package/src/workload.ts +275 -171
- package/dist/chunk-5C2BJGES.js.map +0 -1
- package/dist/chunk-5TLC5BXR.js +0 -256
- package/dist/chunk-5TLC5BXR.js.map +0 -1
- package/dist/chunk-BBIY3KUN.js +0 -1557
- package/dist/chunk-BBIY3KUN.js.map +0 -1
- package/dist/chunk-OFFSHGC6.js.map +0 -1
- package/dist/chunk-TZHOUJRC.js +0 -202
- package/dist/chunk-TZHOUJRC.js.map +0 -1
- package/dist/chunk-YWRJ4EZM.js +0 -192
- package/dist/chunk-YWRJ4EZM.js.map +0 -1
- package/dist/deployment-XK3CDJOE.js +0 -6
- package/dist/stateful-set-7CAQWTV2.js +0 -6
- package/dist/units/access-point/index.js +0 -21
- package/dist/units/access-point/index.js.map +0 -1
- package/src/access-point.ts +0 -191
- package/src/units/access-point/index.ts +0 -19
- package/src/units/dns01-issuer/solver.ts +0 -23
package/src/stateful-set.ts
CHANGED
@@ -1,23 +1,30 @@
|
|
1
|
+
import type { AccessPointRoute } from "@highstate/common"
|
1
2
|
import type { k8s } from "@highstate/library"
|
2
|
-
import type {
|
3
|
-
import type { Service } from "./service"
|
3
|
+
import type { Container } from "./container"
|
4
4
|
import type { NetworkPolicy } from "./network-policy"
|
5
|
-
import
|
6
|
-
import {
|
7
|
-
import { omit } from "remeda"
|
8
|
-
import { deepmerge } from "deepmerge-ts"
|
5
|
+
import type { Service } from "./service"
|
6
|
+
import { getOrCreate, type UnitTerminal } from "@highstate/contract"
|
9
7
|
import {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
type
|
15
|
-
|
8
|
+
type ComponentResourceOptions,
|
9
|
+
type Input,
|
10
|
+
type Inputs,
|
11
|
+
interpolate,
|
12
|
+
type Output,
|
13
|
+
output,
|
14
|
+
toPromise,
|
15
|
+
type Unwrap,
|
16
|
+
} from "@highstate/pulumi"
|
17
|
+
import { apps, type types } from "@pulumi/kubernetes"
|
18
|
+
import { deepmerge } from "deepmerge-ts"
|
19
|
+
import { omit } from "remeda"
|
20
|
+
import { Namespace } from "./namespace"
|
21
|
+
import { getProvider, mapMetadata } from "./shared"
|
16
22
|
import {
|
17
|
-
exposableWorkloadExtraArgs,
|
18
23
|
ExposableWorkload,
|
19
24
|
type ExposableWorkloadArgs,
|
25
|
+
exposableWorkloadExtraArgs,
|
20
26
|
getExposableWorkloadComponents,
|
27
|
+
type WorkloadTerminalArgs,
|
21
28
|
} from "./workload"
|
22
29
|
|
23
30
|
export type StatefulSetArgs = Omit<ExposableWorkloadArgs, "existing"> &
|
@@ -39,11 +46,19 @@ export abstract class StatefulSet extends ExposableWorkload {
|
|
39
46
|
protected constructor(
|
40
47
|
type: string,
|
41
48
|
name: string,
|
42
|
-
args:
|
49
|
+
args: Inputs,
|
43
50
|
opts: ComponentResourceOptions | undefined,
|
44
51
|
|
45
|
-
|
52
|
+
apiVersion: Output<string>,
|
53
|
+
kind: Output<string>,
|
54
|
+
terminalArgs: Output<Unwrap<WorkloadTerminalArgs>>,
|
55
|
+
containers: Output<Container[]>,
|
56
|
+
namespace: Output<Namespace>,
|
46
57
|
metadata: Output<types.output.meta.v1.ObjectMeta>,
|
58
|
+
networkPolicy: Output<NetworkPolicy | undefined>,
|
59
|
+
|
60
|
+
service: Output<Service | undefined>,
|
61
|
+
routes: Output<AccessPointRoute[]>,
|
47
62
|
|
48
63
|
/**
|
49
64
|
* The spec of the underlying Kubernetes stateful set.
|
@@ -54,23 +69,21 @@ export abstract class StatefulSet extends ExposableWorkload {
|
|
54
69
|
* The status of the underlying Kubernetes stateful set.
|
55
70
|
*/
|
56
71
|
readonly status: Output<types.output.apps.v1.StatefulSetStatus>,
|
57
|
-
|
58
|
-
networkPolicy: Output<NetworkPolicy | undefined>,
|
59
|
-
|
60
|
-
service: Output<Service | undefined>,
|
61
|
-
httpRoute: Output<HttpRoute | undefined>,
|
62
72
|
) {
|
63
73
|
super(
|
64
74
|
type,
|
65
75
|
name,
|
66
76
|
args,
|
67
77
|
opts,
|
68
|
-
|
69
|
-
|
78
|
+
apiVersion,
|
79
|
+
kind,
|
80
|
+
terminalArgs,
|
81
|
+
containers,
|
82
|
+
namespace,
|
70
83
|
metadata,
|
71
84
|
networkPolicy,
|
72
85
|
service,
|
73
|
-
|
86
|
+
routes,
|
74
87
|
)
|
75
88
|
}
|
76
89
|
|
@@ -79,66 +92,162 @@ export abstract class StatefulSet extends ExposableWorkload {
|
|
79
92
|
*/
|
80
93
|
get entity(): Output<k8s.StatefulSet> {
|
81
94
|
return output({
|
82
|
-
type: "
|
95
|
+
type: "stateful-set",
|
83
96
|
clusterId: this.cluster.id,
|
97
|
+
clusterName: this.cluster.name,
|
84
98
|
metadata: this.metadata,
|
85
99
|
service: this.service.entity,
|
86
100
|
})
|
87
101
|
}
|
88
102
|
|
103
|
+
/**
|
104
|
+
* Creates a new stateful set.
|
105
|
+
*/
|
89
106
|
static create(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {
|
90
107
|
return new CreatedStatefulSet(name, args, opts)
|
91
108
|
}
|
92
109
|
|
110
|
+
/**
|
111
|
+
* Creates a new stateful set or patches an existing one.
|
112
|
+
*
|
113
|
+
* @param name The name of the resource. May not be the same as the stateful set name.
|
114
|
+
* @param args The arguments to create or patch the stateful set with.
|
115
|
+
* @param opts Optional resource options.
|
116
|
+
*/
|
93
117
|
static createOrPatch(
|
94
118
|
name: string,
|
95
119
|
args: CreateOrGetStatefulSetArgs,
|
96
120
|
opts?: ComponentResourceOptions,
|
97
121
|
): StatefulSet {
|
98
|
-
if (
|
99
|
-
return new
|
122
|
+
if (args.existing) {
|
123
|
+
return new StatefulSetPatch(name, {
|
124
|
+
...args,
|
125
|
+
name: output(args.existing).metadata.name,
|
126
|
+
namespace: Namespace.forResourceAsync(args.existing, output(args.namespace).cluster),
|
127
|
+
})
|
100
128
|
}
|
101
129
|
|
102
|
-
return new
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
130
|
+
return new CreatedStatefulSet(name, args, opts)
|
131
|
+
}
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Creates a new stateful set or gets an existing one.
|
135
|
+
*
|
136
|
+
* @param name The name of the resource. May not be the same as the stateful set name. Will not be used when existing stateful set is retrieved.
|
137
|
+
* @param args The arguments to create or get the stateful set with.
|
138
|
+
* @param opts Optional resource options.
|
139
|
+
*/
|
140
|
+
static async createOrGet(
|
141
|
+
name: string,
|
142
|
+
args: CreateOrGetStatefulSetArgs,
|
143
|
+
opts?: ComponentResourceOptions,
|
144
|
+
): Promise<StatefulSet> {
|
145
|
+
if (args.existing) {
|
146
|
+
return await StatefulSet.forAsync(args.existing, output(args.namespace).cluster)
|
147
|
+
}
|
148
|
+
|
149
|
+
return new CreatedStatefulSet(name, args, opts)
|
111
150
|
}
|
112
151
|
|
152
|
+
/**
|
153
|
+
* Patches an existing stateful set.
|
154
|
+
*
|
155
|
+
* Will throw an error if the stateful set does not exist.
|
156
|
+
*
|
157
|
+
* @param name The name of the resource. May not be the same as the stateful set name.
|
158
|
+
* @param args The arguments to patch the stateful set with.
|
159
|
+
* @param opts Optional resource options.
|
160
|
+
*/
|
113
161
|
static patch(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {
|
114
162
|
return new StatefulSetPatch(name, args, opts)
|
115
163
|
}
|
116
164
|
|
117
|
-
|
165
|
+
/**
|
166
|
+
* Wraps an existing Kubernetes stateful set.
|
167
|
+
*/
|
168
|
+
static wrap(
|
118
169
|
name: string,
|
119
|
-
args:
|
170
|
+
args: WrappedStatefulSetArgs,
|
120
171
|
opts?: ComponentResourceOptions,
|
121
172
|
): StatefulSet {
|
122
|
-
|
123
|
-
return new CreatedStatefulSet(name, args, opts)
|
124
|
-
}
|
125
|
-
|
126
|
-
return new ExternalStatefulSet(name, output(args.existing).metadata, args.cluster, opts)
|
173
|
+
return new WrappedStatefulSet(name, args, opts)
|
127
174
|
}
|
128
175
|
|
129
|
-
|
176
|
+
/**
|
177
|
+
* Gets an existing stateful set.
|
178
|
+
*
|
179
|
+
* Will throw an error if the stateful set does not exist.
|
180
|
+
*/
|
181
|
+
static get(
|
130
182
|
name: string,
|
131
|
-
|
132
|
-
cluster: Input<k8s.Cluster>,
|
183
|
+
args: ExternalStatefulSetArgs,
|
133
184
|
opts?: ComponentResourceOptions,
|
134
185
|
): StatefulSet {
|
135
|
-
return new
|
186
|
+
return new ExternalStatefulSet(name, args, opts)
|
187
|
+
}
|
188
|
+
|
189
|
+
private static readonly statefulSetCache = new Map<string, StatefulSet>()
|
190
|
+
|
191
|
+
/**
|
192
|
+
* Gets an existing stateful set for a given entity.
|
193
|
+
* Prefer this method over `get` when possible.
|
194
|
+
*
|
195
|
+
* It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.
|
196
|
+
*
|
197
|
+
* This method is idempotent and will return the same instance for the same entity.
|
198
|
+
*
|
199
|
+
* @param entity The entity to get the stateful set for.
|
200
|
+
* @param cluster The cluster where the stateful set is located.
|
201
|
+
*/
|
202
|
+
static for(entity: k8s.StatefulSet, cluster: Input<k8s.Cluster>): StatefulSet {
|
203
|
+
return getOrCreate(
|
204
|
+
StatefulSet.statefulSetCache,
|
205
|
+
`${entity.clusterName}.${entity.metadata.namespace}.${entity.metadata.name}.${entity.clusterId}`,
|
206
|
+
name => {
|
207
|
+
return StatefulSet.get(name, {
|
208
|
+
name: entity.metadata.name,
|
209
|
+
namespace: Namespace.forResource(entity, cluster),
|
210
|
+
})
|
211
|
+
},
|
212
|
+
)
|
213
|
+
}
|
214
|
+
|
215
|
+
/**
|
216
|
+
* Gets an existing stateful set for a given entity.
|
217
|
+
* Prefer this method over `get` when possible.
|
218
|
+
*
|
219
|
+
* It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.
|
220
|
+
*
|
221
|
+
* This method is idempotent and will return the same instance for the same entity.
|
222
|
+
*
|
223
|
+
* @param entity The entity to get the stateful set for.
|
224
|
+
* @param cluster The cluster where the stateful set is located.
|
225
|
+
*/
|
226
|
+
static async forAsync(
|
227
|
+
entity: Input<k8s.StatefulSet>,
|
228
|
+
cluster: Input<k8s.Cluster>,
|
229
|
+
): Promise<StatefulSet> {
|
230
|
+
const resolvedEntity = await toPromise(entity)
|
231
|
+
return StatefulSet.for(resolvedEntity, cluster)
|
232
|
+
}
|
233
|
+
|
234
|
+
protected getTerminalMeta(): Output<UnitTerminal["meta"]> {
|
235
|
+
return output({
|
236
|
+
title: "StatefulSet",
|
237
|
+
globalTitle: interpolate`StatefulSet | ${this.metadata.name}`,
|
238
|
+
description: "The shell inside the stateful set.",
|
239
|
+
icon: "devicon:kubernetes",
|
240
|
+
})
|
241
|
+
}
|
242
|
+
|
243
|
+
protected get resourceType(): string {
|
244
|
+
return "statefulset"
|
136
245
|
}
|
137
246
|
}
|
138
247
|
|
139
248
|
class CreatedStatefulSet extends StatefulSet {
|
140
249
|
constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {
|
141
|
-
const { labels, podTemplate, networkPolicy, service,
|
250
|
+
const { labels, podTemplate, networkPolicy, containers, service, routes } =
|
142
251
|
getExposableWorkloadComponents(
|
143
252
|
name,
|
144
253
|
{
|
@@ -151,24 +260,28 @@ class CreatedStatefulSet extends StatefulSet {
|
|
151
260
|
opts,
|
152
261
|
)
|
153
262
|
|
154
|
-
const statefulSet = output(
|
263
|
+
const statefulSet = output(args.namespace).cluster.apply(cluster => {
|
155
264
|
return new apps.v1.StatefulSet(
|
156
265
|
name,
|
157
266
|
{
|
158
267
|
metadata: mapMetadata(args, name),
|
159
|
-
spec:
|
160
|
-
{
|
161
|
-
|
162
|
-
|
163
|
-
|
268
|
+
spec: output({ args, podTemplate, labels, service }).apply(
|
269
|
+
({ args, podTemplate, labels, service }) => {
|
270
|
+
return deepmerge(
|
271
|
+
{
|
272
|
+
serviceName: service?.metadata.name,
|
273
|
+
template: podTemplate,
|
274
|
+
selector: { matchLabels: labels },
|
275
|
+
},
|
276
|
+
omit(args, exposableWorkloadExtraArgs),
|
277
|
+
) as types.input.apps.v1.StatefulSetSpec
|
164
278
|
},
|
165
|
-
|
166
|
-
) as types.input.apps.v1.StatefulSetSpec,
|
279
|
+
),
|
167
280
|
},
|
168
281
|
{
|
169
282
|
...opts,
|
170
283
|
parent: this,
|
171
|
-
provider:
|
284
|
+
provider: getProvider(cluster),
|
172
285
|
},
|
173
286
|
)
|
174
287
|
})
|
@@ -179,45 +292,47 @@ class CreatedStatefulSet extends StatefulSet {
|
|
179
292
|
args,
|
180
293
|
opts,
|
181
294
|
|
182
|
-
|
295
|
+
statefulSet.apiVersion,
|
296
|
+
statefulSet.kind,
|
297
|
+
output(args.terminal ?? {}),
|
298
|
+
containers,
|
299
|
+
output(args.namespace),
|
183
300
|
statefulSet.metadata,
|
184
|
-
statefulSet.spec,
|
185
|
-
statefulSet.status,
|
186
|
-
|
187
301
|
networkPolicy,
|
302
|
+
|
188
303
|
service,
|
189
|
-
|
304
|
+
routes,
|
305
|
+
|
306
|
+
statefulSet.spec,
|
307
|
+
statefulSet.status,
|
190
308
|
)
|
191
309
|
}
|
192
310
|
}
|
193
311
|
|
194
312
|
class StatefulSetPatch extends StatefulSet {
|
195
313
|
constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {
|
196
|
-
const {
|
197
|
-
name,
|
198
|
-
args,
|
199
|
-
() => this,
|
200
|
-
opts,
|
201
|
-
)
|
314
|
+
const { labels, podTemplate, networkPolicy, containers, service, routes } =
|
315
|
+
getExposableWorkloadComponents(name, args, () => this, opts)
|
202
316
|
|
203
|
-
const statefulSet = output(
|
317
|
+
const statefulSet = output(args.namespace).cluster.apply(cluster => {
|
204
318
|
return new apps.v1.StatefulSetPatch(
|
205
319
|
name,
|
206
320
|
{
|
207
321
|
metadata: mapMetadata(args, name),
|
208
|
-
spec:
|
209
|
-
|
210
|
-
|
211
|
-
|
322
|
+
spec: output({ args, podTemplate, labels }).apply(({ args, podTemplate, labels }) => {
|
323
|
+
return deepmerge(
|
324
|
+
{
|
325
|
+
template: podTemplate,
|
326
|
+
selector: { matchLabels: labels },
|
212
327
|
},
|
213
|
-
|
214
|
-
|
215
|
-
)
|
328
|
+
omit(args, exposableWorkloadExtraArgs),
|
329
|
+
) as types.input.apps.v1.StatefulSetSpec
|
330
|
+
}),
|
216
331
|
},
|
217
332
|
{
|
218
333
|
...opts,
|
219
334
|
parent: this,
|
220
|
-
provider:
|
335
|
+
provider: getProvider(cluster),
|
221
336
|
},
|
222
337
|
)
|
223
338
|
})
|
@@ -228,71 +343,109 @@ class StatefulSetPatch extends StatefulSet {
|
|
228
343
|
args,
|
229
344
|
opts,
|
230
345
|
|
231
|
-
|
346
|
+
statefulSet.apiVersion,
|
347
|
+
statefulSet.kind,
|
348
|
+
output(args.terminal ?? {}),
|
349
|
+
containers,
|
350
|
+
output(args.namespace),
|
232
351
|
statefulSet.metadata,
|
233
|
-
statefulSet.spec,
|
234
|
-
statefulSet.status,
|
235
|
-
|
236
352
|
networkPolicy,
|
353
|
+
|
237
354
|
service,
|
238
|
-
|
355
|
+
routes,
|
356
|
+
|
357
|
+
statefulSet.spec,
|
358
|
+
statefulSet.status,
|
239
359
|
)
|
240
360
|
}
|
241
361
|
}
|
242
362
|
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
opts?: ComponentResourceOptions,
|
249
|
-
) {
|
250
|
-
const statefulSet = output(id).apply(async id => {
|
251
|
-
return apps.v1.StatefulSet.get(name, resourceIdToString(id), {
|
252
|
-
...opts,
|
253
|
-
parent: this,
|
254
|
-
provider: await getProvider(cluster),
|
255
|
-
})
|
256
|
-
})
|
363
|
+
export type WrappedStatefulSetArgs = {
|
364
|
+
/**
|
365
|
+
* The underlying Kubernetes stateful set to wrap.
|
366
|
+
*/
|
367
|
+
statefulSet: Input<apps.v1.StatefulSet>
|
257
368
|
|
369
|
+
// TODO: remove
|
370
|
+
service?: Input<Service>
|
371
|
+
|
372
|
+
/**
|
373
|
+
* The namespace where the stateful set is located.
|
374
|
+
*/
|
375
|
+
namespace: Input<Namespace>
|
376
|
+
|
377
|
+
/**
|
378
|
+
* The args for the terminal to use.
|
379
|
+
*/
|
380
|
+
terminal?: Input<WorkloadTerminalArgs>
|
381
|
+
}
|
382
|
+
|
383
|
+
class WrappedStatefulSet extends StatefulSet {
|
384
|
+
constructor(name: string, args: WrappedStatefulSetArgs, opts?: ComponentResourceOptions) {
|
258
385
|
super(
|
259
|
-
"highstate:k8s:
|
386
|
+
"highstate:k8s:WrappedStatefulSet",
|
260
387
|
name,
|
261
|
-
|
388
|
+
args,
|
262
389
|
opts,
|
263
|
-
|
264
|
-
statefulSet.
|
265
|
-
statefulSet.
|
266
|
-
|
390
|
+
|
391
|
+
output(args.statefulSet).apiVersion,
|
392
|
+
output(args.statefulSet).kind,
|
393
|
+
output(args.terminal ?? {}),
|
394
|
+
output([]),
|
395
|
+
output(args.namespace),
|
396
|
+
output(args.statefulSet).metadata,
|
267
397
|
|
268
398
|
output(undefined),
|
269
|
-
output(
|
270
|
-
output(
|
399
|
+
output(args.service),
|
400
|
+
output([]),
|
401
|
+
|
402
|
+
output(args.statefulSet).spec,
|
403
|
+
output(args.statefulSet).status,
|
271
404
|
)
|
272
405
|
}
|
273
406
|
}
|
274
407
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
408
|
+
export type ExternalStatefulSetArgs = {
|
409
|
+
/**
|
410
|
+
* The name of the stateful set to get.
|
411
|
+
*/
|
412
|
+
name: Input<string>
|
413
|
+
|
414
|
+
/**
|
415
|
+
* The namespace where the stateful set is located.
|
416
|
+
*/
|
417
|
+
namespace: Input<Namespace>
|
418
|
+
}
|
419
|
+
|
420
|
+
class ExternalStatefulSet extends StatefulSet {
|
421
|
+
constructor(name: string, args: ExternalStatefulSetArgs, opts?: ComponentResourceOptions) {
|
422
|
+
const statefulSet = output(args.namespace).cluster.apply(cluster => {
|
423
|
+
return apps.v1.StatefulSet.get(
|
424
|
+
name,
|
425
|
+
interpolate`${output(args.namespace).metadata.name}/${args.name}`,
|
426
|
+
{ ...opts, parent: this, provider: getProvider(cluster) },
|
427
|
+
)
|
428
|
+
})
|
429
|
+
|
282
430
|
super(
|
283
|
-
"highstate:k8s:
|
431
|
+
"highstate:k8s:ExternalStatefulSet",
|
284
432
|
name,
|
285
|
-
|
433
|
+
args,
|
286
434
|
opts,
|
287
435
|
|
288
|
-
|
289
|
-
|
290
|
-
output(
|
291
|
-
output(
|
436
|
+
statefulSet.apiVersion,
|
437
|
+
statefulSet.kind,
|
438
|
+
output({}),
|
439
|
+
output([]),
|
440
|
+
output(args.namespace),
|
441
|
+
statefulSet.metadata,
|
292
442
|
|
293
443
|
output(undefined),
|
294
444
|
output(undefined),
|
295
|
-
output(
|
445
|
+
output([]),
|
446
|
+
|
447
|
+
statefulSet.spec,
|
448
|
+
statefulSet.status,
|
296
449
|
)
|
297
450
|
}
|
298
451
|
}
|