@highstate/k8s 0.9.14 → 0.9.16
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-QLQ3QVGT.js → chunk-5C2BJGES.js} +17 -17
- package/dist/chunk-5C2BJGES.js.map +1 -0
- package/dist/{chunk-Y3LZSX7I.js → chunk-5TLC5BXR.js} +33 -31
- package/dist/chunk-5TLC5BXR.js.map +1 -0
- package/dist/chunk-BBIY3KUN.js +1557 -0
- package/dist/chunk-BBIY3KUN.js.map +1 -0
- package/dist/{chunk-5S4JPM4M.js → chunk-OFFSHGC6.js} +43 -32
- package/dist/chunk-OFFSHGC6.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/{chunk-VL7Z5FJQ.js → chunk-TZHOUJRC.js} +29 -20
- package/dist/chunk-TZHOUJRC.js.map +1 -0
- package/dist/{chunk-6L67WIZW.js → chunk-YWRJ4EZM.js} +29 -20
- package/dist/chunk-YWRJ4EZM.js.map +1 -0
- package/dist/deployment-XK3CDJOE.js +6 -0
- package/dist/deployment-XK3CDJOE.js.map +1 -0
- package/dist/highstate.manifest.json +8 -8
- package/dist/index.js +39 -138
- package/dist/index.js.map +1 -1
- package/dist/stateful-set-7CAQWTV2.js +6 -0
- package/dist/stateful-set-7CAQWTV2.js.map +1 -0
- package/dist/units/access-point/index.js +7 -6
- package/dist/units/access-point/index.js.map +1 -1
- package/dist/units/cert-manager/index.js +11 -14
- package/dist/units/cert-manager/index.js.map +1 -1
- package/dist/units/cluster-dns/index.js +9 -8
- package/dist/units/cluster-dns/index.js.map +1 -1
- package/dist/units/cluster-patch/index.js +9 -8
- package/dist/units/cluster-patch/index.js.map +1 -1
- package/dist/units/dns01-issuer/index.js +9 -14
- package/dist/units/dns01-issuer/index.js.map +1 -1
- package/dist/units/existing-cluster/index.js +12 -19
- package/dist/units/existing-cluster/index.js.map +1 -1
- package/dist/units/gateway-api/index.js +8 -10
- package/dist/units/gateway-api/index.js.map +1 -1
- package/package.json +19 -10
- package/src/cluster.ts +14 -9
- package/src/deployment.ts +34 -0
- package/src/helm.ts +38 -2
- package/src/network-policy.ts +2 -5
- package/src/shared.ts +17 -0
- package/src/stateful-set.ts +34 -0
- package/src/units/cluster-dns/index.ts +1 -1
- package/src/units/cluster-patch/index.ts +1 -1
- package/src/units/existing-cluster/index.ts +1 -1
- package/src/workload.ts +22 -3
- package/dist/chunk-5S4JPM4M.js.map +0 -1
- package/dist/chunk-6L67WIZW.js.map +0 -1
- package/dist/chunk-QLQ3QVGT.js.map +0 -1
- package/dist/chunk-SARVLQZY.js +0 -876
- package/dist/chunk-SARVLQZY.js.map +0 -1
- package/dist/chunk-VL7Z5FJQ.js.map +0 -1
- package/dist/chunk-WEKIQRCZ.js +0 -792
- package/dist/chunk-WEKIQRCZ.js.map +0 -1
- package/dist/chunk-Y3LZSX7I.js.map +0 -1
- package/dist/deployment-QTPBNKO5.js +0 -10
- package/dist/deployment-QTPBNKO5.js.map +0 -1
- package/dist/stateful-set-K4GV7ZTK.js +0 -10
- package/dist/stateful-set-K4GV7ZTK.js.map +0 -1
- package/src/custom.ts +0 -104
@@ -1,20 +1,10 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
} from
|
6
|
-
import {
|
7
|
-
getProvider,
|
8
|
-
mapMetadata,
|
9
|
-
resourceIdToString,
|
10
|
-
withPatchName
|
11
|
-
} from "./chunk-Y3LZSX7I.js";
|
1
|
+
import { ExposableWorkload, getExposableWorkloadComponents, exposableWorkloadExtraArgs } from './chunk-BBIY3KUN.js';
|
2
|
+
import { withPatchName, mapMetadata, getProvider, resourceIdToString } from './chunk-5TLC5BXR.js';
|
3
|
+
import { output } from '@highstate/pulumi';
|
4
|
+
import { apps } from '@pulumi/kubernetes';
|
5
|
+
import { omit } from 'remeda';
|
6
|
+
import { deepmerge } from 'deepmerge-ts';
|
12
7
|
|
13
|
-
// src/deployment.ts
|
14
|
-
import { output } from "@highstate/pulumi";
|
15
|
-
import { apps } from "@pulumi/kubernetes";
|
16
|
-
import { omit } from "remeda";
|
17
|
-
import { deepmerge } from "deepmerge-ts";
|
18
8
|
var Deployment = class extends ExposableWorkload {
|
19
9
|
constructor(type, name, args, opts, cluster, metadata, spec, status, networkPolicy, service, httpRoute) {
|
20
10
|
super(
|
@@ -69,6 +59,9 @@ var Deployment = class extends ExposableWorkload {
|
|
69
59
|
}
|
70
60
|
return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts);
|
71
61
|
}
|
62
|
+
static wrap(name, deployment, cluster, opts) {
|
63
|
+
return new WrappedDeployment(name, deployment, cluster, opts);
|
64
|
+
}
|
72
65
|
};
|
73
66
|
var CreatedDeployment = class extends Deployment {
|
74
67
|
constructor(name, args, opts) {
|
@@ -176,8 +169,24 @@ var ExternalDeployment = class extends Deployment {
|
|
176
169
|
);
|
177
170
|
}
|
178
171
|
};
|
179
|
-
|
180
|
-
|
181
|
-
|
172
|
+
var WrappedDeployment = class extends Deployment {
|
173
|
+
constructor(name, deployment, cluster, opts) {
|
174
|
+
super(
|
175
|
+
"highstate:k8s:WrappedDeployment",
|
176
|
+
name,
|
177
|
+
{ namespace: output(deployment).metadata.namespace, cluster },
|
178
|
+
opts,
|
179
|
+
output(cluster),
|
180
|
+
output(deployment).metadata,
|
181
|
+
output(deployment).spec,
|
182
|
+
output(deployment).status,
|
183
|
+
output(void 0),
|
184
|
+
output(void 0),
|
185
|
+
output(void 0)
|
186
|
+
);
|
187
|
+
}
|
182
188
|
};
|
183
|
-
|
189
|
+
|
190
|
+
export { Deployment };
|
191
|
+
//# sourceMappingURL=chunk-YWRJ4EZM.js.map
|
192
|
+
//# sourceMappingURL=chunk-YWRJ4EZM.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/deployment.ts"],"names":["args","podTemplate","podSpec","id"],"mappings":"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","file":"chunk-YWRJ4EZM.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type DeploymentArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.DeploymentSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetDeploymentArgs = DeploymentArgs & {\n /**\n * The entity to use to determine the deployment to patch.\n */\n existing: Input<k8s.Deployment> | undefined\n}\n\nexport abstract class Deployment extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes deployment.\n */\n readonly spec: Output<types.output.apps.v1.DeploymentSpec>,\n\n /**\n * The status of the underlying Kubernetes deployment.\n */\n readonly status: Output<types.output.apps.v1.DeploymentStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"deployment\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate deployment entity.\n */\n get entity(): Output<k8s.Deployment> {\n return output({\n type: \"k8s.deployment\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this._service.apply(service => service?.entity),\n })\n }\n\n static create(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new CreatedDeployment(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new DeploymentPatch(\n name,\n {\n ...args,\n name: withPatchName(\"deployment\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new DeploymentPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts)\n }\n\n static wrap(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): Deployment {\n return new WrappedDeployment(name, deployment, cluster, opts)\n }\n}\n\nclass CreatedDeployment extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.Deployment(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Deployment\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass DeploymentPatch extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const deployment = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.DeploymentPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:DeploymentPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalDeployment extends Deployment {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const deployment = output(id).apply(async id => {\n return apps.v1.Deployment.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalDeployment\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n\nclass WrappedDeployment extends Deployment {\n constructor(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n super(\n \"highstate:k8s:WrappedDeployment\",\n name,\n { namespace: output(deployment).metadata.namespace, cluster },\n opts,\n\n output(cluster),\n output(deployment).metadata,\n output(deployment).spec,\n output(deployment).status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"deployment-XK3CDJOE.js"}
|
@@ -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": 2212294583,
|
4
|
+
"./dist/units/access-point/index.js": 1696538936,
|
5
|
+
"./dist/units/cert-manager/index.js": 62214576,
|
6
|
+
"./dist/units/cluster-patch/index.js": 1914629924,
|
7
|
+
"./dist/units/cluster-dns/index.js": 611344514,
|
8
|
+
"./dist/units/dns01-issuer/index.js": 3407863981,
|
9
|
+
"./dist/units/existing-cluster/index.js": 3899275346,
|
10
|
+
"./dist/units/gateway-api/index.js": 3233535669
|
11
11
|
}
|
12
12
|
}
|
package/dist/index.js
CHANGED
@@ -1,59 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
} from
|
4
|
-
import {
|
5
|
-
|
6
|
-
} from
|
7
|
-
import {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
} from
|
15
|
-
import {
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
resolveHelmChart
|
21
|
-
} from "./chunk-5S4JPM4M.js";
|
22
|
-
import {
|
23
|
-
HttpRoute,
|
24
|
-
NetworkPolicy,
|
25
|
-
Service,
|
26
|
-
getBestEndpoint,
|
27
|
-
getServiceMetadata,
|
28
|
-
hasServiceMetadata,
|
29
|
-
isFromCluster,
|
30
|
-
mapContainerPortToServicePort,
|
31
|
-
mapServiceToLabelSelector,
|
32
|
-
requireBestEndpoint,
|
33
|
-
withServiceMetadata
|
34
|
-
} from "./chunk-WEKIQRCZ.js";
|
35
|
-
import {
|
36
|
-
createK8sTerminal,
|
37
|
-
detectExternalIps
|
38
|
-
} from "./chunk-QLQ3QVGT.js";
|
39
|
-
import {
|
40
|
-
Namespace,
|
41
|
-
commonExtraArgs,
|
42
|
-
getProvider,
|
43
|
-
mapMetadata,
|
44
|
-
mapNamespaceLikeToNamespaceName,
|
45
|
-
mapNamespaceNameToSelector,
|
46
|
-
mapSelectorLikeToSelector
|
47
|
-
} from "./chunk-Y3LZSX7I.js";
|
1
|
+
export { Chart, RenderedChart, getChartService, getChartServiceOutput, resolveHelmChart } from './chunk-OFFSHGC6.js';
|
2
|
+
export { StatefulSet } from './chunk-TZHOUJRC.js';
|
3
|
+
export { Deployment } from './chunk-YWRJ4EZM.js';
|
4
|
+
import { NetworkPolicy, isFromCluster, ConfigMap, getWorkloadComponents } from './chunk-BBIY3KUN.js';
|
5
|
+
export { ConfigMap, ExposableWorkload, HttpRoute, NetworkPolicy, PersistentVolumeClaim, Secret, Service, Workload, getBestEndpoint, getServiceMetadata, hasServiceMetadata, isFromCluster, mapContainerPortToServicePort, mapServiceToLabelSelector, requireBestEndpoint, withServiceMetadata } from './chunk-BBIY3KUN.js';
|
6
|
+
export { createK8sTerminal, detectExternalIps } from './chunk-5C2BJGES.js';
|
7
|
+
import { commonExtraArgs, getProvider, mapNamespaceLikeToNamespaceName, mapMetadata } from './chunk-5TLC5BXR.js';
|
8
|
+
export { Namespace, getProvider, mapMetadata, mapNamespaceLikeToNamespaceName, mapNamespaceNameToSelector, mapSelectorLikeToSelector } from './chunk-5TLC5BXR.js';
|
9
|
+
import './chunk-PZ5AY32C.js';
|
10
|
+
import { DnsRecordSet, filterEndpoints, l3EndpointToString, parseL34Endpoint } from '@highstate/common';
|
11
|
+
import { gateway } from '@highstate/gateway-api';
|
12
|
+
import { output, normalize, toPromise, apply, ComponentResource as ComponentResource$1 } from '@highstate/pulumi';
|
13
|
+
import { ComponentResource, output as output$1 } from '@pulumi/pulumi';
|
14
|
+
import { pipe, omitBy, mapValues, merge, mergeDeep, omit } from 'remeda';
|
15
|
+
import { deepmerge } from 'deepmerge-ts';
|
16
|
+
import { readPackageJSON } from 'pkg-types';
|
17
|
+
import { text, trimIndentation } from '@highstate/contract';
|
18
|
+
import { serializeFunction } from '@pulumi/pulumi/runtime/index.js';
|
19
|
+
import { batch } from '@pulumi/kubernetes';
|
48
20
|
|
49
|
-
// src/access-point.ts
|
50
|
-
import { DnsRecordSet, filterEndpoints, l3EndpointToString } from "@highstate/common";
|
51
|
-
import { gateway } from "@highstate/gateway-api";
|
52
|
-
import {
|
53
|
-
normalize,
|
54
|
-
output,
|
55
|
-
toPromise
|
56
|
-
} from "@highstate/pulumi";
|
57
21
|
function useAccessPoint(args) {
|
58
22
|
const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(
|
59
23
|
({ args: args2, namespaceName }) => {
|
@@ -164,19 +128,6 @@ function createGateway(args) {
|
|
164
128
|
});
|
165
129
|
}
|
166
130
|
|
167
|
-
// src/scripting/bundle.ts
|
168
|
-
import { apply, normalize as normalize2 } from "@highstate/pulumi";
|
169
|
-
import {
|
170
|
-
ComponentResource,
|
171
|
-
output as output2
|
172
|
-
} from "@pulumi/pulumi";
|
173
|
-
import { mapValues, omitBy, pipe } from "remeda";
|
174
|
-
import { deepmerge } from "deepmerge-ts";
|
175
|
-
import { readPackageJSON } from "pkg-types";
|
176
|
-
import { text, trimIndentation } from "@highstate/contract";
|
177
|
-
import { parseL34Endpoint } from "@highstate/common";
|
178
|
-
import { serializeFunction } from "@pulumi/pulumi/runtime/index.js";
|
179
|
-
|
180
131
|
// src/scripting/environment.ts
|
181
132
|
var emptyDistributionEnvironment = {
|
182
133
|
preInstallPackages: [],
|
@@ -250,8 +201,8 @@ var ScriptBundle = class extends ComponentResource {
|
|
250
201
|
constructor(name, args, opts) {
|
251
202
|
super("highstate:k8s:ScriptBundle", name, args, opts);
|
252
203
|
const scriptEnvironment = pipe(
|
253
|
-
|
254
|
-
apply((args2) =>
|
204
|
+
output$1(args),
|
205
|
+
apply((args2) => normalize(args2.environment, args2.environments)),
|
255
206
|
apply((args2) => deepmerge(emptyScriptEnvironment, ...args2))
|
256
207
|
);
|
257
208
|
const hasFunctionScripts = scriptEnvironment.apply((scriptEnvironment2) => {
|
@@ -260,11 +211,11 @@ var ScriptBundle = class extends ComponentResource {
|
|
260
211
|
this.distribution = args.distribution;
|
261
212
|
this.environment = scriptEnvironment.environment;
|
262
213
|
this.image = hasFunctionScripts.apply(
|
263
|
-
(hasFunctionScripts2) =>
|
214
|
+
(hasFunctionScripts2) => output$1(
|
264
215
|
hasFunctionScripts2 ? functionScriptImages[args.distribution] : scriptEnvironment[args.distribution].image
|
265
216
|
)
|
266
217
|
);
|
267
|
-
this.allowedEndpoints =
|
218
|
+
this.allowedEndpoints = output$1({ scriptEnvironment, hasFunctionScripts }).apply(
|
268
219
|
({ scriptEnvironment: scriptEnvironment2, hasFunctionScripts: hasFunctionScripts2 }) => {
|
269
220
|
const allowedEndpoints = [
|
270
221
|
...scriptEnvironment2.allowedEndpoints,
|
@@ -276,7 +227,7 @@ var ScriptBundle = class extends ComponentResource {
|
|
276
227
|
return allowedEndpoints.map(parseL34Endpoint);
|
277
228
|
}
|
278
229
|
);
|
279
|
-
this.configMap =
|
230
|
+
this.configMap = output$1({ scriptEnvironment, args }).apply(({ scriptEnvironment: scriptEnvironment2, args: args2 }) => {
|
280
231
|
return ConfigMap.create(
|
281
232
|
name,
|
282
233
|
{
|
@@ -287,7 +238,7 @@ var ScriptBundle = class extends ComponentResource {
|
|
287
238
|
{ ...opts, parent: this }
|
288
239
|
);
|
289
240
|
});
|
290
|
-
this.volumes =
|
241
|
+
this.volumes = output$1({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(
|
291
242
|
({ hasFunctionScripts: hasFunctionScripts2, volumes }) => {
|
292
243
|
return [
|
293
244
|
...volumes,
|
@@ -303,7 +254,7 @@ var ScriptBundle = class extends ComponentResource {
|
|
303
254
|
];
|
304
255
|
}
|
305
256
|
);
|
306
|
-
this.volumeMounts =
|
257
|
+
this.volumeMounts = output$1({
|
307
258
|
hasFunctionScripts,
|
308
259
|
volumeMounts: scriptEnvironment.volumeMounts
|
309
260
|
}).apply(({ hasFunctionScripts: hasFunctionScripts2, volumeMounts }) => {
|
@@ -469,13 +420,9 @@ function getInstallPackagesScript(distribution, packages) {
|
|
469
420
|
`;
|
470
421
|
}
|
471
422
|
}
|
472
|
-
|
473
|
-
// src/scripting/container.ts
|
474
|
-
import { merge } from "remeda";
|
475
|
-
import { output as output3 } from "@pulumi/pulumi";
|
476
423
|
function createScriptContainer(options) {
|
477
|
-
const bundle =
|
478
|
-
return
|
424
|
+
const bundle = output$1(options.bundle);
|
425
|
+
return output$1({
|
479
426
|
options,
|
480
427
|
image: bundle.image,
|
481
428
|
volumeMounts: bundle.volumeMounts,
|
@@ -494,13 +441,8 @@ function createScriptContainer(options) {
|
|
494
441
|
};
|
495
442
|
});
|
496
443
|
}
|
497
|
-
|
498
|
-
// src/job.ts
|
499
|
-
import { batch } from "@pulumi/kubernetes";
|
500
|
-
import { ComponentResource as ComponentResource2, output as output4 } from "@highstate/pulumi";
|
501
|
-
import { mergeDeep, omit } from "remeda";
|
502
444
|
var jobExtraArgs = [...commonExtraArgs, "container", "containers"];
|
503
|
-
var Job = class extends
|
445
|
+
var Job = class extends ComponentResource$1 {
|
504
446
|
/**
|
505
447
|
* The underlying Kubernetes job.
|
506
448
|
*/
|
@@ -508,7 +450,7 @@ var Job = class extends ComponentResource2 {
|
|
508
450
|
constructor(name, args, opts) {
|
509
451
|
super("highstate:k8s:Job", name, args, opts);
|
510
452
|
const { podTemplate } = getWorkloadComponents(name, args, () => this, opts);
|
511
|
-
this.job =
|
453
|
+
this.job = output({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
|
512
454
|
return new batch.v1.Job(
|
513
455
|
name,
|
514
456
|
{
|
@@ -536,13 +478,8 @@ var Job = class extends ComponentResource2 {
|
|
536
478
|
});
|
537
479
|
}
|
538
480
|
};
|
539
|
-
|
540
|
-
// src/cron-job.ts
|
541
|
-
import { batch as batch2 } from "@pulumi/kubernetes";
|
542
|
-
import { ComponentResource as ComponentResource3, output as output5 } from "@highstate/pulumi";
|
543
|
-
import { mergeDeep as mergeDeep2, omit as omit2 } from "remeda";
|
544
481
|
var cronJobExtraArgs = [...commonExtraArgs, "container", "containers"];
|
545
|
-
var CronJob = class extends
|
482
|
+
var CronJob = class extends ComponentResource$1 {
|
546
483
|
/**
|
547
484
|
* The underlying Kubernetes job.
|
548
485
|
*/
|
@@ -550,16 +487,16 @@ var CronJob = class extends ComponentResource3 {
|
|
550
487
|
constructor(name, args, opts) {
|
551
488
|
super("highstate:k8s:CronJob", name, args, opts);
|
552
489
|
const { podTemplate } = getWorkloadComponents(name, args, () => this, opts);
|
553
|
-
this.cronJob =
|
554
|
-
return new
|
490
|
+
this.cronJob = output({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
|
491
|
+
return new batch.v1.CronJob(
|
555
492
|
name,
|
556
493
|
{
|
557
494
|
metadata: mapMetadata(args2, name),
|
558
|
-
spec:
|
495
|
+
spec: mergeDeep(
|
559
496
|
{
|
560
497
|
jobTemplate: {
|
561
498
|
spec: {
|
562
|
-
template:
|
499
|
+
template: mergeDeep(
|
563
500
|
{
|
564
501
|
spec: {
|
565
502
|
restartPolicy: "Never"
|
@@ -571,7 +508,7 @@ var CronJob = class extends ComponentResource3 {
|
|
571
508
|
},
|
572
509
|
schedule: args2.schedule
|
573
510
|
},
|
574
|
-
|
511
|
+
omit(args2, cronJobExtraArgs)
|
575
512
|
)
|
576
513
|
},
|
577
514
|
{
|
@@ -583,43 +520,7 @@ var CronJob = class extends ComponentResource3 {
|
|
583
520
|
});
|
584
521
|
}
|
585
522
|
};
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
CronJob,
|
590
|
-
Deployment,
|
591
|
-
ExposableWorkload,
|
592
|
-
HttpRoute,
|
593
|
-
Job,
|
594
|
-
Namespace,
|
595
|
-
NetworkPolicy,
|
596
|
-
PersistentVolumeClaim,
|
597
|
-
RenderedChart,
|
598
|
-
ScriptBundle,
|
599
|
-
Secret,
|
600
|
-
Service,
|
601
|
-
StatefulSet,
|
602
|
-
Workload,
|
603
|
-
createK8sTerminal,
|
604
|
-
createScriptContainer,
|
605
|
-
detectExternalIps,
|
606
|
-
getBestEndpoint,
|
607
|
-
getChartService,
|
608
|
-
getChartServiceOutput,
|
609
|
-
getProvider,
|
610
|
-
getServiceMetadata,
|
611
|
-
hasServiceMetadata,
|
612
|
-
isFromCluster,
|
613
|
-
mapContainerPortToServicePort,
|
614
|
-
mapMetadata,
|
615
|
-
mapNamespaceLikeToNamespaceName,
|
616
|
-
mapNamespaceNameToSelector,
|
617
|
-
mapSelectorLikeToSelector,
|
618
|
-
mapServiceToLabelSelector,
|
619
|
-
requireBestEndpoint,
|
620
|
-
resolveHelmChart,
|
621
|
-
useAccessPoint,
|
622
|
-
useStandardAcessPoint,
|
623
|
-
withServiceMetadata
|
624
|
-
};
|
523
|
+
|
524
|
+
export { CronJob, Job, ScriptBundle, createScriptContainer, useAccessPoint, useStandardAcessPoint };
|
525
|
+
//# sourceMappingURL=index.js.map
|
625
526
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/access-point.ts","../src/scripting/bundle.ts","../src/scripting/environment.ts","../src/scripting/container.ts","../src/job.ts","../src/cron-job.ts"],"sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Provider } from \"@pulumi/kubernetes\"\nimport type { Namespace } from \"./namespace\"\nimport { DnsRecordSet, filterEndpoints, l3EndpointToString } from \"@highstate/common\"\nimport { gateway } from \"@highstate/gateway-api\"\nimport {\n normalize,\n Output,\n output,\n toPromise,\n type Input,\n type InputArray,\n} from \"@highstate/pulumi\"\nimport { NetworkPolicy } from \"./network-policy\"\nimport { getProvider, mapNamespaceLikeToNamespaceName } from \"./shared\"\nimport { isFromCluster } from \"./service\"\n\nexport type UseAccessPointResult = {\n /**\n * The gateway instance created according to the access point.\n */\n gateway: gateway.v1.Gateway\n\n /**\n * The DNS record sets associated created according to the access point and gateway.\n */\n dnsRecordSets: DnsRecordSet[]\n\n /**\n * The network policies associated with the access point.\n */\n networkPolicies: NetworkPolicy[]\n}\n\nexport type UseAccessPointArgs = Omit<CreateGatewayArgs, \"gateway\"> & {\n accessPoint: Input<k8s.AccessPoint>\n}\n\nexport function useAccessPoint(args: UseAccessPointArgs): Promise<UseAccessPointResult> {\n const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(\n ({ args, namespaceName }) => {\n if (args.accessPoint.clusterId !== args.cluster.id) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the access point is deployed.\",\n )\n }\n\n const gateway = createGateway({\n ...args,\n annotations: {\n \"cert-manager.io/cluster-issuer\": args.accessPoint.tlsIssuer.clusterIssuerName,\n },\n gateway: args.accessPoint.gateway,\n })\n\n const dnsRecordSets = normalize(args.fqdn, args.fqdns).flatMap(fqdn => {\n return DnsRecordSet.create(fqdn, {\n providers: args.accessPoint.dnsProviders,\n values: filterEndpoints(\n args.accessPoint.gateway.endpoints.filter(endpoint => endpoint.type !== \"hostname\"),\n ),\n })\n })\n\n const networkPolicies: Output<NetworkPolicy>[] = [\n NetworkPolicy.create(\n `allow-ingress-from-${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}`,\n {\n namespace: args.namespace,\n cluster: args.cluster,\n\n description: `Allow ingress traffic from the gateway at \"${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}\".`,\n\n ingressRule: {\n fromEndpoints: args.accessPoint.gateway.endpoints,\n },\n },\n { provider: args.provider },\n ),\n ]\n\n if (isFromCluster(args.accessPoint.gateway.endpoints[0], args.cluster)) {\n networkPolicies.push(\n NetworkPolicy.create(\n `allow-egress-to-${namespaceName}`,\n {\n namespace: args.accessPoint.gateway.endpoints[0].metadata.k8sService.namespace,\n cluster: args.cluster,\n\n selector: args.accessPoint.gateway.endpoints[0].metadata.k8sService.selector,\n\n description: `Allow egress traffic to the namespace \"${namespaceName}\".`,\n\n egressRule: {\n toNamespace: args.namespace,\n },\n },\n { provider: args.provider },\n ),\n )\n }\n\n return output({\n gateway,\n dnsRecordSets,\n networkPolicies,\n })\n },\n )\n\n return toPromise(result)\n}\n\nexport type StandardAccessPointArgs = {\n appName: string\n fqdn: string\n}\n\nexport type StandardAccessPointInputs = {\n accessPoint: Output<k8s.AccessPoint>\n k8sCluster: Output<k8s.Cluster>\n}\n\nexport async function useStandardAcessPoint(\n namespace: Namespace,\n args: StandardAccessPointArgs,\n inputs: StandardAccessPointInputs,\n): Promise<UseAccessPointResult> {\n return await useAccessPoint({\n name: args.appName,\n namespace,\n\n fqdn: args.fqdn,\n\n accessPoint: inputs.accessPoint,\n cluster: inputs.k8sCluster,\n provider: await getProvider(inputs.k8sCluster),\n })\n}\n\nexport type CreateGatewayArgs = {\n name: string\n namespace: Input<Namespace>\n annotations?: Input<Record<string, string>>\n\n fqdn?: Input<string>\n fqdns?: InputArray<string>\n\n gateway: Input<k8s.Gateway>\n cluster: Input<k8s.Cluster>\n provider: Provider\n}\n\nexport function createGateway(args: CreateGatewayArgs): Output<gateway.v1.Gateway> {\n return output(args).apply(args => {\n if (args.cluster.id !== args.gateway.clusterId) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the gateway controller is deployed.\",\n )\n }\n\n return new gateway.v1.Gateway(\n args.name,\n {\n metadata: {\n name: args.name,\n namespace: mapNamespaceLikeToNamespaceName(args.namespace),\n annotations: args.annotations,\n },\n spec: {\n gatewayClassName: output(args.gateway).gatewayClassName,\n listeners: normalize(args.fqdn, args.fqdns).map(fqdn => {\n const normalizedName = fqdn.replace(/\\*/g, \"wildcard\")\n\n return {\n name: `https-${normalizedName}`,\n port: output(args.gateway).httpsListenerPort,\n protocol: \"HTTPS\",\n hostname: fqdn,\n tls: {\n mode: \"Terminate\",\n certificateRefs: [{ name: normalizedName }],\n },\n }\n }),\n },\n },\n { provider: args.provider, deletedWith: args.namespace },\n )\n })\n}\n","import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { network } from \"@highstate/library\"\nimport { apply, normalize, type InputArray } from \"@highstate/pulumi\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n type Unwrap,\n} from \"@pulumi/pulumi\"\nimport { mapValues, omitBy, pipe } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { readPackageJSON } from \"pkg-types\"\nimport { text, trimIndentation } from \"@highstate/contract\"\nimport { parseL34Endpoint } from \"@highstate/common\"\nimport { serializeFunction } from \"@pulumi/pulumi/runtime/index.js\"\nimport { type CommonArgs } from \"../shared\"\nimport { ConfigMap } from \"../config-map\"\nimport {\n emptyScriptEnvironment,\n functionScriptImages,\n type ResolvedScriptEnvironment,\n type ScriptDistribution,\n type ScriptEnvironment,\n} from \"./environment\"\n\nexport type ScriptBundleArgs = CommonArgs & {\n /**\n * The environment to bundle the scripts from.\n */\n environment?: Input<ScriptEnvironment>\n\n /**\n * The environments to bundle the scripts from.\n */\n environments?: InputArray<ScriptEnvironment>\n\n /**\n * The distribution to use for the scripts.\n */\n distribution: ScriptDistribution\n}\n\nexport class ScriptBundle extends ComponentResource {\n /**\n * The config map containing the scripts.\n */\n readonly configMap: Output<ConfigMap>\n\n /**\n * The volumes that should be included in the workload.\n */\n readonly volumes: Output<WorkloadVolume[]>\n\n /**\n * The volume mounts that should be defined in the container.\n */\n readonly volumeMounts: Output<ContainerVolumeMount[]>\n\n /**\n * The environment variables that should be defined in the container.\n */\n readonly environment: Output<ContainerEnvironment>\n\n /**\n * The image to use for the scripts.\n */\n readonly image: Output<string>\n\n /**\n * The distribution to use for the scripts.\n */\n readonly distribution: ScriptDistribution\n\n /**\n * The list of endpoints that the script is allowed to access.\n */\n readonly allowedEndpoints: Output<network.L34Endpoint[]>\n\n constructor(name: string, args: ScriptBundleArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:ScriptBundle\", name, args, opts)\n\n const scriptEnvironment = pipe(\n output(args),\n apply(args => normalize(args.environment, args.environments)),\n apply(args => deepmerge(emptyScriptEnvironment, ...args)),\n ) as Output<Unwrap<ResolvedScriptEnvironment>>\n\n const hasFunctionScripts = scriptEnvironment.apply(scriptEnvironment => {\n return Object.values(scriptEnvironment.files).some(file => typeof file === \"function\")\n })\n\n this.distribution = args.distribution\n this.environment = scriptEnvironment.environment\n\n this.image = hasFunctionScripts.apply(hasFunctionScripts =>\n output(\n hasFunctionScripts\n ? functionScriptImages[args.distribution]\n : scriptEnvironment[args.distribution].image,\n ),\n )\n\n this.allowedEndpoints = output({ scriptEnvironment, hasFunctionScripts }).apply(\n ({ scriptEnvironment, hasFunctionScripts }) => {\n const allowedEndpoints = [\n ...scriptEnvironment.allowedEndpoints,\n ...scriptEnvironment[args.distribution].allowedEndpoints,\n ]\n\n if (hasFunctionScripts) {\n allowedEndpoints.push(\"tcp://registry.npmjs.org:443\")\n }\n\n return allowedEndpoints.map(parseL34Endpoint)\n },\n )\n\n this.configMap = output({ scriptEnvironment, args }).apply(({ scriptEnvironment, args }) => {\n return ConfigMap.create(\n name,\n {\n cluster: args.cluster,\n namespace: args.namespace,\n\n data: createScriptData(this.distribution, scriptEnvironment),\n },\n { ...opts, parent: this },\n )\n })\n\n this.volumes = output({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(\n ({ hasFunctionScripts, volumes }) => {\n return [\n ...volumes,\n {\n name: this.configMap.metadata.name,\n\n configMap: {\n name: this.configMap.metadata.name,\n defaultMode: 0o550, // read and execute permissions\n },\n },\n ...(hasFunctionScripts ? [{ name: \"node-modules\", emptyDir: {} }] : []),\n ]\n },\n )\n\n this.volumeMounts = output({\n hasFunctionScripts,\n volumeMounts: scriptEnvironment.volumeMounts,\n }).apply(({ hasFunctionScripts, volumeMounts }) => {\n return [\n ...volumeMounts,\n {\n volume: this.configMap,\n mountPath: \"/scripts\",\n },\n ...(hasFunctionScripts\n ? [{ name: \"node-modules\", mountPath: \"/scripts/node_modules\" }]\n : []),\n ]\n })\n\n this.registerOutputs({\n configMap: this.configMap,\n volumes: this.volumes,\n volumeMounts: this.volumeMounts,\n environment: this.environment,\n distribution: this.distribution,\n allowedEndpoints: this.allowedEndpoints,\n image: this.image,\n })\n }\n}\n\nfunction stripWorkspacePrefix(value: string): string {\n if (value.startsWith(\"workspace:\")) {\n return value.replace(\"workspace:\", \"\")\n }\n\n return value\n}\n\nasync function createScriptData(\n distribution: ScriptDistribution,\n environment: Unwrap<ResolvedScriptEnvironment>,\n): Promise<Record<string, string>> {\n const scriptData: Record<string, string> = {}\n const actions: string[] = []\n\n const distributionEnvironment = environment[distribution]\n const setupScripts = { ...environment.setupScripts }\n\n let hasFunctionScripts = false\n\n for (const key in environment.files) {\n if (typeof environment.files[key] === \"function\") {\n const serialized = await serializeFunction(environment.files[key])\n\n scriptData[key] = text`\n #!/usr/local/bin/bun\n \n ${serialized.text}\n\n exports.${serialized.exportName}()\n `\n\n hasFunctionScripts = true\n } else {\n scriptData[key] = environment.files[key]\n }\n }\n\n if (hasFunctionScripts) {\n const packageJson = await readPackageJSON()\n\n packageJson.dependencies = omitBy(\n mapValues(packageJson.dependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n packageJson.devDependencies = omitBy(\n mapValues(packageJson.devDependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n scriptData[\"package.json\"] = JSON.stringify(packageJson, null, 2)\n\n setupScripts[\"resolve-dependencies.sh\"] = text`\n #!/usr/local/bin/bun\n set -e\n\n cd /scripts\n bun install --production\n `\n }\n\n if (distributionEnvironment.preInstallPackages.length > 0) {\n scriptData[\"pre-install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.preInstallPackages,\n )\n\n actions.push(`\n echo \"+ Installing pre-install packages...\"\n /scripts/pre-install-packages.sh\n echo \"+ Pre-install packages installed successfully\"\n `)\n }\n\n if (Object.keys(distributionEnvironment.preInstallScripts).length > 0) {\n for (const key in distributionEnvironment.preInstallScripts) {\n scriptData[`pre-install-${key}`] = distributionEnvironment.preInstallScripts[key]\n\n actions.push(`\n echo \"+ Running pre-install script '${key}'...\"\n /scripts/pre-install-${key}\n echo \"+ Pre-install script '${key}'... Done\"\n `)\n }\n }\n\n if (distributionEnvironment.packages.length > 0) {\n scriptData[\"install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.packages,\n )\n\n actions.push(`\n echo \"+ Installing packages...\"\n /scripts/install-packages.sh\n echo \"+ Packages installed successfully\"\n `)\n }\n\n if (Object.keys(setupScripts).length > 0) {\n for (const key in setupScripts) {\n scriptData[`setup-${key}`] = setupScripts[key]\n\n actions.push(`\n echo \"+ Running setup script '${key}'...\"\n /scripts/setup-${key}\n echo \"+ Setup script '${key}'... Done\"\n `)\n }\n }\n\n if (Object.keys(environment.cleanupScripts).length > 0) {\n const cleanupActions: string[] = []\n\n for (const key in environment.cleanupScripts) {\n scriptData[`cleanup-${key}`] = environment.cleanupScripts[key]\n\n cleanupActions.push(`\n echo \"+ Running cleanup script '${key}'...\"\n /scripts/cleanup-${key}\n echo \"+ Cleanup script '${key}'... Done\"\n `)\n }\n\n actions.push(`\n function cleanup() {\n ${cleanupActions.map(s => s.trim()).join(\"\\n\\n\")}\n }\n\n trap cleanup EXIT\n trap cleanup SIGTERM\n `)\n }\n\n scriptData[\"entrypoint.sh\"] = trimIndentation(`\n #!/bin/sh\n set -e\n\n if [ -z \"$1\" ]; then\n echo \"Usage: entrypoint.sh <main script> [args...]\"\n exit 1\n fi\n\n ${actions.map(s => s.trim()).join(\"\\n\\n\")}\n\n echo \"+ Running main script...\"\n $@\n echo \"+ Main script completed\"\n `)\n\n return scriptData\n}\n\nfunction getInstallPackagesScript(distribution: ScriptDistribution, packages: string[]): string {\n if (distribution === \"alpine\") {\n return text`\n #!/bin/sh\n set -e\n\n apk add --no-cache ${packages.join(\" \")}\n `\n } else {\n return text`\n #!/bin/sh\n set -e\n\n apt-get update\n apt-get install -y ${packages.join(\" \")}\n `\n }\n}\n","import type { Input, InputArray, InputMap } from \"@highstate/pulumi\"\nimport type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { InputL34Endpoint } from \"@highstate/common\"\n\nexport type ScriptDistribution = \"alpine\" | \"ubuntu\"\n\nexport type DistributionEnvironment = {\n /**\n * The image that should be used for the distribution.\n */\n image?: Input<string>\n\n /**\n * The utility packages that should be installed before running \"preInstallScripts\".\n *\n * Useful for installing tools like `curl` to install additional repositories.\n */\n preInstallPackages?: InputArray<string>\n\n /**\n * The pre-install scripts that should be run before installing packages.\n * Typically, these scripts are used to install additional repositories.\n */\n preInstallScripts?: InputMap<string>\n\n /**\n * The packages that are available in the environment.\n */\n packages?: InputArray<string>\n\n /**\n * The endpoint which the script is allowed to access scoped to the distribution.\n *\n * Typically, this is used to allow access to the package manager.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ScriptProgram = () => unknown\n\nexport type ScriptEnvironment = {\n [distribution in ScriptDistribution]?: DistributionEnvironment\n} & {\n /**\n * The setup scripts that should be run before the script.\n */\n setupScripts?: InputMap<string>\n\n /**\n * The cleanup scripts that should be run after the script.\n */\n cleanupScripts?: InputMap<string>\n\n /**\n * The arbitrary files available in the environment including scripts.\n */\n files?: InputMap<string | ScriptProgram>\n\n /**\n * The volumes that should be defined in the environment.\n */\n volumes?: InputArray<WorkloadVolume>\n\n /**\n * The volume mounts that should be defined in the environment.\n */\n volumeMounts?: InputArray<ContainerVolumeMount>\n\n /**\n * The environment variables that should be defined in the environment.\n */\n environment?: Input<ContainerEnvironment>\n\n /**\n * The endpoint which the script is allowed to access.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ResolvedScriptEnvironment = Omit<Required<ScriptEnvironment>, ScriptDistribution> & {\n [distribution in ScriptDistribution]: Required<DistributionEnvironment>\n}\n\nconst emptyDistributionEnvironment = {\n preInstallPackages: [],\n preInstallScripts: {},\n packages: [],\n}\n\nexport const emptyScriptEnvironment: ResolvedScriptEnvironment = {\n alpine: {\n ...emptyDistributionEnvironment,\n image: \"alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c\",\n allowedEndpoints: [\n //\n \"tcp://dl-cdn.alpinelinux.org:443\",\n \"tcp://dl-cdn.alpinelinux.org:80\",\n ],\n },\n\n ubuntu: {\n ...emptyDistributionEnvironment,\n image: \"ubuntu@sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782\",\n allowedEndpoints: [\n //\n \"tcp://archive.ubuntu.com:80\",\n \"tcp://archive.ubuntu.com:443\",\n \"tcp://security.ubuntu.com:80\",\n \"tcp://security.ubuntu.com:443\",\n ],\n },\n\n setupScripts: {},\n cleanupScripts: {},\n files: {},\n volumes: [],\n volumeMounts: [],\n environment: {},\n allowedEndpoints: [],\n}\n\nexport const functionScriptImages: Record<ScriptDistribution, string> = {\n alpine: \"oven/bun@sha256:6b14922b0885c3890cdb0b396090af1da486ba941df5ee94391eef64f7113c61\",\n ubuntu: \"oven/bun@sha256:66b431441dc4c36d7e8164bfc61e6348ec1d7ce2862fc3a29f5dc9856e8205e4\",\n}\n","import type { Container } from \"../container\"\nimport type { ScriptBundle } from \"./bundle\"\nimport { merge } from \"remeda\"\nimport { Output, output, type Input } from \"@pulumi/pulumi\"\n\nexport type ScriptContainer = Container & {\n /**\n * The script bundle to use.\n */\n bundle: Input<ScriptBundle>\n\n /**\n * The name of the main script to run.\n * The script must be available in the bundle.\n */\n main: Input<string>\n}\n\n/**\n * Creates a spec for a container that runs a script.\n * This spec can be used to create a complete workload or an init container.\n *\n * @param options The options to create the container spec.\n * @returns The container spec.\n */\nexport function createScriptContainer(options: ScriptContainer): Output<Container> {\n const bundle = output(options.bundle)\n\n return output({\n options,\n image: bundle.image,\n volumeMounts: bundle.volumeMounts,\n volumes: bundle.volumes,\n environment: bundle.environment,\n allowedEndpoints: bundle.allowedEndpoints,\n }).apply(({ options, image, volumeMounts, volumes, environment, allowedEndpoints }) => {\n return {\n image,\n command: [\"/scripts/entrypoint.sh\", `/scripts/${options.main}`],\n\n ...options,\n\n volumeMounts: [...volumeMounts, ...(options.volumeMounts ?? [])],\n volumes: [...volumes, ...(options.volumes ?? [])],\n environment: merge(environment, options.environment),\n allowedEndpoints: [...allowedEndpoints, ...(options.allowedEndpoints ?? [])],\n } as Container\n })\n}\n","import { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type JobArgs = WorkloadArgs &\n Omit<Partial<types.input.batch.v1.JobSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nconst jobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class Job extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly job: Output<batch.v1.Job>\n\n constructor(name: string, args: JobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:Job\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.job = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.Job(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: mergeDeep(\n {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n } satisfies types.input.batch.v1.JobSpec,\n omit(args, jobExtraArgs) as types.input.batch.v1.JobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n","import type { RequiredKeys } from \"@highstate/contract\"\nimport { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type CronJobArgs = WorkloadArgs &\n Omit<RequiredKeys<Partial<types.input.batch.v1.CronJobSpec>, \"schedule\">, \"jobTemplate\"> & {\n jobTemplate?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Omit<types.input.batch.v1.JobSpec, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n }\n }\n\nconst cronJobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class CronJob extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly cronJob: Output<batch.v1.CronJob>\n\n constructor(name: string, args: CronJobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:CronJob\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.cronJob = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.CronJob(\n name,\n {\n metadata: mapMetadata(args, name),\n\n spec: mergeDeep(\n {\n jobTemplate: {\n spec: {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n },\n },\n\n schedule: args.schedule,\n } satisfies types.input.batch.v1.CronJobSpec,\n omit(args, cronJobExtraArgs) as types.input.batch.v1.CronJobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,cAAc,iBAAiB,0BAA0B;AAClE,SAAS,eAAe;AACxB;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OAGK;AA0BA,SAAS,eAAe,MAAyD;AACtF,QAAM,SAAS,OAAO,EAAE,MAAM,eAAe,OAAO,KAAK,SAAS,EAAE,SAAS,KAAK,CAAC,EAAE;AAAA,IACnF,CAAC,EAAE,MAAAA,OAAM,cAAc,MAAM;AAC3B,UAAIA,MAAK,YAAY,cAAcA,MAAK,QAAQ,IAAI;AAClD,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAMC,WAAU,cAAc;AAAA,QAC5B,GAAGD;AAAA,QACH,aAAa;AAAA,UACX,kCAAkCA,MAAK,YAAY,UAAU;AAAA,QAC/D;AAAA,QACA,SAASA,MAAK,YAAY;AAAA,MAC5B,CAAC;AAED,YAAM,gBAAgB,UAAUA,MAAK,MAAMA,MAAK,KAAK,EAAE,QAAQ,UAAQ;AACrE,eAAO,aAAa,OAAO,MAAM;AAAA,UAC/B,WAAWA,MAAK,YAAY;AAAA,UAC5B,QAAQ;AAAA,YACNA,MAAK,YAAY,QAAQ,UAAU,OAAO,cAAY,SAAS,SAAS,UAAU;AAAA,UACpF;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,YAAM,kBAA2C;AAAA,QAC/C,cAAc;AAAA,UACZ,sBAAsB,mBAAmBA,MAAK,YAAY,QAAQ,UAAU,CAAC,CAAC,CAAC;AAAA,UAC/E;AAAA,YACE,WAAWA,MAAK;AAAA,YAChB,SAASA,MAAK;AAAA,YAEd,aAAa,8CAA8C,mBAAmBA,MAAK,YAAY,QAAQ,UAAU,CAAC,CAAC,CAAC;AAAA,YAEpH,aAAa;AAAA,cACX,eAAeA,MAAK,YAAY,QAAQ;AAAA,YAC1C;AAAA,UACF;AAAA,UACA,EAAE,UAAUA,MAAK,SAAS;AAAA,QAC5B;AAAA,MACF;AAEA,UAAI,cAAcA,MAAK,YAAY,QAAQ,UAAU,CAAC,GAAGA,MAAK,OAAO,GAAG;AACtE,wBAAgB;AAAA,UACd,cAAc;AAAA,YACZ,mBAAmB,aAAa;AAAA,YAChC;AAAA,cACE,WAAWA,MAAK,YAAY,QAAQ,UAAU,CAAC,EAAE,SAAS,WAAW;AAAA,cACrE,SAASA,MAAK;AAAA,cAEd,UAAUA,MAAK,YAAY,QAAQ,UAAU,CAAC,EAAE,SAAS,WAAW;AAAA,cAEpE,aAAa,0CAA0C,aAAa;AAAA,cAEpE,YAAY;AAAA,gBACV,aAAaA,MAAK;AAAA,cACpB;AAAA,YACF;AAAA,YACA,EAAE,UAAUA,MAAK,SAAS;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAEA,aAAO,OAAO;AAAA,QACZ,SAAAC;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,UAAU,MAAM;AACzB;AAYA,eAAsB,sBACpB,WACA,MACA,QAC+B;AAC/B,SAAO,MAAM,eAAe;AAAA,IAC1B,MAAM,KAAK;AAAA,IACX;AAAA,IAEA,MAAM,KAAK;AAAA,IAEX,aAAa,OAAO;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,UAAU,MAAM,YAAY,OAAO,UAAU;AAAA,EAC/C,CAAC;AACH;AAeO,SAAS,cAAc,MAAqD;AACjF,SAAO,OAAO,IAAI,EAAE,MAAM,CAAAD,UAAQ;AAChC,QAAIA,MAAK,QAAQ,OAAOA,MAAK,QAAQ,WAAW;AAC9C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAI,QAAQ,GAAG;AAAA,MACpBA,MAAK;AAAA,MACL;AAAA,QACE,UAAU;AAAA,UACR,MAAMA,MAAK;AAAA,UACX,WAAW,gCAAgCA,MAAK,SAAS;AAAA,UACzD,aAAaA,MAAK;AAAA,QACpB;AAAA,QACA,MAAM;AAAA,UACJ,kBAAkB,OAAOA,MAAK,OAAO,EAAE;AAAA,UACvC,WAAW,UAAUA,MAAK,MAAMA,MAAK,KAAK,EAAE,IAAI,UAAQ;AACtD,kBAAM,iBAAiB,KAAK,QAAQ,OAAO,UAAU;AAErD,mBAAO;AAAA,cACL,MAAM,SAAS,cAAc;AAAA,cAC7B,MAAM,OAAOA,MAAK,OAAO,EAAE;AAAA,cAC3B,UAAU;AAAA,cACV,UAAU;AAAA,cACV,KAAK;AAAA,gBACH,MAAM;AAAA,gBACN,iBAAiB,CAAC,EAAE,MAAM,eAAe,CAAC;AAAA,cAC5C;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,EAAE,UAAUA,MAAK,UAAU,aAAaA,MAAK,UAAU;AAAA,IACzD;AAAA,EACF,CAAC;AACH;;;AC5LA,SAAS,OAAO,aAAAE,kBAAkC;AAClD;AAAA,EACE;AAAA,EACA,UAAAC;AAAA,OAKK;AACP,SAAS,WAAW,QAAQ,YAAY;AACxC,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAChC,SAAS,MAAM,uBAAuB;AACtC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;;;ACuElC,IAAM,+BAA+B;AAAA,EACnC,oBAAoB,CAAC;AAAA,EACrB,mBAAmB,CAAC;AAAA,EACpB,UAAU,CAAC;AACb;AAEO,IAAM,yBAAoD;AAAA,EAC/D,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,kBAAkB;AAAA;AAAA,MAEhB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ;AAAA,IACN,GAAG;AAAA,IACH,OAAO;AAAA,IACP,kBAAkB;AAAA;AAAA,MAEhB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,cAAc,CAAC;AAAA,EACf,gBAAgB,CAAC;AAAA,EACjB,OAAO,CAAC;AAAA,EACR,SAAS,CAAC;AAAA,EACV,cAAc,CAAC;AAAA,EACf,aAAa,CAAC;AAAA,EACd,kBAAkB,CAAC;AACrB;AAEO,IAAM,uBAA2D;AAAA,EACtE,QAAQ;AAAA,EACR,QAAQ;AACV;;;ADpFO,IAAM,eAAN,cAA2B,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIzC;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,EAET,YAAY,MAAc,MAAwB,MAAiC;AACjF,UAAM,8BAA8B,MAAM,MAAM,IAAI;AAEpD,UAAM,oBAAoB;AAAA,MACxBC,QAAO,IAAI;AAAA,MACX,MAAM,CAAAC,UAAQC,WAAUD,MAAK,aAAaA,MAAK,YAAY,CAAC;AAAA,MAC5D,MAAM,CAAAA,UAAQ,UAAU,wBAAwB,GAAGA,KAAI,CAAC;AAAA,IAC1D;AAEA,UAAM,qBAAqB,kBAAkB,MAAM,CAAAE,uBAAqB;AACtE,aAAO,OAAO,OAAOA,mBAAkB,KAAK,EAAE,KAAK,UAAQ,OAAO,SAAS,UAAU;AAAA,IACvF,CAAC;AAED,SAAK,eAAe,KAAK;AACzB,SAAK,cAAc,kBAAkB;AAErC,SAAK,QAAQ,mBAAmB;AAAA,MAAM,CAAAC,wBACpCJ;AAAA,QACEI,sBACI,qBAAqB,KAAK,YAAY,IACtC,kBAAkB,KAAK,YAAY,EAAE;AAAA,MAC3C;AAAA,IACF;AAEA,SAAK,mBAAmBJ,QAAO,EAAE,mBAAmB,mBAAmB,CAAC,EAAE;AAAA,MACxE,CAAC,EAAE,mBAAAG,oBAAmB,oBAAAC,oBAAmB,MAAM;AAC7C,cAAM,mBAAmB;AAAA,UACvB,GAAGD,mBAAkB;AAAA,UACrB,GAAGA,mBAAkB,KAAK,YAAY,EAAE;AAAA,QAC1C;AAEA,YAAIC,qBAAoB;AACtB,2BAAiB,KAAK,8BAA8B;AAAA,QACtD;AAEA,eAAO,iBAAiB,IAAI,gBAAgB;AAAA,MAC9C;AAAA,IACF;AAEA,SAAK,YAAYJ,QAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,mBAAAG,oBAAmB,MAAAF,MAAK,MAAM;AAC1F,aAAO,UAAU;AAAA,QACf;AAAA,QACA;AAAA,UACE,SAASA,MAAK;AAAA,UACd,WAAWA,MAAK;AAAA,UAEhB,MAAM,iBAAiB,KAAK,cAAcE,kBAAiB;AAAA,QAC7D;AAAA,QACA,EAAE,GAAG,MAAM,QAAQ,KAAK;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,SAAK,UAAUH,QAAO,EAAE,oBAAoB,SAAS,kBAAkB,QAAQ,CAAC,EAAE;AAAA,MAChF,CAAC,EAAE,oBAAAI,qBAAoB,QAAQ,MAAM;AACnC,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,YACE,MAAM,KAAK,UAAU,SAAS;AAAA,YAE9B,WAAW;AAAA,cACT,MAAM,KAAK,UAAU,SAAS;AAAA,cAC9B,aAAa;AAAA;AAAA,YACf;AAAA,UACF;AAAA,UACA,GAAIA,sBAAqB,CAAC,EAAE,MAAM,gBAAgB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAEA,SAAK,eAAeJ,QAAO;AAAA,MACzB;AAAA,MACA,cAAc,kBAAkB;AAAA,IAClC,CAAC,EAAE,MAAM,CAAC,EAAE,oBAAAI,qBAAoB,aAAa,MAAM;AACjD,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,UACE,QAAQ,KAAK;AAAA,UACb,WAAW;AAAA,QACb;AAAA,QACA,GAAIA,sBACA,CAAC,EAAE,MAAM,gBAAgB,WAAW,wBAAwB,CAAC,IAC7D,CAAC;AAAA,MACP;AAAA,IACF,CAAC;AAED,SAAK,gBAAgB;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,kBAAkB,KAAK;AAAA,MACvB,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAEA,SAAS,qBAAqB,OAAuB;AACnD,MAAI,MAAM,WAAW,YAAY,GAAG;AAClC,WAAO,MAAM,QAAQ,cAAc,EAAE;AAAA,EACvC;AAEA,SAAO;AACT;AAEA,eAAe,iBACb,cACA,aACiC;AACjC,QAAM,aAAqC,CAAC;AAC5C,QAAM,UAAoB,CAAC;AAE3B,QAAM,0BAA0B,YAAY,YAAY;AACxD,QAAM,eAAe,EAAE,GAAG,YAAY,aAAa;AAEnD,MAAI,qBAAqB;AAEzB,aAAW,OAAO,YAAY,OAAO;AACnC,QAAI,OAAO,YAAY,MAAM,GAAG,MAAM,YAAY;AAChD,YAAM,aAAa,MAAM,kBAAkB,YAAY,MAAM,GAAG,CAAC;AAEjE,iBAAW,GAAG,IAAI;AAAA;AAAA;AAAA,UAGd,WAAW,IAAI;AAAA;AAAA,kBAEP,WAAW,UAAU;AAAA;AAGjC,2BAAqB;AAAA,IACvB,OAAO;AACL,iBAAW,GAAG,IAAI,YAAY,MAAM,GAAG;AAAA,IACzC;AAAA,EACF;AAEA,MAAI,oBAAoB;AACtB,UAAM,cAAc,MAAM,gBAAgB;AAE1C,gBAAY,eAAe;AAAA,MACzB,UAAU,YAAY,gBAAgB,CAAC,GAAG,oBAAoB;AAAA,MAC9D,CAAC,GAAG,QAAQ,IAAI,WAAW,aAAa;AAAA,IAC1C;AAEA,gBAAY,kBAAkB;AAAA,MAC5B,UAAU,YAAY,mBAAmB,CAAC,GAAG,oBAAoB;AAAA,MACjE,CAAC,GAAG,QAAQ,IAAI,WAAW,aAAa;AAAA,IAC1C;AAEA,eAAW,cAAc,IAAI,KAAK,UAAU,aAAa,MAAM,CAAC;AAEhE,iBAAa,yBAAyB,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C;AAEA,MAAI,wBAAwB,mBAAmB,SAAS,GAAG;AACzD,eAAW,yBAAyB,IAAI;AAAA,MACtC;AAAA,MACA,wBAAwB;AAAA,IAC1B;AAEA,YAAQ,KAAK;AAAA;AAAA;AAAA;AAAA,KAIZ;AAAA,EACH;AAEA,MAAI,OAAO,KAAK,wBAAwB,iBAAiB,EAAE,SAAS,GAAG;AACrE,eAAW,OAAO,wBAAwB,mBAAmB;AAC3D,iBAAW,eAAe,GAAG,EAAE,IAAI,wBAAwB,kBAAkB,GAAG;AAEhF,cAAQ,KAAK;AAAA,8CAC2B,GAAG;AAAA,+BAClB,GAAG;AAAA,sCACI,GAAG;AAAA,OAClC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,wBAAwB,SAAS,SAAS,GAAG;AAC/C,eAAW,qBAAqB,IAAI;AAAA,MAClC;AAAA,MACA,wBAAwB;AAAA,IAC1B;AAEA,YAAQ,KAAK;AAAA;AAAA;AAAA;AAAA,KAIZ;AAAA,EACH;AAEA,MAAI,OAAO,KAAK,YAAY,EAAE,SAAS,GAAG;AACxC,eAAW,OAAO,cAAc;AAC9B,iBAAW,SAAS,GAAG,EAAE,IAAI,aAAa,GAAG;AAE7C,cAAQ,KAAK;AAAA,wCACqB,GAAG;AAAA,yBAClB,GAAG;AAAA,gCACI,GAAG;AAAA,OAC5B;AAAA,IACH;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,YAAY,cAAc,EAAE,SAAS,GAAG;AACtD,UAAM,iBAA2B,CAAC;AAElC,eAAW,OAAO,YAAY,gBAAgB;AAC5C,iBAAW,WAAW,GAAG,EAAE,IAAI,YAAY,eAAe,GAAG;AAE7D,qBAAe,KAAK;AAAA,0CACgB,GAAG;AAAA,2BAClB,GAAG;AAAA,kCACI,GAAG;AAAA,OAC9B;AAAA,IACH;AAEA,YAAQ,KAAK;AAAA;AAAA,QAET,eAAe,IAAI,OAAK,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,KAKjD;AAAA,EACH;AAEA,aAAW,eAAe,IAAI,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAS5C,QAAQ,IAAI,OAAK,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,GAKxC;AAED,SAAO;AACT;AAEA,SAAS,yBAAyB,cAAkC,UAA4B;AAC9F,MAAI,iBAAiB,UAAU;AAC7B,WAAO;AAAA;AAAA;AAAA;AAAA,2BAIgB,SAAS,KAAK,GAAG,CAAC;AAAA;AAAA,EAE3C,OAAO;AACL,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKgB,SAAS,KAAK,GAAG,CAAC;AAAA;AAAA,EAE3C;AACF;;;AE1VA,SAAS,aAAa;AACtB,SAAiB,UAAAC,eAA0B;AAsBpC,SAAS,sBAAsB,SAA6C;AACjF,QAAM,SAASA,QAAO,QAAQ,MAAM;AAEpC,SAAOA,QAAO;AAAA,IACZ;AAAA,IACA,OAAO,OAAO;AAAA,IACd,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,aAAa,OAAO;AAAA,IACpB,kBAAkB,OAAO;AAAA,EAC3B,CAAC,EAAE,MAAM,CAAC,EAAE,SAAAC,UAAS,OAAO,cAAc,SAAS,aAAa,iBAAiB,MAAM;AACrF,WAAO;AAAA,MACL;AAAA,MACA,SAAS,CAAC,0BAA0B,YAAYA,SAAQ,IAAI,EAAE;AAAA,MAE9D,GAAGA;AAAA,MAEH,cAAc,CAAC,GAAG,cAAc,GAAIA,SAAQ,gBAAgB,CAAC,CAAE;AAAA,MAC/D,SAAS,CAAC,GAAG,SAAS,GAAIA,SAAQ,WAAW,CAAC,CAAE;AAAA,MAChD,aAAa,MAAM,aAAaA,SAAQ,WAAW;AAAA,MACnD,kBAAkB,CAAC,GAAG,kBAAkB,GAAIA,SAAQ,oBAAoB,CAAC,CAAE;AAAA,IAC7E;AAAA,EACF,CAAC;AACH;;;AChDA,SAAS,aAAyB;AAClC,SAAS,qBAAAC,oBAA2B,UAAAC,eAA6C;AACjF,SAAS,WAAW,YAAY;AAYhC,IAAM,eAAe,CAAC,GAAG,iBAAiB,aAAa,YAAY;AAE5D,IAAM,MAAN,cAAkBC,mBAAkB;AAAA;AAAA;AAAA;AAAA,EAIzB;AAAA,EAEhB,YAAY,MAAc,MAAe,MAAgC;AACvE,UAAM,qBAAqB,MAAM,MAAM,IAAI;AAE3C,UAAM,EAAE,YAAY,IAAI,sBAAsB,MAAM,MAAM,MAAM,MAAM,IAAI;AAE1E,SAAK,MAAMC,QAAO,EAAE,MAAM,YAAY,CAAC,EAAE,MAAM,OAAO,EAAE,MAAAC,OAAM,aAAAC,aAAY,MAAM;AAC9E,aAAO,IAAI,MAAM,GAAG;AAAA,QAClB;AAAA,QACA;AAAA,UACE,UAAU,YAAYD,OAAM,IAAI;AAAA,UAChC,MAAM;AAAA,YACJ;AAAA,cACE,UAAU;AAAA,gBACR;AAAA,kBACE,MAAM;AAAA,oBACJ,eAAe;AAAA,kBACjB;AAAA,gBACF;AAAA,gBACAC;AAAA,cACF;AAAA,YACF;AAAA,YACA,KAAKD,OAAM,YAAY;AAAA,UACzB;AAAA,QACF;AAAA,QACA;AAAA,UACE,GAAG;AAAA,UACH,QAAQ;AAAA,UACR,UAAU,MAAM,YAAYA,MAAK,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrDA,SAAS,SAAAE,cAAyB;AAClC,SAAS,qBAAAC,oBAA2B,UAAAC,eAA6C;AACjF,SAAS,aAAAC,YAAW,QAAAC,aAAY;AAiBhC,IAAM,mBAAmB,CAAC,GAAG,iBAAiB,aAAa,YAAY;AAEhE,IAAM,UAAN,cAAsBC,mBAAkB;AAAA;AAAA;AAAA;AAAA,EAI7B;AAAA,EAEhB,YAAY,MAAc,MAAmB,MAAgC;AAC3E,UAAM,yBAAyB,MAAM,MAAM,IAAI;AAE/C,UAAM,EAAE,YAAY,IAAI,sBAAsB,MAAM,MAAM,MAAM,MAAM,IAAI;AAE1E,SAAK,UAAUC,QAAO,EAAE,MAAM,YAAY,CAAC,EAAE,MAAM,OAAO,EAAE,MAAAC,OAAM,aAAAC,aAAY,MAAM;AAClF,aAAO,IAAIC,OAAM,GAAG;AAAA,QAClB;AAAA,QACA;AAAA,UACE,UAAU,YAAYF,OAAM,IAAI;AAAA,UAEhC,MAAMG;AAAA,YACJ;AAAA,cACE,aAAa;AAAA,gBACX,MAAM;AAAA,kBACJ,UAAUA;AAAA,oBACR;AAAA,sBACE,MAAM;AAAA,wBACJ,eAAe;AAAA,sBACjB;AAAA,oBACF;AAAA,oBACAF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cAEA,UAAUD,MAAK;AAAA,YACjB;AAAA,YACAI,MAAKJ,OAAM,gBAAgB;AAAA,UAC7B;AAAA,QACF;AAAA,QACA;AAAA,UACE,GAAG;AAAA,UACH,QAAQ;AAAA,UACR,UAAU,MAAM,YAAYA,MAAK,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":["args","gateway","normalize","output","output","args","normalize","scriptEnvironment","hasFunctionScripts","output","options","ComponentResource","output","ComponentResource","output","args","podTemplate","batch","ComponentResource","output","mergeDeep","omit","ComponentResource","output","args","podTemplate","batch","mergeDeep","omit"]}
|
1
|
+
{"version":3,"sources":["../src/access-point.ts","../src/scripting/environment.ts","../src/scripting/bundle.ts","../src/scripting/container.ts","../src/job.ts","../src/cron-job.ts"],"names":["args","gateway","output","normalize","scriptEnvironment","hasFunctionScripts","options","ComponentResource","podTemplate","batch","mergeDeep","omit"],"mappings":"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","file":"index.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Provider } from \"@pulumi/kubernetes\"\nimport type { Namespace } from \"./namespace\"\nimport { DnsRecordSet, filterEndpoints, l3EndpointToString } from \"@highstate/common\"\nimport { gateway } from \"@highstate/gateway-api\"\nimport {\n normalize,\n Output,\n output,\n toPromise,\n type Input,\n type InputArray,\n} from \"@highstate/pulumi\"\nimport { NetworkPolicy } from \"./network-policy\"\nimport { getProvider, mapNamespaceLikeToNamespaceName } from \"./shared\"\nimport { isFromCluster } from \"./service\"\n\nexport type UseAccessPointResult = {\n /**\n * The gateway instance created according to the access point.\n */\n gateway: gateway.v1.Gateway\n\n /**\n * The DNS record sets associated created according to the access point and gateway.\n */\n dnsRecordSets: DnsRecordSet[]\n\n /**\n * The network policies associated with the access point.\n */\n networkPolicies: NetworkPolicy[]\n}\n\nexport type UseAccessPointArgs = Omit<CreateGatewayArgs, \"gateway\"> & {\n accessPoint: Input<k8s.AccessPoint>\n}\n\nexport function useAccessPoint(args: UseAccessPointArgs): Promise<UseAccessPointResult> {\n const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(\n ({ args, namespaceName }) => {\n if (args.accessPoint.clusterId !== args.cluster.id) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the access point is deployed.\",\n )\n }\n\n const gateway = createGateway({\n ...args,\n annotations: {\n \"cert-manager.io/cluster-issuer\": args.accessPoint.tlsIssuer.clusterIssuerName,\n },\n gateway: args.accessPoint.gateway,\n })\n\n const dnsRecordSets = normalize(args.fqdn, args.fqdns).flatMap(fqdn => {\n return DnsRecordSet.create(fqdn, {\n providers: args.accessPoint.dnsProviders,\n values: filterEndpoints(\n args.accessPoint.gateway.endpoints.filter(endpoint => endpoint.type !== \"hostname\"),\n ),\n })\n })\n\n const networkPolicies: Output<NetworkPolicy>[] = [\n NetworkPolicy.create(\n `allow-ingress-from-${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}`,\n {\n namespace: args.namespace,\n cluster: args.cluster,\n\n description: `Allow ingress traffic from the gateway at \"${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}\".`,\n\n ingressRule: {\n fromEndpoints: args.accessPoint.gateway.endpoints,\n },\n },\n { provider: args.provider },\n ),\n ]\n\n if (isFromCluster(args.accessPoint.gateway.endpoints[0], args.cluster)) {\n networkPolicies.push(\n NetworkPolicy.create(\n `allow-egress-to-${namespaceName}`,\n {\n namespace: args.accessPoint.gateway.endpoints[0].metadata.k8sService.namespace,\n cluster: args.cluster,\n\n selector: args.accessPoint.gateway.endpoints[0].metadata.k8sService.selector,\n\n description: `Allow egress traffic to the namespace \"${namespaceName}\".`,\n\n egressRule: {\n toNamespace: args.namespace,\n },\n },\n { provider: args.provider },\n ),\n )\n }\n\n return output({\n gateway,\n dnsRecordSets,\n networkPolicies,\n })\n },\n )\n\n return toPromise(result)\n}\n\nexport type StandardAccessPointArgs = {\n appName: string\n fqdn: string\n}\n\nexport type StandardAccessPointInputs = {\n accessPoint: Output<k8s.AccessPoint>\n k8sCluster: Output<k8s.Cluster>\n}\n\nexport async function useStandardAcessPoint(\n namespace: Namespace,\n args: StandardAccessPointArgs,\n inputs: StandardAccessPointInputs,\n): Promise<UseAccessPointResult> {\n return await useAccessPoint({\n name: args.appName,\n namespace,\n\n fqdn: args.fqdn,\n\n accessPoint: inputs.accessPoint,\n cluster: inputs.k8sCluster,\n provider: await getProvider(inputs.k8sCluster),\n })\n}\n\nexport type CreateGatewayArgs = {\n name: string\n namespace: Input<Namespace>\n annotations?: Input<Record<string, string>>\n\n fqdn?: Input<string>\n fqdns?: InputArray<string>\n\n gateway: Input<k8s.Gateway>\n cluster: Input<k8s.Cluster>\n provider: Provider\n}\n\nexport function createGateway(args: CreateGatewayArgs): Output<gateway.v1.Gateway> {\n return output(args).apply(args => {\n if (args.cluster.id !== args.gateway.clusterId) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the gateway controller is deployed.\",\n )\n }\n\n return new gateway.v1.Gateway(\n args.name,\n {\n metadata: {\n name: args.name,\n namespace: mapNamespaceLikeToNamespaceName(args.namespace),\n annotations: args.annotations,\n },\n spec: {\n gatewayClassName: output(args.gateway).gatewayClassName,\n listeners: normalize(args.fqdn, args.fqdns).map(fqdn => {\n const normalizedName = fqdn.replace(/\\*/g, \"wildcard\")\n\n return {\n name: `https-${normalizedName}`,\n port: output(args.gateway).httpsListenerPort,\n protocol: \"HTTPS\",\n hostname: fqdn,\n tls: {\n mode: \"Terminate\",\n certificateRefs: [{ name: normalizedName }],\n },\n }\n }),\n },\n },\n { provider: args.provider, deletedWith: args.namespace },\n )\n })\n}\n","import type { Input, InputArray, InputMap } from \"@highstate/pulumi\"\nimport type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { InputL34Endpoint } from \"@highstate/common\"\n\nexport type ScriptDistribution = \"alpine\" | \"ubuntu\"\n\nexport type DistributionEnvironment = {\n /**\n * The image that should be used for the distribution.\n */\n image?: Input<string>\n\n /**\n * The utility packages that should be installed before running \"preInstallScripts\".\n *\n * Useful for installing tools like `curl` to install additional repositories.\n */\n preInstallPackages?: InputArray<string>\n\n /**\n * The pre-install scripts that should be run before installing packages.\n * Typically, these scripts are used to install additional repositories.\n */\n preInstallScripts?: InputMap<string>\n\n /**\n * The packages that are available in the environment.\n */\n packages?: InputArray<string>\n\n /**\n * The endpoint which the script is allowed to access scoped to the distribution.\n *\n * Typically, this is used to allow access to the package manager.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ScriptProgram = () => unknown\n\nexport type ScriptEnvironment = {\n [distribution in ScriptDistribution]?: DistributionEnvironment\n} & {\n /**\n * The setup scripts that should be run before the script.\n */\n setupScripts?: InputMap<string>\n\n /**\n * The cleanup scripts that should be run after the script.\n */\n cleanupScripts?: InputMap<string>\n\n /**\n * The arbitrary files available in the environment including scripts.\n */\n files?: InputMap<string | ScriptProgram>\n\n /**\n * The volumes that should be defined in the environment.\n */\n volumes?: InputArray<WorkloadVolume>\n\n /**\n * The volume mounts that should be defined in the environment.\n */\n volumeMounts?: InputArray<ContainerVolumeMount>\n\n /**\n * The environment variables that should be defined in the environment.\n */\n environment?: Input<ContainerEnvironment>\n\n /**\n * The endpoint which the script is allowed to access.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ResolvedScriptEnvironment = Omit<Required<ScriptEnvironment>, ScriptDistribution> & {\n [distribution in ScriptDistribution]: Required<DistributionEnvironment>\n}\n\nconst emptyDistributionEnvironment = {\n preInstallPackages: [],\n preInstallScripts: {},\n packages: [],\n}\n\nexport const emptyScriptEnvironment: ResolvedScriptEnvironment = {\n alpine: {\n ...emptyDistributionEnvironment,\n image: \"alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c\",\n allowedEndpoints: [\n //\n \"tcp://dl-cdn.alpinelinux.org:443\",\n \"tcp://dl-cdn.alpinelinux.org:80\",\n ],\n },\n\n ubuntu: {\n ...emptyDistributionEnvironment,\n image: \"ubuntu@sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782\",\n allowedEndpoints: [\n //\n \"tcp://archive.ubuntu.com:80\",\n \"tcp://archive.ubuntu.com:443\",\n \"tcp://security.ubuntu.com:80\",\n \"tcp://security.ubuntu.com:443\",\n ],\n },\n\n setupScripts: {},\n cleanupScripts: {},\n files: {},\n volumes: [],\n volumeMounts: [],\n environment: {},\n allowedEndpoints: [],\n}\n\nexport const functionScriptImages: Record<ScriptDistribution, string> = {\n alpine: \"oven/bun@sha256:6b14922b0885c3890cdb0b396090af1da486ba941df5ee94391eef64f7113c61\",\n ubuntu: \"oven/bun@sha256:66b431441dc4c36d7e8164bfc61e6348ec1d7ce2862fc3a29f5dc9856e8205e4\",\n}\n","import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { network } from \"@highstate/library\"\nimport { apply, normalize, type InputArray } from \"@highstate/pulumi\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n type Unwrap,\n} from \"@pulumi/pulumi\"\nimport { mapValues, omitBy, pipe } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { readPackageJSON } from \"pkg-types\"\nimport { text, trimIndentation } from \"@highstate/contract\"\nimport { parseL34Endpoint } from \"@highstate/common\"\nimport { serializeFunction } from \"@pulumi/pulumi/runtime/index.js\"\nimport { type CommonArgs } from \"../shared\"\nimport { ConfigMap } from \"../config-map\"\nimport {\n emptyScriptEnvironment,\n functionScriptImages,\n type ResolvedScriptEnvironment,\n type ScriptDistribution,\n type ScriptEnvironment,\n} from \"./environment\"\n\nexport type ScriptBundleArgs = CommonArgs & {\n /**\n * The environment to bundle the scripts from.\n */\n environment?: Input<ScriptEnvironment>\n\n /**\n * The environments to bundle the scripts from.\n */\n environments?: InputArray<ScriptEnvironment>\n\n /**\n * The distribution to use for the scripts.\n */\n distribution: ScriptDistribution\n}\n\nexport class ScriptBundle extends ComponentResource {\n /**\n * The config map containing the scripts.\n */\n readonly configMap: Output<ConfigMap>\n\n /**\n * The volumes that should be included in the workload.\n */\n readonly volumes: Output<WorkloadVolume[]>\n\n /**\n * The volume mounts that should be defined in the container.\n */\n readonly volumeMounts: Output<ContainerVolumeMount[]>\n\n /**\n * The environment variables that should be defined in the container.\n */\n readonly environment: Output<ContainerEnvironment>\n\n /**\n * The image to use for the scripts.\n */\n readonly image: Output<string>\n\n /**\n * The distribution to use for the scripts.\n */\n readonly distribution: ScriptDistribution\n\n /**\n * The list of endpoints that the script is allowed to access.\n */\n readonly allowedEndpoints: Output<network.L34Endpoint[]>\n\n constructor(name: string, args: ScriptBundleArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:ScriptBundle\", name, args, opts)\n\n const scriptEnvironment = pipe(\n output(args),\n apply(args => normalize(args.environment, args.environments)),\n apply(args => deepmerge(emptyScriptEnvironment, ...args)),\n ) as Output<Unwrap<ResolvedScriptEnvironment>>\n\n const hasFunctionScripts = scriptEnvironment.apply(scriptEnvironment => {\n return Object.values(scriptEnvironment.files).some(file => typeof file === \"function\")\n })\n\n this.distribution = args.distribution\n this.environment = scriptEnvironment.environment\n\n this.image = hasFunctionScripts.apply(hasFunctionScripts =>\n output(\n hasFunctionScripts\n ? functionScriptImages[args.distribution]\n : scriptEnvironment[args.distribution].image,\n ),\n )\n\n this.allowedEndpoints = output({ scriptEnvironment, hasFunctionScripts }).apply(\n ({ scriptEnvironment, hasFunctionScripts }) => {\n const allowedEndpoints = [\n ...scriptEnvironment.allowedEndpoints,\n ...scriptEnvironment[args.distribution].allowedEndpoints,\n ]\n\n if (hasFunctionScripts) {\n allowedEndpoints.push(\"tcp://registry.npmjs.org:443\")\n }\n\n return allowedEndpoints.map(parseL34Endpoint)\n },\n )\n\n this.configMap = output({ scriptEnvironment, args }).apply(({ scriptEnvironment, args }) => {\n return ConfigMap.create(\n name,\n {\n cluster: args.cluster,\n namespace: args.namespace,\n\n data: createScriptData(this.distribution, scriptEnvironment),\n },\n { ...opts, parent: this },\n )\n })\n\n this.volumes = output({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(\n ({ hasFunctionScripts, volumes }) => {\n return [\n ...volumes,\n {\n name: this.configMap.metadata.name,\n\n configMap: {\n name: this.configMap.metadata.name,\n defaultMode: 0o550, // read and execute permissions\n },\n },\n ...(hasFunctionScripts ? [{ name: \"node-modules\", emptyDir: {} }] : []),\n ]\n },\n )\n\n this.volumeMounts = output({\n hasFunctionScripts,\n volumeMounts: scriptEnvironment.volumeMounts,\n }).apply(({ hasFunctionScripts, volumeMounts }) => {\n return [\n ...volumeMounts,\n {\n volume: this.configMap,\n mountPath: \"/scripts\",\n },\n ...(hasFunctionScripts\n ? [{ name: \"node-modules\", mountPath: \"/scripts/node_modules\" }]\n : []),\n ]\n })\n\n this.registerOutputs({\n configMap: this.configMap,\n volumes: this.volumes,\n volumeMounts: this.volumeMounts,\n environment: this.environment,\n distribution: this.distribution,\n allowedEndpoints: this.allowedEndpoints,\n image: this.image,\n })\n }\n}\n\nfunction stripWorkspacePrefix(value: string): string {\n if (value.startsWith(\"workspace:\")) {\n return value.replace(\"workspace:\", \"\")\n }\n\n return value\n}\n\nasync function createScriptData(\n distribution: ScriptDistribution,\n environment: Unwrap<ResolvedScriptEnvironment>,\n): Promise<Record<string, string>> {\n const scriptData: Record<string, string> = {}\n const actions: string[] = []\n\n const distributionEnvironment = environment[distribution]\n const setupScripts = { ...environment.setupScripts }\n\n let hasFunctionScripts = false\n\n for (const key in environment.files) {\n if (typeof environment.files[key] === \"function\") {\n const serialized = await serializeFunction(environment.files[key])\n\n scriptData[key] = text`\n #!/usr/local/bin/bun\n \n ${serialized.text}\n\n exports.${serialized.exportName}()\n `\n\n hasFunctionScripts = true\n } else {\n scriptData[key] = environment.files[key]\n }\n }\n\n if (hasFunctionScripts) {\n const packageJson = await readPackageJSON()\n\n packageJson.dependencies = omitBy(\n mapValues(packageJson.dependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n packageJson.devDependencies = omitBy(\n mapValues(packageJson.devDependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n scriptData[\"package.json\"] = JSON.stringify(packageJson, null, 2)\n\n setupScripts[\"resolve-dependencies.sh\"] = text`\n #!/usr/local/bin/bun\n set -e\n\n cd /scripts\n bun install --production\n `\n }\n\n if (distributionEnvironment.preInstallPackages.length > 0) {\n scriptData[\"pre-install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.preInstallPackages,\n )\n\n actions.push(`\n echo \"+ Installing pre-install packages...\"\n /scripts/pre-install-packages.sh\n echo \"+ Pre-install packages installed successfully\"\n `)\n }\n\n if (Object.keys(distributionEnvironment.preInstallScripts).length > 0) {\n for (const key in distributionEnvironment.preInstallScripts) {\n scriptData[`pre-install-${key}`] = distributionEnvironment.preInstallScripts[key]\n\n actions.push(`\n echo \"+ Running pre-install script '${key}'...\"\n /scripts/pre-install-${key}\n echo \"+ Pre-install script '${key}'... Done\"\n `)\n }\n }\n\n if (distributionEnvironment.packages.length > 0) {\n scriptData[\"install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.packages,\n )\n\n actions.push(`\n echo \"+ Installing packages...\"\n /scripts/install-packages.sh\n echo \"+ Packages installed successfully\"\n `)\n }\n\n if (Object.keys(setupScripts).length > 0) {\n for (const key in setupScripts) {\n scriptData[`setup-${key}`] = setupScripts[key]\n\n actions.push(`\n echo \"+ Running setup script '${key}'...\"\n /scripts/setup-${key}\n echo \"+ Setup script '${key}'... Done\"\n `)\n }\n }\n\n if (Object.keys(environment.cleanupScripts).length > 0) {\n const cleanupActions: string[] = []\n\n for (const key in environment.cleanupScripts) {\n scriptData[`cleanup-${key}`] = environment.cleanupScripts[key]\n\n cleanupActions.push(`\n echo \"+ Running cleanup script '${key}'...\"\n /scripts/cleanup-${key}\n echo \"+ Cleanup script '${key}'... Done\"\n `)\n }\n\n actions.push(`\n function cleanup() {\n ${cleanupActions.map(s => s.trim()).join(\"\\n\\n\")}\n }\n\n trap cleanup EXIT\n trap cleanup SIGTERM\n `)\n }\n\n scriptData[\"entrypoint.sh\"] = trimIndentation(`\n #!/bin/sh\n set -e\n\n if [ -z \"$1\" ]; then\n echo \"Usage: entrypoint.sh <main script> [args...]\"\n exit 1\n fi\n\n ${actions.map(s => s.trim()).join(\"\\n\\n\")}\n\n echo \"+ Running main script...\"\n $@\n echo \"+ Main script completed\"\n `)\n\n return scriptData\n}\n\nfunction getInstallPackagesScript(distribution: ScriptDistribution, packages: string[]): string {\n if (distribution === \"alpine\") {\n return text`\n #!/bin/sh\n set -e\n\n apk add --no-cache ${packages.join(\" \")}\n `\n } else {\n return text`\n #!/bin/sh\n set -e\n\n apt-get update\n apt-get install -y ${packages.join(\" \")}\n `\n }\n}\n","import type { Container } from \"../container\"\nimport type { ScriptBundle } from \"./bundle\"\nimport { merge } from \"remeda\"\nimport { Output, output, type Input } from \"@pulumi/pulumi\"\n\nexport type ScriptContainer = Container & {\n /**\n * The script bundle to use.\n */\n bundle: Input<ScriptBundle>\n\n /**\n * The name of the main script to run.\n * The script must be available in the bundle.\n */\n main: Input<string>\n}\n\n/**\n * Creates a spec for a container that runs a script.\n * This spec can be used to create a complete workload or an init container.\n *\n * @param options The options to create the container spec.\n * @returns The container spec.\n */\nexport function createScriptContainer(options: ScriptContainer): Output<Container> {\n const bundle = output(options.bundle)\n\n return output({\n options,\n image: bundle.image,\n volumeMounts: bundle.volumeMounts,\n volumes: bundle.volumes,\n environment: bundle.environment,\n allowedEndpoints: bundle.allowedEndpoints,\n }).apply(({ options, image, volumeMounts, volumes, environment, allowedEndpoints }) => {\n return {\n image,\n command: [\"/scripts/entrypoint.sh\", `/scripts/${options.main}`],\n\n ...options,\n\n volumeMounts: [...volumeMounts, ...(options.volumeMounts ?? [])],\n volumes: [...volumes, ...(options.volumes ?? [])],\n environment: merge(environment, options.environment),\n allowedEndpoints: [...allowedEndpoints, ...(options.allowedEndpoints ?? [])],\n } as Container\n })\n}\n","import { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type JobArgs = WorkloadArgs &\n Omit<Partial<types.input.batch.v1.JobSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nconst jobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class Job extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly job: Output<batch.v1.Job>\n\n constructor(name: string, args: JobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:Job\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.job = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.Job(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: mergeDeep(\n {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n } satisfies types.input.batch.v1.JobSpec,\n omit(args, jobExtraArgs) as types.input.batch.v1.JobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n","import type { RequiredKeys } from \"@highstate/contract\"\nimport { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type CronJobArgs = WorkloadArgs &\n Omit<RequiredKeys<Partial<types.input.batch.v1.CronJobSpec>, \"schedule\">, \"jobTemplate\"> & {\n jobTemplate?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Omit<types.input.batch.v1.JobSpec, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n }\n }\n\nconst cronJobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class CronJob extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly cronJob: Output<batch.v1.CronJob>\n\n constructor(name: string, args: CronJobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:CronJob\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.cronJob = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.CronJob(\n name,\n {\n metadata: mapMetadata(args, name),\n\n spec: mergeDeep(\n {\n jobTemplate: {\n spec: {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n },\n },\n\n schedule: args.schedule,\n } satisfies types.input.batch.v1.CronJobSpec,\n omit(args, cronJobExtraArgs) as types.input.batch.v1.CronJobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"stateful-set-7CAQWTV2.js"}
|
@@ -1,6 +1,7 @@
|
|
1
|
-
|
2
|
-
import { k8s } from
|
3
|
-
import { forUnit, toPromise } from
|
1
|
+
import '../../chunk-PZ5AY32C.js';
|
2
|
+
import { k8s } from '@highstate/library';
|
3
|
+
import { forUnit, toPromise } from '@highstate/pulumi';
|
4
|
+
|
4
5
|
var { inputs, outputs } = forUnit(k8s.accessPoint);
|
5
6
|
var { gateway, tlsIssuer } = await toPromise(inputs);
|
6
7
|
if (gateway.clusterId !== tlsIssuer.clusterId) {
|
@@ -14,7 +15,7 @@ var access_point_default = outputs({
|
|
14
15
|
tlsIssuer: inputs.tlsIssuer
|
15
16
|
}
|
16
17
|
});
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
|
19
|
+
export { access_point_default as default };
|
20
|
+
//# sourceMappingURL=index.js.map
|
20
21
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/access-point/index.ts"],"sourcesContent":["import { k8s } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\n\nconst { inputs, outputs } = forUnit(k8s.accessPoint)\n\nconst { gateway, tlsIssuer } = await toPromise(inputs)\n\nif (gateway.clusterId !== tlsIssuer.clusterId) {\n throw new Error(\"Gateway and TLS issuer must be in the same cluster\")\n}\n\nexport default outputs({\n accessPoint: {\n clusterId: gateway.clusterId,\n dnsProviders: inputs.dnsProviders,\n gateway: inputs.gateway,\n tlsIssuer: inputs.tlsIssuer,\n },\n})\n"]
|
1
|
+
{"version":3,"sources":["../../../src/units/access-point/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,MAAQ,EAAA,OAAA,EAAY,GAAA,OAAA,CAAQ,IAAI,WAAW,CAAA;AAEnD,IAAM,EAAE,OAAS,EAAA,SAAA,EAAc,GAAA,MAAM,UAAU,MAAM,CAAA;AAErD,IAAI,OAAA,CAAQ,SAAc,KAAA,SAAA,CAAU,SAAW,EAAA;AAC7C,EAAM,MAAA,IAAI,MAAM,oDAAoD,CAAA;AACtE;AAEA,IAAO,uBAAQ,OAAQ,CAAA;AAAA,EACrB,WAAa,EAAA;AAAA,IACX,WAAW,OAAQ,CAAA,SAAA;AAAA,IACnB,cAAc,MAAO,CAAA,YAAA;AAAA,IACrB,SAAS,MAAO,CAAA,OAAA;AAAA,IAChB,WAAW,MAAO,CAAA;AAAA;AAEtB,CAAC","file":"index.js","sourcesContent":["import { k8s } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\n\nconst { inputs, outputs } = forUnit(k8s.accessPoint)\n\nconst { gateway, tlsIssuer } = await toPromise(inputs)\n\nif (gateway.clusterId !== tlsIssuer.clusterId) {\n throw new Error(\"Gateway and TLS issuer must be in the same cluster\")\n}\n\nexport default outputs({\n accessPoint: {\n clusterId: gateway.clusterId,\n dnsProviders: inputs.dnsProviders,\n gateway: inputs.gateway,\n tlsIssuer: inputs.tlsIssuer,\n },\n})\n"]}
|