@highstate/k8s 0.9.9 → 0.9.10
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-W72HEBHG.js → chunk-3B5DTLGG.js} +2 -2
- package/dist/{chunk-WUJ7BFVE.js → chunk-FF3GFWG3.js} +2 -2
- package/dist/{chunk-L6G2IHDP.js → chunk-R43VRICF.js} +162 -27
- package/dist/chunk-R43VRICF.js.map +1 -0
- package/dist/{deployment-A26RVQ73.js → deployment-E3ZTF2IS.js} +3 -3
- package/dist/highstate.manifest.json +8 -8
- package/dist/index.js +24 -8
- package/dist/index.js.map +1 -1
- package/dist/{stateful-set-S5BHTDJY.js → stateful-set-NTU7QKC7.js} +3 -3
- package/package.json +9 -9
- package/src/config-map.ts +180 -0
- package/src/container.ts +12 -1
- package/src/cron-job.ts +8 -1
- package/src/index.ts +1 -0
- package/src/job.ts +8 -1
- package/src/scripting/bundle.ts +7 -5
- package/src/secret.ts +4 -0
- package/dist/chunk-L6G2IHDP.js.map +0 -1
- /package/dist/{chunk-W72HEBHG.js.map → chunk-3B5DTLGG.js.map} +0 -0
- /package/dist/{chunk-WUJ7BFVE.js.map → chunk-FF3GFWG3.js.map} +0 -0
- /package/dist/{deployment-A26RVQ73.js.map → deployment-E3ZTF2IS.js.map} +0 -0
- /package/dist/{stateful-set-S5BHTDJY.js.map → stateful-set-NTU7QKC7.js.map} +0 -0
@@ -2,7 +2,7 @@ import {
|
|
2
2
|
ExposableWorkload,
|
3
3
|
exposableWorkloadExtraArgs,
|
4
4
|
getExposableWorkloadComponents
|
5
|
-
} from "./chunk-
|
5
|
+
} from "./chunk-R43VRICF.js";
|
6
6
|
import {
|
7
7
|
getProvider,
|
8
8
|
mapMetadata,
|
@@ -180,4 +180,4 @@ var ExternalDeployment = class extends Deployment {
|
|
180
180
|
export {
|
181
181
|
Deployment
|
182
182
|
};
|
183
|
-
//# sourceMappingURL=chunk-
|
183
|
+
//# sourceMappingURL=chunk-3B5DTLGG.js.map
|
@@ -2,7 +2,7 @@ import {
|
|
2
2
|
ExposableWorkload,
|
3
3
|
exposableWorkloadExtraArgs,
|
4
4
|
getExposableWorkloadComponents
|
5
|
-
} from "./chunk-
|
5
|
+
} from "./chunk-R43VRICF.js";
|
6
6
|
import {
|
7
7
|
getProvider,
|
8
8
|
mapMetadata,
|
@@ -190,4 +190,4 @@ var ExternalStatefulSet = class extends StatefulSet {
|
|
190
190
|
export {
|
191
191
|
StatefulSet
|
192
192
|
};
|
193
|
-
//# sourceMappingURL=chunk-
|
193
|
+
//# sourceMappingURL=chunk-FF3GFWG3.js.map
|
@@ -178,7 +178,9 @@ var CreatedSecret = class extends Secret {
|
|
178
178
|
{
|
179
179
|
metadata: mapMetadata(args2, name),
|
180
180
|
data: args2.data,
|
181
|
-
stringData: args2.stringData
|
181
|
+
stringData: args2.stringData,
|
182
|
+
type: args2.type,
|
183
|
+
immutable: args2.immutable
|
182
184
|
},
|
183
185
|
{
|
184
186
|
...opts,
|
@@ -207,7 +209,9 @@ var SecretPatch = class extends Secret {
|
|
207
209
|
{
|
208
210
|
metadata: mapMetadata(args2, name),
|
209
211
|
data: args2.data,
|
210
|
-
stringData: args2.stringData
|
212
|
+
stringData: args2.stringData,
|
213
|
+
type: args2.type,
|
214
|
+
immutable: args2.immutable
|
211
215
|
},
|
212
216
|
{
|
213
217
|
...opts,
|
@@ -255,9 +259,131 @@ var ExternalSecret = class extends Secret {
|
|
255
259
|
}
|
256
260
|
};
|
257
261
|
|
258
|
-
// src/
|
262
|
+
// src/config-map.ts
|
259
263
|
import { core as core3 } from "@pulumi/kubernetes";
|
260
|
-
import {
|
264
|
+
import {
|
265
|
+
ComponentResource as ComponentResource3,
|
266
|
+
output as output3
|
267
|
+
} from "@pulumi/pulumi";
|
268
|
+
var ConfigMap = class extends ComponentResource3 {
|
269
|
+
constructor(type, name, args, opts, cluster, metadata, data) {
|
270
|
+
super(type, name, args, opts);
|
271
|
+
this.cluster = cluster;
|
272
|
+
this.metadata = metadata;
|
273
|
+
this.data = data;
|
274
|
+
}
|
275
|
+
/**
|
276
|
+
* Creates a new config map.
|
277
|
+
*/
|
278
|
+
static create(name, args, opts) {
|
279
|
+
return new CreatedConfigMap(name, args, opts);
|
280
|
+
}
|
281
|
+
/**
|
282
|
+
* Creates a new config map or patches an existing one.
|
283
|
+
*
|
284
|
+
* Will throw an error if the config map does not exist when `args.resource` is provided.
|
285
|
+
*/
|
286
|
+
static createOrPatch(name, args, opts) {
|
287
|
+
if (!args.existing) {
|
288
|
+
return new CreatedConfigMap(name, args, opts);
|
289
|
+
}
|
290
|
+
return new ConfigMapPatch(
|
291
|
+
name,
|
292
|
+
{
|
293
|
+
...args,
|
294
|
+
name: withPatchName("configmap", args.existing, args.cluster),
|
295
|
+
namespace: output3(args.existing).metadata.namespace
|
296
|
+
},
|
297
|
+
opts
|
298
|
+
);
|
299
|
+
}
|
300
|
+
/**
|
301
|
+
* Gets an existing config map.
|
302
|
+
*
|
303
|
+
* Will throw an error if the config map does not exist.
|
304
|
+
*/
|
305
|
+
static get(name, id, cluster, opts) {
|
306
|
+
return new ExternalConfigMap(name, id, cluster, opts);
|
307
|
+
}
|
308
|
+
};
|
309
|
+
var CreatedConfigMap = class extends ConfigMap {
|
310
|
+
constructor(name, args, opts) {
|
311
|
+
const configMap = output3(args).apply(async (args2) => {
|
312
|
+
return new core3.v1.ConfigMap(
|
313
|
+
name,
|
314
|
+
{
|
315
|
+
metadata: mapMetadata(args2, name),
|
316
|
+
data: args2.data
|
317
|
+
},
|
318
|
+
{
|
319
|
+
...opts,
|
320
|
+
parent: this,
|
321
|
+
provider: await getProvider(args2.cluster)
|
322
|
+
}
|
323
|
+
);
|
324
|
+
});
|
325
|
+
super(
|
326
|
+
"highstate:k8s:ConfigMap",
|
327
|
+
name,
|
328
|
+
args,
|
329
|
+
opts,
|
330
|
+
output3(args.cluster),
|
331
|
+
configMap.metadata,
|
332
|
+
configMap.data
|
333
|
+
);
|
334
|
+
}
|
335
|
+
};
|
336
|
+
var ConfigMapPatch = class extends ConfigMap {
|
337
|
+
constructor(name, args, opts) {
|
338
|
+
const configMap = output3(args).apply(async (args2) => {
|
339
|
+
return new core3.v1.ConfigMapPatch(
|
340
|
+
name,
|
341
|
+
{
|
342
|
+
metadata: mapMetadata(args2, name),
|
343
|
+
data: args2.data
|
344
|
+
},
|
345
|
+
{
|
346
|
+
...opts,
|
347
|
+
parent: this,
|
348
|
+
provider: await getProvider(args2.cluster)
|
349
|
+
}
|
350
|
+
);
|
351
|
+
});
|
352
|
+
super(
|
353
|
+
"highstate:k8s:ConfigMapPatch",
|
354
|
+
name,
|
355
|
+
args,
|
356
|
+
opts,
|
357
|
+
output3(args.cluster),
|
358
|
+
configMap.metadata,
|
359
|
+
configMap.data
|
360
|
+
);
|
361
|
+
}
|
362
|
+
};
|
363
|
+
var ExternalConfigMap = class extends ConfigMap {
|
364
|
+
constructor(name, id, cluster, opts) {
|
365
|
+
const configMap = output3(id).apply(async (realName) => {
|
366
|
+
return core3.v1.ConfigMap.get(name, realName, {
|
367
|
+
...opts,
|
368
|
+
parent: this,
|
369
|
+
provider: await getProvider(cluster)
|
370
|
+
});
|
371
|
+
});
|
372
|
+
super(
|
373
|
+
"highstate:k8s:ExternalConfigMap",
|
374
|
+
name,
|
375
|
+
{ id, cluster },
|
376
|
+
opts,
|
377
|
+
output3(cluster),
|
378
|
+
configMap.metadata,
|
379
|
+
configMap.data
|
380
|
+
);
|
381
|
+
}
|
382
|
+
};
|
383
|
+
|
384
|
+
// src/container.ts
|
385
|
+
import { core as core4 } from "@pulumi/kubernetes";
|
386
|
+
import { normalize, output as output4 } from "@highstate/pulumi";
|
261
387
|
import { concat, map, omit as omit2 } from "remeda";
|
262
388
|
var containerExtraArgs = [
|
263
389
|
"port",
|
@@ -348,7 +474,7 @@ function mapVolumeMount(volumeMount) {
|
|
348
474
|
return omit2(
|
349
475
|
{
|
350
476
|
...volumeMount,
|
351
|
-
name:
|
477
|
+
name: output4(volumeMount.volume).apply(mapWorkloadVolume).apply((volume) => output4(volume.name))
|
352
478
|
},
|
353
479
|
["volume"]
|
354
480
|
);
|
@@ -359,14 +485,14 @@ function mapVolumeMount(volumeMount) {
|
|
359
485
|
};
|
360
486
|
}
|
361
487
|
function mapEnvironmentSource(envFrom) {
|
362
|
-
if (envFrom instanceof
|
488
|
+
if (envFrom instanceof core4.v1.ConfigMap) {
|
363
489
|
return {
|
364
490
|
configMapRef: {
|
365
491
|
name: envFrom.metadata.name
|
366
492
|
}
|
367
493
|
};
|
368
494
|
}
|
369
|
-
if (envFrom instanceof
|
495
|
+
if (envFrom instanceof core4.v1.Secret) {
|
370
496
|
return {
|
371
497
|
secretRef: {
|
372
498
|
name: envFrom.metadata.name
|
@@ -392,7 +518,15 @@ function mapWorkloadVolume(volume) {
|
|
392
518
|
}
|
393
519
|
};
|
394
520
|
}
|
395
|
-
if (
|
521
|
+
if (volume instanceof ConfigMap) {
|
522
|
+
return {
|
523
|
+
name: volume.metadata.name,
|
524
|
+
configMap: {
|
525
|
+
name: volume.metadata.name
|
526
|
+
}
|
527
|
+
};
|
528
|
+
}
|
529
|
+
if (core4.v1.PersistentVolumeClaim.isInstance(volume)) {
|
396
530
|
return {
|
397
531
|
name: volume.metadata.name,
|
398
532
|
persistentVolumeClaim: {
|
@@ -400,7 +534,7 @@ function mapWorkloadVolume(volume) {
|
|
400
534
|
}
|
401
535
|
};
|
402
536
|
}
|
403
|
-
if (
|
537
|
+
if (core4.v1.ConfigMap.isInstance(volume)) {
|
404
538
|
return {
|
405
539
|
name: volume.metadata.name,
|
406
540
|
configMap: {
|
@@ -408,7 +542,7 @@ function mapWorkloadVolume(volume) {
|
|
408
542
|
}
|
409
543
|
};
|
410
544
|
}
|
411
|
-
if (
|
545
|
+
if (core4.v1.Secret.isInstance(volume)) {
|
412
546
|
return {
|
413
547
|
name: volume.metadata.name,
|
414
548
|
secret: {
|
@@ -424,9 +558,9 @@ import {
|
|
424
558
|
normalize as normalize2
|
425
559
|
} from "@highstate/pulumi";
|
426
560
|
import {
|
427
|
-
ComponentResource as
|
561
|
+
ComponentResource as ComponentResource4,
|
428
562
|
interpolate,
|
429
|
-
output as
|
563
|
+
output as output5
|
430
564
|
} from "@pulumi/pulumi";
|
431
565
|
import { uniqueBy } from "remeda";
|
432
566
|
import { deepmerge as deepmerge2 } from "deepmerge-ts";
|
@@ -443,7 +577,7 @@ function getWorkloadComponents(name, args, parent, opts) {
|
|
443
577
|
const labels = {
|
444
578
|
"app.kubernetes.io/name": name
|
445
579
|
};
|
446
|
-
const containers =
|
580
|
+
const containers = output5(args).apply((args2) => normalize2(args2.container, args2.containers));
|
447
581
|
const volumes = containers.apply((containers2) => {
|
448
582
|
const containerVolumes = containers2.flatMap((container) => normalize2(container.volume, container.volumes)).map(mapWorkloadVolume);
|
449
583
|
const containerVolumeMounts = containers2.flatMap((container) => {
|
@@ -451,18 +585,18 @@ function getWorkloadComponents(name, args, parent, opts) {
|
|
451
585
|
return "volume" in volumeMount ? volumeMount.volume : void 0;
|
452
586
|
}).filter(Boolean);
|
453
587
|
}).map(mapWorkloadVolume);
|
454
|
-
return
|
588
|
+
return output5([...containerVolumes, ...containerVolumeMounts]).apply(
|
455
589
|
uniqueBy((volume) => volume.name)
|
456
590
|
);
|
457
591
|
});
|
458
|
-
const podSpec =
|
592
|
+
const podSpec = output5({ args, containers, volumes }).apply(({ args: args2, containers: containers2, volumes: volumes2 }) => {
|
459
593
|
const spec = {
|
460
594
|
volumes: volumes2,
|
461
595
|
containers: containers2.map((container) => mapContainerToRaw(container, args2.cluster, name)),
|
462
596
|
...podSpecDefaults
|
463
597
|
};
|
464
598
|
if (containers2.some((container) => container.enableTun) && args2.cluster.quirks?.tunDevicePolicy?.type !== "plugin") {
|
465
|
-
spec.volumes =
|
599
|
+
spec.volumes = output5(spec.volumes).apply((volumes3) => [
|
466
600
|
...volumes3 ?? [],
|
467
601
|
{
|
468
602
|
name: "tun-device",
|
@@ -502,7 +636,7 @@ function getWorkloadComponents(name, args, parent, opts) {
|
|
502
636
|
}
|
503
637
|
function getExposableWorkloadComponents(name, args, parent, opts) {
|
504
638
|
const { labels, containers, volumes, podSpec, podTemplate, networkPolicy } = getWorkloadComponents(name, args, parent, opts);
|
505
|
-
const service =
|
639
|
+
const service = output5({ args, containers }).apply(async ({ args: args2, containers: containers2 }) => {
|
506
640
|
if (!args2.service && !args2.httpRoute) {
|
507
641
|
return void 0;
|
508
642
|
}
|
@@ -532,7 +666,7 @@ function getExposableWorkloadComponents(name, args, parent, opts) {
|
|
532
666
|
}
|
533
667
|
);
|
534
668
|
});
|
535
|
-
const httpRoute =
|
669
|
+
const httpRoute = output5({
|
536
670
|
args,
|
537
671
|
service
|
538
672
|
}).apply(async ({ args: args2, service: service2 }) => {
|
@@ -560,7 +694,7 @@ function getExposableWorkloadComponents(name, args, parent, opts) {
|
|
560
694
|
});
|
561
695
|
return { labels, containers, volumes, podSpec, podTemplate, networkPolicy, service, httpRoute };
|
562
696
|
}
|
563
|
-
var Workload = class extends
|
697
|
+
var Workload = class extends ComponentResource4 {
|
564
698
|
constructor(type, name, args, opts, resourceType, cluster, metadata, networkPolicy) {
|
565
699
|
super(type, name, args, opts);
|
566
700
|
this.name = name;
|
@@ -574,11 +708,11 @@ var Workload = class extends ComponentResource3 {
|
|
574
708
|
* The instance terminal to interact with the deployment.
|
575
709
|
*/
|
576
710
|
get terminal() {
|
577
|
-
const containerName =
|
711
|
+
const containerName = output5(this.args).apply((args) => {
|
578
712
|
const containers = normalize2(args.container, args.containers);
|
579
713
|
return containers[0]?.name ?? this.name;
|
580
714
|
});
|
581
|
-
return
|
715
|
+
return output5({
|
582
716
|
name: this.metadata.name,
|
583
717
|
title: this.metadata.name,
|
584
718
|
image: "ghcr.io/exeteres/highstate/terminal-kubectl",
|
@@ -653,9 +787,9 @@ var ExposableWorkload = class extends Workload {
|
|
653
787
|
* Creates a generic workload or patches the existing one.
|
654
788
|
*/
|
655
789
|
static createOrPatchGeneric(name, args, opts) {
|
656
|
-
return
|
790
|
+
return output5(args).apply(async (args2) => {
|
657
791
|
if (args2.existing?.type === "k8s.deployment") {
|
658
|
-
const { Deployment } = await import("./deployment-
|
792
|
+
const { Deployment } = await import("./deployment-E3ZTF2IS.js");
|
659
793
|
return Deployment.patch(
|
660
794
|
name,
|
661
795
|
{
|
@@ -667,7 +801,7 @@ var ExposableWorkload = class extends Workload {
|
|
667
801
|
);
|
668
802
|
}
|
669
803
|
if (args2.existing?.type === "k8s.stateful-set") {
|
670
|
-
const { StatefulSet } = await import("./stateful-set-
|
804
|
+
const { StatefulSet } = await import("./stateful-set-NTU7QKC7.js");
|
671
805
|
return StatefulSet.patch(
|
672
806
|
name,
|
673
807
|
{
|
@@ -679,11 +813,11 @@ var ExposableWorkload = class extends Workload {
|
|
679
813
|
);
|
680
814
|
}
|
681
815
|
if (args2.type === "Deployment") {
|
682
|
-
const { Deployment } = await import("./deployment-
|
816
|
+
const { Deployment } = await import("./deployment-E3ZTF2IS.js");
|
683
817
|
return Deployment.create(name, deepmerge2(args2, args2.deployment), opts);
|
684
818
|
}
|
685
819
|
if (args2.type === "StatefulSet") {
|
686
|
-
const { StatefulSet } = await import("./stateful-set-
|
820
|
+
const { StatefulSet } = await import("./stateful-set-NTU7QKC7.js");
|
687
821
|
return StatefulSet.create(name, deepmerge2(args2, args2.statefulSet), opts);
|
688
822
|
}
|
689
823
|
throw new Error(`Unknown workload type: ${args2.type}`);
|
@@ -694,10 +828,11 @@ var ExposableWorkload = class extends Workload {
|
|
694
828
|
export {
|
695
829
|
PersistentVolumeClaim,
|
696
830
|
Secret,
|
831
|
+
ConfigMap,
|
697
832
|
exposableWorkloadExtraArgs,
|
698
833
|
getWorkloadComponents,
|
699
834
|
getExposableWorkloadComponents,
|
700
835
|
Workload,
|
701
836
|
ExposableWorkload
|
702
837
|
};
|
703
|
-
//# sourceMappingURL=chunk-
|
838
|
+
//# sourceMappingURL=chunk-R43VRICF.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/pvc.ts","../src/secret.ts","../src/config-map.ts","../src/container.ts","../src/workload.ts","../src/pod.ts"],"sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport { core, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n Output,\n output,\n type ComponentResourceOptions,\n type CustomResourceOptions,\n type Input,\n type Inputs,\n} from \"@highstate/pulumi\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { omit } from \"remeda\"\nimport {\n commonExtraArgs,\n getProvider,\n mapMetadata,\n resourceIdToString,\n type CommonArgs,\n type ResourceId,\n} from \"./shared\"\n\nexport type PersistentVolumeClaimArgs = CommonArgs &\n types.input.core.v1.PersistentVolumeClaimSpec & {\n /**\n * The size of the volume to request.\n *\n * By default, the size is set to \"100Mi\".\n */\n size?: string\n }\n\nexport type CreateOrGetPersistentVolumeClaimArgs = PersistentVolumeClaimArgs & {\n existing: Input<k8s.PersistentVolumeClaim> | undefined\n}\n\nconst extraPersistentVolumeClaimArgs = [...commonExtraArgs, \"size\"] as const\n\nexport abstract class PersistentVolumeClaim extends ComponentResource {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions,\n\n /**\n * The cluster where the PVC is created.\n */\n readonly cluster: Output<k8s.Cluster>,\n\n /**\n * The metadata of the underlying Kubernetes PVC.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes PVC.\n */\n readonly spec: Output<types.output.core.v1.PersistentVolumeClaimSpec>,\n\n /**\n * The status of the underlying Kubernetes PVC.\n */\n readonly status: Output<types.output.core.v1.PersistentVolumeClaimStatus>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * The Highstate PVC entity.\n */\n get entity(): Output<k8s.PersistentVolumeClaim> {\n return output({\n type: \"k8s.persistent-volume-claim\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n })\n }\n\n static create(\n name: string,\n args: PersistentVolumeClaimArgs,\n opts: ComponentResourceOptions,\n ): PersistentVolumeClaim {\n return new CreatedPersistentVolumeClaim(name, args, opts)\n }\n\n static of(\n name: string,\n entity: Input<k8s.PersistentVolumeClaim>,\n cluster: Input<k8s.Cluster>,\n opts: ComponentResourceOptions,\n ): PersistentVolumeClaim {\n return new ExternalPersistentVolumeClaim(name, output(entity).metadata, cluster, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetPersistentVolumeClaimArgs,\n opts: ComponentResourceOptions,\n ): PersistentVolumeClaim {\n if (!args.existing) {\n return new CreatedPersistentVolumeClaim(name, args, opts)\n }\n\n return new ExternalPersistentVolumeClaim(\n name,\n output(args.existing).metadata,\n args.cluster,\n opts,\n )\n }\n}\n\nexport class CreatedPersistentVolumeClaim extends PersistentVolumeClaim {\n constructor(name: string, args: PersistentVolumeClaimArgs, opts: CustomResourceOptions) {\n const pvc = output(args).apply(async args => {\n return new core.v1.PersistentVolumeClaim(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n accessModes: [\"ReadWriteOnce\"],\n resources: {\n requests: {\n storage: args.size ?? \"100Mi\",\n },\n },\n } satisfies types.input.core.v1.PersistentVolumeClaimSpec,\n omit(args, extraPersistentVolumeClaimArgs),\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"k8s:PersistentVolumeClaim\",\n name,\n args,\n opts,\n\n output(args.cluster),\n pvc.metadata,\n pvc.spec,\n pvc.status,\n )\n }\n}\n\nexport class ExternalPersistentVolumeClaim extends PersistentVolumeClaim {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts: ComponentResourceOptions,\n ) {\n const pvc = output(id).apply(async id => {\n return core.v1.PersistentVolumeClaim.get(\n //\n name,\n resourceIdToString(id),\n {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:ExternalPersistentVolumeClaim\",\n name,\n { id, cluster },\n opts,\n\n output(cluster),\n pvc.metadata,\n pvc.spec,\n pvc.status,\n )\n }\n}\n\nexport function getAutoVolumeName(workloadName: string, index: number): string {\n if (index === 0) {\n return `${workloadName}-data`\n }\n\n return `${workloadName}-data-${index}`\n}\n","import type { k8s } from \"@highstate/library\"\nimport { core, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n output,\n Output,\n type ComponentResourceOptions,\n type Input,\n type Inputs,\n} from \"@pulumi/pulumi\"\nimport { getProvider, mapMetadata, withPatchName, type CommonArgs } from \"./shared\"\n\nexport type SecretArgs = CommonArgs &\n Omit<types.input.core.v1.Secret, \"kind\" | \"metadata\" | \"apiVersion\">\n\nexport type CreateOrPatchSecretArgs = SecretArgs & {\n /**\n * The resource to use to determine the name of the secret.\n *\n * If not provided, the secret will be created, otherwise it will be retrieved/patched.\n */\n existing: Input<k8s.Resource> | undefined\n}\n\nexport abstract class Secret extends ComponentResource {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n /**\n * The cluster where the secret is created.\n */\n readonly cluster: Output<k8s.Cluster>,\n\n /**\n * The metadata of the underlying Kubernetes secret.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The data of the underlying Kubernetes secret.\n */\n readonly data: Output<Record<string, string>>,\n\n /**\n * The stringData of the underlying Kubernetes secret.\n */\n readonly stringData: Output<Record<string, string>>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * Creates a new secret.\n */\n static create(name: string, args: SecretArgs, opts?: ComponentResourceOptions): Secret {\n return new CreatedSecret(name, args, opts)\n }\n\n /**\n * Creates a new secret or patches an existing one.\n *\n * Will throw an error if the secret does not exist when `args.resource` is provided.\n */\n static createOrPatch(\n name: string,\n args: CreateOrPatchSecretArgs,\n opts?: ComponentResourceOptions,\n ): Secret {\n if (!args.existing) {\n return new CreatedSecret(name, args, opts)\n }\n\n return new SecretPatch(\n name,\n {\n ...args,\n name: withPatchName(\"secret\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n /**\n * Gets an existing secret.\n *\n * Will throw an error if the secret does not exist.\n */\n static get(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): Secret {\n return new ExternalSecret(name, id, cluster, opts)\n }\n}\n\nclass CreatedSecret extends Secret {\n constructor(name: string, args: SecretArgs, opts?: ComponentResourceOptions) {\n const secret = output(args).apply(async args => {\n return new core.v1.Secret(\n name,\n {\n metadata: mapMetadata(args, name),\n data: args.data,\n stringData: args.stringData,\n type: args.type,\n immutable: args.immutable,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Secret\",\n name,\n args,\n opts,\n output(args.cluster),\n secret.metadata,\n secret.data,\n secret.stringData,\n )\n }\n}\n\nclass SecretPatch extends Secret {\n constructor(name: string, args: SecretArgs, opts?: ComponentResourceOptions) {\n const secret = output(args).apply(async args => {\n return new core.v1.SecretPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n data: args.data,\n stringData: args.stringData,\n type: args.type,\n immutable: args.immutable,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:SecretPatch\",\n name,\n args,\n opts,\n output(args.cluster),\n secret.metadata,\n secret.data,\n secret.stringData,\n )\n }\n}\n\nclass ExternalSecret extends Secret {\n constructor(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const secret = output(id).apply(async realName => {\n return core.v1.Secret.get(\n //\n name,\n realName,\n {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:ExternalSecret\",\n name,\n { id, cluster },\n opts,\n output(cluster),\n secret.metadata,\n secret.data,\n secret.stringData,\n )\n }\n}\n","import type { k8s } from \"@highstate/library\"\nimport { core, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n output,\n Output,\n type ComponentResourceOptions,\n type Input,\n type Inputs,\n} from \"@pulumi/pulumi\"\nimport { getProvider, mapMetadata, withPatchName, type CommonArgs } from \"./shared\"\n\nexport type ConfigMapArgs = CommonArgs &\n Omit<types.input.core.v1.ConfigMap, \"kind\" | \"metadata\" | \"apiVersion\">\n\nexport type CreateOrPatchConfigMapArgs = ConfigMapArgs & {\n /**\n * The resource to use to determine the name of the config map.\n *\n * If not provided, the config map will be created, otherwise it will be retrieved/patched.\n */\n existing: Input<k8s.Resource> | undefined\n}\n\nexport abstract class ConfigMap extends ComponentResource {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n /**\n * The cluster where the config map is created.\n */\n readonly cluster: Output<k8s.Cluster>,\n\n /**\n * The metadata of the underlying Kubernetes config map.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The data of the underlying Kubernetes config map.\n */\n readonly data: Output<Record<string, string>>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * Creates a new config map.\n */\n static create(name: string, args: ConfigMapArgs, opts?: ComponentResourceOptions): ConfigMap {\n return new CreatedConfigMap(name, args, opts)\n }\n\n /**\n * Creates a new config map or patches an existing one.\n *\n * Will throw an error if the config map does not exist when `args.resource` is provided.\n */\n static createOrPatch(\n name: string,\n args: CreateOrPatchConfigMapArgs,\n opts?: ComponentResourceOptions,\n ): ConfigMap {\n if (!args.existing) {\n return new CreatedConfigMap(name, args, opts)\n }\n\n return new ConfigMapPatch(\n name,\n {\n ...args,\n name: withPatchName(\"configmap\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n /**\n * Gets an existing config map.\n *\n * Will throw an error if the config map does not exist.\n */\n static get(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): ConfigMap {\n return new ExternalConfigMap(name, id, cluster, opts)\n }\n}\n\nclass CreatedConfigMap extends ConfigMap {\n constructor(name: string, args: ConfigMapArgs, opts?: ComponentResourceOptions) {\n const configMap = output(args).apply(async args => {\n return new core.v1.ConfigMap(\n name,\n {\n metadata: mapMetadata(args, name),\n data: args.data,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:ConfigMap\",\n name,\n args,\n opts,\n output(args.cluster),\n configMap.metadata,\n configMap.data,\n )\n }\n}\n\nclass ConfigMapPatch extends ConfigMap {\n constructor(name: string, args: ConfigMapArgs, opts?: ComponentResourceOptions) {\n const configMap = output(args).apply(async args => {\n return new core.v1.ConfigMapPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n data: args.data,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:ConfigMapPatch\",\n name,\n args,\n opts,\n output(args.cluster),\n configMap.metadata,\n configMap.data,\n )\n }\n}\n\nclass ExternalConfigMap extends ConfigMap {\n constructor(\n name: string,\n id: Input<string>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const configMap = output(id).apply(async realName => {\n return core.v1.ConfigMap.get(name, realName, {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalConfigMap\",\n name,\n { id, cluster },\n opts,\n output(cluster),\n configMap.metadata,\n configMap.data,\n )\n }\n}\n","import type { PartialKeys } from \"@highstate/contract\"\nimport type { k8s, network } from \"@highstate/library\"\nimport { core, type types } from \"@pulumi/kubernetes\"\nimport { normalize, output, type Input, type InputArray, type Unwrap } from \"@highstate/pulumi\"\nimport { concat, map, omit } from \"remeda\"\nimport { PersistentVolumeClaim } from \"./pvc\"\nimport { Secret } from \"./secret\"\nimport { ConfigMap } from \"./config-map\"\n\nexport type Container = Omit<PartialKeys<types.input.core.v1.Container, \"name\">, \"volumeMounts\"> & {\n /**\n * The single port to add to the container.\n */\n port?: Input<types.input.core.v1.ContainerPort>\n\n /**\n * The volume mount to attach to the container.\n */\n volumeMount?: Input<ContainerVolumeMount>\n\n /**\n * The volume mounts to attach to the container.\n */\n volumeMounts?: InputArray<ContainerVolumeMount>\n\n /**\n * The volume to include in the parent workload.\n * It is like the `volumes` property, but defined at the container level.\n * It will be defined as a volume mount in the parent workload automatically.\n */\n volume?: Input<WorkloadVolume>\n\n /**\n * The volumes to include in the parent workload.\n * It is like the `volumes` property, but defined at the container level.\n * It will be defined as a volume mount in the parent workload automatically.\n */\n volumes?: InputArray<WorkloadVolume>\n\n /**\n * The map of environment variables to set in the container.\n * It is like the `env` property, but more convenient to use.\n */\n environment?: Input<ContainerEnvironment>\n\n /**\n * The source of environment variables to set in the container.\n * It is like the `envFrom` property, but more convenient to use.\n */\n environmentSource?: Input<ContainerEnvironmentSource>\n\n /**\n * The sources of environment variables to set in the container.\n * It is like the `envFrom` property, but more convenient to use.\n */\n environmentSources?: InputArray<ContainerEnvironmentSource>\n\n /**\n * The list of endpoints that the container is allowed to access.\n *\n * This is used to generate a network policy.\n */\n allowedEndpoints?: InputArray<network.L34Endpoint>\n\n /**\n * Enable the TUN device in the container.\n *\n * All necessary security context settings will be applied to the container.\n */\n enableTun?: Input<boolean>\n}\n\nconst containerExtraArgs = [\n \"port\",\n \"volumeMount\",\n \"volume\",\n \"environment\",\n \"environmentSource\",\n \"environmentSources\",\n] as const\n\nexport type ContainerEnvironment = Record<\n string,\n Input<string | undefined | null | ContainerEnvironmentVariable>\n>\n\nexport type ContainerEnvironmentVariable =\n | types.input.core.v1.EnvVarSource\n | {\n /**\n * The secret to select from.\n */\n secret: Input<core.v1.Secret | Secret>\n\n /**\n * The key of the secret to select from.\n */\n key: string\n }\n | {\n /**\n * The config map to select from.\n */\n configMap: Input<core.v1.ConfigMap>\n\n /**\n * The key of the config map to select from.\n */\n key: string\n }\n\nexport type ContainerEnvironmentSource =\n | types.input.core.v1.EnvFromSource\n | core.v1.ConfigMap\n | core.v1.Secret\n\nexport type ContainerVolumeMount =\n | types.input.core.v1.VolumeMount\n | (Omit<types.input.core.v1.VolumeMount, \"name\"> & {\n /**\n * The volume to mount.\n */\n volume: Input<WorkloadVolume>\n })\n\nexport type WorkloadVolume =\n | types.input.core.v1.Volume\n | core.v1.PersistentVolumeClaim\n | PersistentVolumeClaim\n | core.v1.ConfigMap\n | ConfigMap\n | core.v1.Secret\n | Secret\n\nexport function mapContainerToRaw(\n container: Unwrap<Container>,\n cluster: k8s.Cluster,\n fallbackName: string,\n): types.input.core.v1.Container {\n const containerName = container.name ?? fallbackName\n\n const spec = {\n ...omit(container, containerExtraArgs),\n\n name: containerName,\n ports: normalize(container.port, container.ports),\n\n volumeMounts: map(normalize(container.volumeMount, container.volumeMounts), mapVolumeMount),\n\n env: concat(\n container.environment ? mapContainerEnvironment(container.environment) : [],\n container.env ?? [],\n ),\n\n envFrom: concat(\n map(\n normalize(container.environmentSource, container.environmentSources),\n mapEnvironmentSource,\n ),\n container.envFrom ?? [],\n ),\n } as Unwrap<types.input.core.v1.Container>\n\n if (container.enableTun) {\n spec.securityContext ??= {}\n spec.securityContext.capabilities ??= {}\n spec.securityContext.capabilities.add = [\"NET_ADMIN\"]\n\n if (cluster.quirks?.tunDevicePolicy?.type === \"plugin\") {\n spec.resources ??= {}\n spec.resources.limits ??= {}\n spec.resources.limits[cluster.quirks.tunDevicePolicy.resourceName] =\n cluster.quirks.tunDevicePolicy.resourceValue\n } else {\n spec.volumeMounts ??= []\n spec.volumeMounts.push({\n name: \"tun-device\",\n mountPath: \"/dev/net/tun\",\n readOnly: false,\n })\n }\n }\n\n return spec\n}\n\nexport function mapContainerEnvironment(\n environment: Unwrap<ContainerEnvironment>,\n): types.input.core.v1.EnvVar[] {\n const envVars: types.input.core.v1.EnvVar[] = []\n\n for (const [name, value] of Object.entries(environment)) {\n if (!value) {\n continue\n }\n\n if (typeof value === \"string\") {\n envVars.push({ name, value })\n continue\n }\n\n if (\"secret\" in value) {\n envVars.push({\n name,\n valueFrom: {\n secretKeyRef: {\n name: value.secret.metadata.name,\n key: value.key,\n },\n },\n })\n continue\n }\n\n if (\"configMap\" in value) {\n envVars.push({\n name,\n valueFrom: {\n configMapKeyRef: {\n name: value.configMap.metadata.name,\n key: value.key,\n },\n },\n })\n continue\n }\n\n envVars.push({ name, valueFrom: value })\n }\n\n return envVars\n}\n\nexport function mapVolumeMount(volumeMount: ContainerVolumeMount): types.input.core.v1.VolumeMount {\n if (\"volume\" in volumeMount) {\n return omit(\n {\n ...volumeMount,\n name: output(volumeMount.volume)\n .apply(mapWorkloadVolume)\n .apply(volume => output(volume.name)),\n },\n [\"volume\"],\n )\n }\n\n return {\n ...volumeMount,\n name: volumeMount.name,\n }\n}\n\nexport function mapEnvironmentSource(\n envFrom: ContainerEnvironmentSource,\n): types.input.core.v1.EnvFromSource {\n if (envFrom instanceof core.v1.ConfigMap) {\n return {\n configMapRef: {\n name: envFrom.metadata.name,\n },\n }\n }\n\n if (envFrom instanceof core.v1.Secret) {\n return {\n secretRef: {\n name: envFrom.metadata.name,\n },\n }\n }\n\n return envFrom\n}\n\nexport function mapWorkloadVolume(volume: WorkloadVolume) {\n if (volume instanceof PersistentVolumeClaim) {\n return {\n name: volume.metadata.name,\n persistentVolumeClaim: {\n claimName: volume.metadata.name,\n },\n }\n }\n\n if (volume instanceof Secret) {\n return {\n name: volume.metadata.name,\n secret: {\n secretName: volume.metadata.name,\n },\n }\n }\n\n if (volume instanceof ConfigMap) {\n return {\n name: volume.metadata.name,\n configMap: {\n name: volume.metadata.name,\n },\n }\n }\n\n if (core.v1.PersistentVolumeClaim.isInstance(volume)) {\n return {\n name: volume.metadata.name,\n persistentVolumeClaim: {\n claimName: volume.metadata.name,\n },\n }\n }\n\n if (core.v1.ConfigMap.isInstance(volume)) {\n return {\n name: volume.metadata.name,\n configMap: {\n name: volume.metadata.name,\n },\n }\n }\n\n if (core.v1.Secret.isInstance(volume)) {\n return {\n name: volume.metadata.name,\n secret: {\n secretName: volume.metadata.name,\n },\n }\n }\n\n return volume\n}\n","import type { k8s } from \"@highstate/library\"\nimport type { DeploymentArgs } from \"./deployment\"\nimport type { StatefulSetArgs } from \"./stateful-set\"\nimport type { types } from \"@pulumi/kubernetes\"\nimport {\n normalize,\n type ComponentResourceOptions,\n type InputArray,\n type InstanceTerminal,\n} from \"@highstate/pulumi\"\nimport {\n ComponentResource,\n interpolate,\n Output,\n output,\n type CustomResourceOptions,\n type Input,\n} from \"@pulumi/pulumi\"\nimport { uniqueBy } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { commonExtraArgs, getProvider, type CommonArgs } from \"./shared\"\nimport { mapContainerPortToServicePort, Service, type ServiceArgs } from \"./service\"\nimport { HttpRoute, type HttpRouteArgs } from \"./gateway\"\nimport {\n mapContainerToRaw,\n mapWorkloadVolume,\n type Container,\n type WorkloadVolume,\n} from \"./container\"\nimport { NetworkPolicy } from \"./network-policy\"\nimport { podSpecDefaults } from \"./pod\"\n\nexport type WorkloadArgs = CommonArgs & {\n container?: Input<Container>\n containers?: InputArray<Container>\n\n /**\n * The shell to use in the terminal.\n *\n * By default, `bash` is used.\n */\n terminalShell?: string\n}\n\nexport const workloadExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport type ExposableWorkloadArgs = WorkloadArgs & {\n service?: Input<Omit<ServiceArgs, \"cluster\" | \"namespace\">>\n httpRoute?: Input<Omit<HttpRouteArgs, \"cluster\" | \"namespace\">>\n\n /**\n * The existing workload to patch.\n */\n existing?: Input<k8s.ExposableWorkload>\n}\n\nexport const exposableWorkloadExtraArgs = [...workloadExtraArgs, \"service\", \"httpRoute\"] as const\n\nexport type ExposableWorkloadType = \"Deployment\" | \"StatefulSet\"\n\nexport type GenericExposableWorkloadArgs = Omit<ExposableWorkloadArgs, \"existing\"> & {\n /**\n * The type of workload to create.\n *\n * Will be ignored if the `existing` argument is provided.\n */\n type: ExposableWorkloadType\n\n /**\n * The existing workload to patch.\n */\n existing: Input<k8s.ExposableWorkload | undefined>\n\n /**\n * The args specific to the \"Deployment\" workload type.\n *\n * Will be ignored for other workload types.\n */\n deployment?: Input<DeploymentArgs>\n\n /**\n * The args specific to the \"StatefulSet\" workload type.\n *\n * Will be ignored for other workload types.\n */\n statefulSet?: Input<StatefulSetArgs>\n}\n\nexport function getWorkloadComponents(\n name: string,\n args: WorkloadArgs,\n parent: () => ComponentResource,\n opts: ComponentResourceOptions | undefined,\n) {\n const labels = {\n \"app.kubernetes.io/name\": name,\n }\n\n const containers = output(args).apply(args => normalize(args.container, args.containers))\n\n const volumes = containers.apply(containers => {\n const containerVolumes = containers\n .flatMap(container => normalize(container.volume, container.volumes))\n .map(mapWorkloadVolume)\n\n const containerVolumeMounts = containers\n .flatMap(container => {\n return normalize(container.volumeMount, container.volumeMounts)\n .map(volumeMount => {\n return \"volume\" in volumeMount ? volumeMount.volume : undefined\n })\n .filter(Boolean) as WorkloadVolume[]\n })\n .map(mapWorkloadVolume)\n\n return output([...containerVolumes, ...containerVolumeMounts]).apply(\n uniqueBy(volume => volume.name),\n )\n })\n\n const podSpec = output({ args, containers, volumes }).apply(({ args, containers, volumes }) => {\n const spec = {\n volumes,\n containers: containers.map(container => mapContainerToRaw(container, args.cluster, name)),\n ...podSpecDefaults,\n } satisfies types.input.core.v1.PodSpec\n\n if (\n containers.some(container => container.enableTun) &&\n args.cluster.quirks?.tunDevicePolicy?.type !== \"plugin\"\n ) {\n spec.volumes = output(spec.volumes).apply(volumes => [\n ...(volumes ?? []),\n {\n name: \"tun-device\",\n hostPath: {\n path: \"/dev/net/tun\",\n },\n },\n ])\n }\n\n return spec\n })\n\n const podTemplate = podSpec.apply(podSpec => {\n return {\n metadata: { labels },\n spec: podSpec,\n } satisfies types.input.core.v1.PodTemplateSpec\n })\n\n const networkPolicy = containers.apply(containers => {\n const allowedEndpoints = containers.flatMap(container => container.allowedEndpoints ?? [])\n\n if (allowedEndpoints.length === 0) {\n return undefined\n }\n\n return NetworkPolicy.create(\n name,\n {\n cluster: args.cluster,\n namespace: args.namespace,\n selector: labels,\n\n egressRule: {\n toEndpoints: allowedEndpoints,\n },\n },\n { ...opts, parent: parent() },\n )\n }) as Output<NetworkPolicy | undefined>\n\n return { labels, containers, volumes, podSpec, podTemplate, networkPolicy }\n}\n\nexport function getExposableWorkloadComponents(\n name: string,\n args: ExposableWorkloadArgs,\n parent: () => ComponentResource,\n opts: ComponentResourceOptions | undefined,\n) {\n const { labels, containers, volumes, podSpec, podTemplate, networkPolicy } =\n getWorkloadComponents(name, args, parent, opts)\n\n const service = output({ args, containers }).apply(async ({ args, containers }) => {\n if (!args.service && !args.httpRoute) {\n return undefined\n }\n\n if (args.existing?.service) {\n return Service.of(name, args.existing.service, args.cluster, { ...opts, parent: parent() })\n }\n\n if (args.existing) {\n return undefined\n }\n\n const ports = containers.flatMap(container => normalize(container.port, container.ports))\n\n return Service.create(\n name,\n {\n ...args.service,\n selector: labels,\n cluster: args.cluster,\n namespace: args.namespace,\n\n ports:\n // allow to completely override the ports\n !args.service?.port && !args.service?.ports\n ? ports.map(mapContainerPortToServicePort)\n : args.service?.ports,\n },\n {\n ...opts,\n parent: parent(),\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n const httpRoute = output({\n args,\n service,\n }).apply(async ({ args, service }) => {\n if (!args.httpRoute || !service) {\n return undefined\n }\n\n if (args.existing) {\n return undefined\n }\n\n return new HttpRoute(\n name,\n {\n ...args.httpRoute,\n cluster: args.cluster,\n rule: {\n backend: service,\n },\n },\n {\n ...opts,\n parent: parent(),\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n return { labels, containers, volumes, podSpec, podTemplate, networkPolicy, service, httpRoute }\n}\n\nexport abstract class Workload extends ComponentResource {\n protected constructor(\n type: string,\n protected readonly name: string,\n private readonly args: WorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n protected readonly resourceType: string,\n\n /**\n * The cluster where the workload is created.\n */\n readonly cluster: Output<k8s.Cluster>,\n\n /**\n * The metadata of the underlying Kubernetes workload.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The network policy associated with the workload.\n *\n * Will be created if one or more containers have `allowedEndpoints` defined.\n */\n readonly networkPolicy: Output<NetworkPolicy | undefined>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * The instance terminal to interact with the deployment.\n */\n get terminal(): Output<InstanceTerminal> {\n const containerName = output(this.args).apply(args => {\n const containers = normalize(args.container, args.containers)\n\n return containers[0]?.name ?? this.name\n })\n\n return output({\n name: this.metadata.name,\n title: this.metadata.name,\n image: \"ghcr.io/exeteres/highstate/terminal-kubectl\",\n command: [\n \"exec\",\n \"kubectl\",\n \"exec\",\n \"-it\",\n \"-n\",\n this.metadata.namespace,\n interpolate`${this.resourceType}/${this.metadata.name}`,\n \"-c\",\n containerName,\n \"--\",\n this.args.terminalShell ?? \"bash\",\n ],\n files: {\n \"/kubeconfig\": this.cluster.kubeconfig,\n },\n env: {\n KUBECONFIG: \"/kubeconfig\",\n },\n })\n }\n}\n\nexport abstract class ExposableWorkload extends Workload {\n protected constructor(\n type: string,\n protected readonly name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n resourceType: string,\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n protected readonly _service: Output<Service | undefined>,\n protected readonly _httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(type, name, args, opts, resourceType, cluster, metadata, networkPolicy)\n }\n\n /**\n * The service associated with the workload.\n */\n get optionalService(): Output<Service | undefined> {\n return this._service\n }\n\n /**\n * The HTTP route associated with the workload.\n */\n get optionalHttpRoute(): Output<HttpRoute | undefined> {\n return this._httpRoute\n }\n\n /**\n * The service associated with the workload.\n *\n * Will throw an error if the service is not available.\n */\n get service(): Output<Service> {\n return this._service.apply(service => {\n if (!service) {\n throw new Error(`The service of the workload \"${this.name}\" is not available.`)\n }\n\n return service\n })\n }\n\n /**\n * The HTTP route associated with the workload.\n *\n * Will throw an error if the HTTP route is not available.\n */\n get httpRoute(): Output<HttpRoute> {\n return this._httpRoute.apply(httpRoute => {\n if (!httpRoute) {\n throw new Error(`The HTTP route of the workload \"${this.name}\" is not available.`)\n }\n\n return httpRoute\n })\n }\n\n /**\n * The entity of the workload.\n */\n abstract get entity(): Output<k8s.ExposableWorkload>\n\n /**\n * The sped of the underlying Kubernetes workload.\n */\n abstract get spec(): Output<\n types.output.apps.v1.DeploymentSpec | types.output.apps.v1.StatefulSetSpec\n >\n\n /**\n * Creates a generic workload or patches the existing one.\n */\n static createOrPatchGeneric(\n name: string,\n args: GenericExposableWorkloadArgs,\n opts?: CustomResourceOptions,\n ): Output<ExposableWorkload> {\n return output(args).apply(async args => {\n if (args.existing?.type === \"k8s.deployment\") {\n const { Deployment } = await import(\"./deployment\")\n\n return Deployment.patch(\n name,\n {\n ...deepmerge(args, args.deployment),\n name: args.existing.metadata.name,\n namespace: args.existing.metadata.namespace,\n },\n opts,\n )\n }\n\n if (args.existing?.type === \"k8s.stateful-set\") {\n const { StatefulSet } = await import(\"./stateful-set\")\n\n return StatefulSet.patch(\n name,\n {\n ...deepmerge(args, args.statefulSet),\n name: args.existing.metadata.name,\n namespace: args.existing.metadata.namespace,\n },\n opts,\n )\n }\n\n if (args.type === \"Deployment\") {\n const { Deployment } = await import(\"./deployment\")\n\n return Deployment.create(name, deepmerge(args, args.deployment), opts)\n }\n\n if (args.type === \"StatefulSet\") {\n const { StatefulSet } = await import(\"./stateful-set\")\n\n return StatefulSet.create(name, deepmerge(args, args.statefulSet), opts)\n }\n\n throw new Error(`Unknown workload type: ${args.type as string}`)\n })\n }\n}\n","import type { types } from \"@pulumi/kubernetes\"\n\nexport const podSpecDefaults: Partial<types.input.core.v1.PodSpec> = {\n automountServiceAccountToken: false,\n}\n"],"mappings":"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","names":["args","id","core","ComponentResource","output","ComponentResource","output","args","core","core","ComponentResource","output","ComponentResource","output","args","core","core","output","omit","omit","output","core","normalize","ComponentResource","output","deepmerge","output","args","normalize","containers","volumes","podSpec","service","ComponentResource","deepmerge"]}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import {
|
2
2
|
Deployment
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
3
|
+
} from "./chunk-3B5DTLGG.js";
|
4
|
+
import "./chunk-R43VRICF.js";
|
5
5
|
import "./chunk-OP75IMU7.js";
|
6
6
|
import "./chunk-HTQP2NB4.js";
|
7
7
|
export {
|
8
8
|
Deployment
|
9
9
|
};
|
10
|
-
//# sourceMappingURL=deployment-
|
10
|
+
//# sourceMappingURL=deployment-E3ZTF2IS.js.map
|
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"sourceHashes": {
|
3
|
-
"./dist/index.js": "
|
4
|
-
"./dist/units/access-point/index.js": "
|
5
|
-
"./dist/units/cert-manager/index.js": "
|
6
|
-
"./dist/units/cluster-patch/index.js": "
|
7
|
-
"./dist/units/cluster-dns/index.js": "
|
8
|
-
"./dist/units/dns01-issuer/index.js": "
|
9
|
-
"./dist/units/existing-cluster/index.js": "
|
10
|
-
"./dist/units/gateway-api/index.js": "
|
3
|
+
"./dist/index.js": "5ce1157c1f5b291c0e3629d765ca07b449164e2a4a4abd0fdd33c7d63117e8a9",
|
4
|
+
"./dist/units/access-point/index.js": "052d61dd6962453d9457c4b56b4c36a136a8618f7f8504d7553be3ac2c72dc36",
|
5
|
+
"./dist/units/cert-manager/index.js": "7d1aa88c42455f1f7afb7917e50f591280ade7e2f06c4f78f9e7ccf35a3bbc47",
|
6
|
+
"./dist/units/cluster-patch/index.js": "464b322266b4c560bff7f07d6026f8e33e670ab8ca101220cfe87f41b6ed00f0",
|
7
|
+
"./dist/units/cluster-dns/index.js": "f0ce51e46e84c3032680b472484f8146d89ac86047b5ff8bcc4fee446b0311ce",
|
8
|
+
"./dist/units/dns01-issuer/index.js": "fa256605cc90bb1d831ee0661e08dd2200e2f1106a16b569bbd56fec97589a28",
|
9
|
+
"./dist/units/existing-cluster/index.js": "427bcf9490554135b5c95672a1e477217ce86360512c9e280d0749524bb905ce",
|
10
|
+
"./dist/units/gateway-api/index.js": "0cc0aa17f75169c866ae75afcb35c1cf404cfd6984a5a3183c83068c4cfdc87f"
|
11
11
|
}
|
12
12
|
}
|
package/dist/index.js
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
import {
|
2
2
|
StatefulSet
|
3
|
-
} from "./chunk-
|
3
|
+
} from "./chunk-FF3GFWG3.js";
|
4
4
|
import {
|
5
5
|
Deployment
|
6
|
-
} from "./chunk-
|
6
|
+
} from "./chunk-3B5DTLGG.js";
|
7
7
|
import {
|
8
|
+
ConfigMap,
|
8
9
|
ExposableWorkload,
|
9
10
|
PersistentVolumeClaim,
|
10
11
|
Secret,
|
11
12
|
Workload,
|
12
13
|
getWorkloadComponents
|
13
|
-
} from "./chunk-
|
14
|
+
} from "./chunk-R43VRICF.js";
|
14
15
|
import {
|
15
16
|
Chart,
|
16
17
|
RenderedChart,
|
@@ -164,7 +165,6 @@ function createGateway(args) {
|
|
164
165
|
}
|
165
166
|
|
166
167
|
// src/scripting/bundle.ts
|
167
|
-
import { core } from "@pulumi/kubernetes";
|
168
168
|
import { apply, normalize as normalize2 } from "@highstate/pulumi";
|
169
169
|
import {
|
170
170
|
ComponentResource,
|
@@ -277,10 +277,11 @@ var ScriptBundle = class extends ComponentResource {
|
|
277
277
|
}
|
278
278
|
);
|
279
279
|
this.configMap = output2({ scriptEnvironment, args }).apply(({ scriptEnvironment: scriptEnvironment2, args: args2 }) => {
|
280
|
-
return
|
280
|
+
return ConfigMap.create(
|
281
281
|
name,
|
282
282
|
{
|
283
|
-
|
283
|
+
cluster: args2.cluster,
|
284
|
+
namespace: args2.namespace,
|
284
285
|
data: createScriptData(this.distribution, scriptEnvironment2)
|
285
286
|
},
|
286
287
|
{ ...opts, parent: this }
|
@@ -514,7 +515,14 @@ var Job = class extends ComponentResource2 {
|
|
514
515
|
metadata: mapMetadata(args2, name),
|
515
516
|
spec: mergeDeep(
|
516
517
|
{
|
517
|
-
template:
|
518
|
+
template: mergeDeep(
|
519
|
+
{
|
520
|
+
spec: {
|
521
|
+
restartPolicy: "Never"
|
522
|
+
}
|
523
|
+
},
|
524
|
+
podTemplate2
|
525
|
+
)
|
518
526
|
},
|
519
527
|
omit(args2, jobExtraArgs)
|
520
528
|
)
|
@@ -551,7 +559,14 @@ var CronJob = class extends ComponentResource3 {
|
|
551
559
|
{
|
552
560
|
jobTemplate: {
|
553
561
|
spec: {
|
554
|
-
template:
|
562
|
+
template: mergeDeep2(
|
563
|
+
{
|
564
|
+
spec: {
|
565
|
+
restartPolicy: "Never"
|
566
|
+
}
|
567
|
+
},
|
568
|
+
podTemplate2
|
569
|
+
)
|
555
570
|
}
|
556
571
|
},
|
557
572
|
schedule: args2.schedule
|
@@ -596,6 +611,7 @@ function requireBestEndpoint(endpoints, cluster) {
|
|
596
611
|
}
|
597
612
|
export {
|
598
613
|
Chart,
|
614
|
+
ConfigMap,
|
599
615
|
CronJob,
|
600
616
|
Deployment,
|
601
617
|
ExposableWorkload,
|