k8ts 0.2.1 → 0.4.2
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/api-versions.js +0 -1
- package/dist/error.js +1 -2
- package/dist/external/index.js +10 -14
- package/dist/file/exports.d.ts.map +1 -1
- package/dist/file/exports.js +11 -22
- package/dist/file/factory.d.ts +10 -4
- package/dist/file/factory.d.ts.map +1 -1
- package/dist/file/factory.js +54 -35
- package/dist/file/file.js +0 -1
- package/dist/file/index.js +0 -1
- package/dist/file/origin.d.ts +3 -0
- package/dist/file/origin.d.ts.map +1 -1
- package/dist/file/origin.js +1 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/k8ts-sys-kind.js +0 -1
- package/dist/kind-map.js +1 -2
- package/dist/meta/k8ts-section.js +0 -1
- package/dist/node/abs-resource.js +12 -14
- package/dist/node/dependencies.d.ts +1 -0
- package/dist/node/dependencies.js +1 -1
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +7 -2
- package/dist/node/manifest-resource.d.ts +1 -1
- package/dist/node/manifest-resource.d.ts.map +1 -1
- package/dist/node/manifest-resource.js +2 -2
- package/dist/node/sub-resource.js +10 -14
- package/dist/node/top-resource.js +0 -1
- package/dist/paths.js +0 -1
- package/dist/resources/configmap/configmap.d.ts +4 -1
- package/dist/resources/configmap/configmap.d.ts.map +1 -1
- package/dist/resources/configmap/configmap.js +16 -19
- package/dist/resources/configmap/index.js +0 -1
- package/dist/resources/deployment/deployment.d.ts +2 -1
- package/dist/resources/deployment/deployment.d.ts.map +1 -1
- package/dist/resources/deployment/deployment.js +13 -17
- package/dist/resources/deployment/index.js +0 -1
- package/dist/resources/http-route/http-route.d.ts +1 -1
- package/dist/resources/http-route/http-route.d.ts.map +1 -1
- package/dist/resources/http-route/http-route.js +11 -19
- package/dist/resources/http-route/index.js +0 -1
- package/dist/resources/index.js +0 -1
- package/dist/resources/namespace/index.js +0 -1
- package/dist/resources/namespace/namespace.js +10 -15
- package/dist/resources/persistent/access-mode.js +0 -1
- package/dist/resources/persistent/block-mode.js +0 -1
- package/dist/resources/persistent/claim/index.js +0 -1
- package/dist/resources/persistent/claim/pvc.d.ts +5 -5
- package/dist/resources/persistent/claim/pvc.d.ts.map +1 -1
- package/dist/resources/persistent/claim/pvc.js +16 -24
- package/dist/resources/persistent/index.d.ts +4 -10
- package/dist/resources/persistent/index.d.ts.map +1 -1
- package/dist/resources/persistent/index.js +18 -11
- package/dist/resources/persistent/volume/backend.js +0 -1
- package/dist/resources/persistent/volume/index.js +0 -1
- package/dist/resources/persistent/volume/parse-backend.js +0 -1
- package/dist/resources/persistent/volume/pv.d.ts +3 -3
- package/dist/resources/persistent/volume/pv.d.ts.map +1 -1
- package/dist/resources/persistent/volume/pv.js +16 -21
- package/dist/resources/pod/container/container.d.ts +2 -2
- package/dist/resources/pod/container/container.d.ts.map +1 -1
- package/dist/resources/pod/container/container.js +13 -16
- package/dist/resources/pod/container/index.js +0 -1
- package/dist/resources/pod/container/mounts.js +3 -1
- package/dist/resources/pod/index.js +0 -1
- package/dist/resources/pod/pod-template.d.ts +5 -2
- package/dist/resources/pod/pod-template.d.ts.map +1 -1
- package/dist/resources/pod/pod-template.js +14 -21
- package/dist/resources/pod/volume/devices.d.ts +3 -3
- package/dist/resources/pod/volume/devices.d.ts.map +1 -1
- package/dist/resources/pod/volume/devices.js +11 -15
- package/dist/resources/pod/volume/index.js +0 -1
- package/dist/resources/pod/volume/volumes.d.ts +2 -3
- package/dist/resources/pod/volume/volumes.d.ts.map +1 -1
- package/dist/resources/pod/volume/volumes.js +8 -17
- package/dist/resources/secret/index.js +0 -1
- package/dist/resources/secret/secret.js +9 -17
- package/dist/resources/service/frontend.js +0 -1
- package/dist/resources/service/index.js +0 -1
- package/dist/resources/service/service-port.js +2 -1
- package/dist/resources/service/service.d.ts +2 -2
- package/dist/resources/service/service.d.ts.map +1 -1
- package/dist/resources/service/service.js +19 -20
- package/dist/resources/utils/adapters.js +0 -1
- package/dist/runner/exporter/assembler.js +1 -1
- package/dist/runner/exporter/index.js +0 -1
- package/dist/runner/exporter/loader.d.ts.map +1 -1
- package/dist/runner/exporter/loader.js +33 -10
- package/dist/runner/exporter/manifester.d.ts.map +1 -1
- package/dist/runner/exporter/manifester.js +4 -7
- package/dist/runner/exporter/meta.js +0 -1
- package/dist/runner/exporter/progress-shower.js +1 -1
- package/dist/runner/exporter/saver.js +2 -2
- package/dist/runner/exporter/serializer.js +1 -1
- package/dist/runner/exporter/stage.js +11 -14
- package/dist/runner/exporter/trace-embedder.d.ts +1 -0
- package/dist/runner/exporter/trace-embedder.js +1 -1
- package/dist/runner/index.js +0 -1
- package/dist/runner/proverbs.d.ts +1 -0
- package/dist/runner/proverbs.js +1 -1
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +6 -3
- package/dist/runner/silly/proverbs.js +1 -1
- package/dist/runner/summarizer.d.ts +2 -2
- package/dist/runner/summarizer.d.ts.map +1 -1
- package/dist/runner/summarizer.js +3 -3
- package/dist/src.tsbuildinfo +1 -1
- package/dist/version.js +0 -1
- package/dist/world/index.js +0 -1
- package/dist/world/world.d.ts +11 -4
- package/dist/world/world.d.ts.map +1 -1
- package/dist/world/world.js +33 -6
- package/package.json +6 -6
- package/src/file/exports.ts +7 -5
- package/src/file/factory.ts +46 -18
- package/src/file/origin.ts +3 -0
- package/src/index.ts +1 -0
- package/src/node/index.ts +3 -0
- package/src/node/manifest-resource.ts +1 -1
- package/src/resources/configmap/configmap.ts +19 -4
- package/src/resources/deployment/deployment.ts +4 -3
- package/src/resources/http-route/http-route.ts +3 -3
- package/src/resources/persistent/claim/pvc.ts +5 -5
- package/src/resources/persistent/index.ts +4 -10
- package/src/resources/persistent/volume/pv.ts +3 -3
- package/src/resources/pod/container/container.ts +5 -4
- package/src/resources/pod/pod-template.ts +8 -6
- package/src/resources/pod/volume/devices.ts +3 -3
- package/src/resources/pod/volume/volumes.ts +2 -3
- package/src/resources/service/service.ts +11 -5
- package/src/runner/exporter/loader.ts +37 -10
- package/src/runner/exporter/manifester.ts +4 -6
- package/src/runner/runner.ts +5 -2
- package/src/runner/summarizer.ts +3 -3
- package/src/tsconfig.json +6 -0
- package/src/world/world.ts +42 -13
- package/dist/api-versions.js.map +0 -1
- package/dist/error.js.map +0 -1
- package/dist/external/index.js.map +0 -1
- package/dist/file/exports.js.map +0 -1
- package/dist/file/factory.js.map +0 -1
- package/dist/file/file.js.map +0 -1
- package/dist/file/index.js.map +0 -1
- package/dist/file/origin.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/k8ts-sys-kind.js.map +0 -1
- package/dist/kind-map.js.map +0 -1
- package/dist/meta/k8ts-section.js.map +0 -1
- package/dist/node/abs-resource.js.map +0 -1
- package/dist/node/dependencies.js.map +0 -1
- package/dist/node/index.js.map +0 -1
- package/dist/node/manifest-resource.js.map +0 -1
- package/dist/node/sub-resource.js.map +0 -1
- package/dist/node/top-resource.js.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/resources/configmap/configmap.js.map +0 -1
- package/dist/resources/configmap/index.js.map +0 -1
- package/dist/resources/deployment/deployment.js.map +0 -1
- package/dist/resources/deployment/index.js.map +0 -1
- package/dist/resources/http-route/http-route.js.map +0 -1
- package/dist/resources/http-route/index.js.map +0 -1
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/namespace/index.js.map +0 -1
- package/dist/resources/namespace/namespace.js.map +0 -1
- package/dist/resources/persistent/access-mode.js.map +0 -1
- package/dist/resources/persistent/block-mode.js.map +0 -1
- package/dist/resources/persistent/claim/index.js.map +0 -1
- package/dist/resources/persistent/claim/pvc.js.map +0 -1
- package/dist/resources/persistent/index.js.map +0 -1
- package/dist/resources/persistent/volume/backend.js.map +0 -1
- package/dist/resources/persistent/volume/index.js.map +0 -1
- package/dist/resources/persistent/volume/parse-backend.js.map +0 -1
- package/dist/resources/persistent/volume/pv.js.map +0 -1
- package/dist/resources/pod/container/container.js.map +0 -1
- package/dist/resources/pod/container/index.js.map +0 -1
- package/dist/resources/pod/container/mounts.js.map +0 -1
- package/dist/resources/pod/index.js.map +0 -1
- package/dist/resources/pod/pod-template.js.map +0 -1
- package/dist/resources/pod/volume/devices.js.map +0 -1
- package/dist/resources/pod/volume/index.js.map +0 -1
- package/dist/resources/pod/volume/volumes.js.map +0 -1
- package/dist/resources/secret/index.js.map +0 -1
- package/dist/resources/secret/secret.js.map +0 -1
- package/dist/resources/service/frontend.js.map +0 -1
- package/dist/resources/service/index.js.map +0 -1
- package/dist/resources/service/service-port.js.map +0 -1
- package/dist/resources/service/service.js.map +0 -1
- package/dist/resources/utils/adapters.js.map +0 -1
- package/dist/runner/exporter/assembler.js.map +0 -1
- package/dist/runner/exporter/index.js.map +0 -1
- package/dist/runner/exporter/loader.js.map +0 -1
- package/dist/runner/exporter/manifester.js.map +0 -1
- package/dist/runner/exporter/meta.js.map +0 -1
- package/dist/runner/exporter/progress-shower.js.map +0 -1
- package/dist/runner/exporter/saver.js.map +0 -1
- package/dist/runner/exporter/serializer.js.map +0 -1
- package/dist/runner/exporter/stage.js.map +0 -1
- package/dist/runner/exporter/trace-embedder.js.map +0 -1
- package/dist/runner/index.js.map +0 -1
- package/dist/runner/proverbs.js.map +0 -1
- package/dist/runner/runner.js.map +0 -1
- package/dist/runner/silly/proverbs.js.map +0 -1
- package/dist/runner/summarizer.js.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/world/index.js.map +0 -1
- package/dist/world/world.js.map +0 -1
package/dist/world/world.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExternalOriginEntity = exports.World = void 0;
|
|
4
4
|
const instruments_1 = require("@k8ts/instruments");
|
|
5
|
+
const metadata_1 = require("@k8ts/metadata");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
5
7
|
const external_1 = require("../external");
|
|
6
8
|
const file_1 = require("../file");
|
|
7
9
|
const k8ts_sys_kind_1 = require("../k8ts-sys-kind");
|
|
@@ -10,15 +12,41 @@ var World;
|
|
|
10
12
|
(function (World) {
|
|
11
13
|
const ident = k8ts_sys_kind_1.k8tsBuildKind.kind("World");
|
|
12
14
|
class Builder extends instruments_1.BaseOriginEntity {
|
|
15
|
+
kind = ident;
|
|
16
|
+
_ExternalOrigin;
|
|
13
17
|
constructor(props) {
|
|
14
18
|
super("World", props, kind_map_1.K8tsRootOrigin.node);
|
|
15
|
-
this.
|
|
16
|
-
this.ExternalOrigin = new ExternalOriginEntity(this.node);
|
|
19
|
+
this._ExternalOrigin = new ExternalOriginEntity(this.node);
|
|
17
20
|
}
|
|
18
21
|
External(kind, name, namespace) {
|
|
19
|
-
return new external_1.External(this.
|
|
22
|
+
return new external_1.External(this._ExternalOrigin.node, kind, name, namespace);
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
Scope(scope) {
|
|
25
|
+
const builder = this;
|
|
26
|
+
let meta = metadata_1.Meta.make();
|
|
27
|
+
return {
|
|
28
|
+
File(name, props) {
|
|
29
|
+
props ??= {};
|
|
30
|
+
const self = {
|
|
31
|
+
metadata(input) {
|
|
32
|
+
props = (0, lodash_1.assign)({}, props, {
|
|
33
|
+
meta: metadata_1.Meta.splat(props?.meta, input)
|
|
34
|
+
});
|
|
35
|
+
return self;
|
|
36
|
+
},
|
|
37
|
+
Resources(producer) {
|
|
38
|
+
return builder._File(name, {
|
|
39
|
+
...props,
|
|
40
|
+
scope,
|
|
41
|
+
FILE: producer
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return self;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
_File(name, props) {
|
|
22
50
|
return file_1.File.make(name, props, this.node);
|
|
23
51
|
}
|
|
24
52
|
}
|
|
@@ -30,12 +58,11 @@ var World;
|
|
|
30
58
|
})(World || (exports.World = World = {}));
|
|
31
59
|
const ident = k8ts_sys_kind_1.k8tsBuildKind.kind("External");
|
|
32
60
|
class ExternalOriginEntity extends instruments_1.BaseOriginEntity {
|
|
61
|
+
kind = ident;
|
|
33
62
|
constructor(parent) {
|
|
34
63
|
super("EXTERNAL", {
|
|
35
64
|
meta: {}
|
|
36
65
|
}, parent);
|
|
37
|
-
this.kind = ident;
|
|
38
66
|
}
|
|
39
67
|
}
|
|
40
68
|
exports.ExternalOriginEntity = ExternalOriginEntity;
|
|
41
|
-
//# sourceMappingURL=world.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "k8ts",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Powerful framwork for building Kubernetes manifests in TypeScript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kubernetes",
|
|
@@ -60,8 +60,7 @@
|
|
|
60
60
|
"test:coverage": "jest --coverage"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"
|
|
64
|
-
"@k8ts/metadata": "^0.2.1",
|
|
63
|
+
"cdk8s": "^2.69.48",
|
|
65
64
|
"chalk": "4.1.2",
|
|
66
65
|
"constructs": "^10.4.2",
|
|
67
66
|
"dayjs": "^1.11.13",
|
|
@@ -77,6 +76,8 @@
|
|
|
77
76
|
},
|
|
78
77
|
"devDependencies": {
|
|
79
78
|
"@datreeio/datree-cdk8s": "^1.3.5",
|
|
79
|
+
"@k8ts/instruments": "^0.4.1",
|
|
80
|
+
"@k8ts/metadata": "^0.4.1",
|
|
80
81
|
"@swc/core": "^1.11.11",
|
|
81
82
|
"@swc/jest": "^0.2.37",
|
|
82
83
|
"@types/chalk": "^2.2.4",
|
|
@@ -84,7 +85,6 @@
|
|
|
84
85
|
"@types/js-yaml": "^4",
|
|
85
86
|
"@types/lodash": "^4.17.16",
|
|
86
87
|
"@types/node": "20.9.1",
|
|
87
|
-
"cdk8s": "^2.69.48",
|
|
88
88
|
"cdk8s-cli": "^2.200.7",
|
|
89
89
|
"declare-it": "^2.1.0",
|
|
90
90
|
"jest": "^29.7.0",
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"yamprint": "^0.8.4"
|
|
98
98
|
},
|
|
99
99
|
"peerDependencies": {
|
|
100
|
-
"@k8ts/instruments": "^0.1
|
|
101
|
-
"@k8ts/metadata": "^0.1
|
|
100
|
+
"@k8ts/instruments": "^0.4.1",
|
|
101
|
+
"@k8ts/metadata": "^0.4.1"
|
|
102
102
|
},
|
|
103
103
|
"packageManager": "yarn@4.1.1",
|
|
104
104
|
"engines": {
|
package/src/file/exports.ts
CHANGED
|
@@ -30,11 +30,13 @@ export namespace FileExports {
|
|
|
30
30
|
return new Factory.Namespaced(props.origin.node)
|
|
31
31
|
}
|
|
32
32
|
})
|
|
33
|
-
this.#produced = seq(() => producer(props.origin))
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
this.#produced = seq(() => producer(props.origin))
|
|
34
|
+
.each(x => {
|
|
35
|
+
x.meta.add(k8ts_namespace, {
|
|
36
|
+
"#is-exported": "true"
|
|
37
|
+
})
|
|
36
38
|
})
|
|
37
|
-
|
|
39
|
+
.cache()
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
get __entity__() {
|
|
@@ -53,7 +55,7 @@ export namespace FileExports {
|
|
|
53
55
|
export function make<Scope extends FileOrigin.Scope, Produced extends ManifestResource>(
|
|
54
56
|
props: Props<Scope, Produced>
|
|
55
57
|
): Core & FutureExports<Produced> {
|
|
56
|
-
const core = new Core(props)
|
|
58
|
+
const core = new Core(props as any)
|
|
57
59
|
return FutureExports.make({
|
|
58
60
|
actual: core,
|
|
59
61
|
origin: props.origin.node,
|
package/src/file/factory.ts
CHANGED
|
@@ -2,11 +2,13 @@ import { Origin, auto_register, displayers, type LiveRefable } from "@k8ts/instr
|
|
|
2
2
|
import chalk from "chalk"
|
|
3
3
|
import {
|
|
4
4
|
ConfigMap,
|
|
5
|
+
DataMode,
|
|
5
6
|
Deployment,
|
|
6
7
|
HttpRoute,
|
|
7
8
|
Namespace,
|
|
8
|
-
Persistent,
|
|
9
9
|
PodTemplate,
|
|
10
|
+
Pv,
|
|
11
|
+
Pvc,
|
|
10
12
|
Secret,
|
|
11
13
|
Service
|
|
12
14
|
} from "../resources"
|
|
@@ -31,15 +33,14 @@ export namespace Factory {
|
|
|
31
33
|
}
|
|
32
34
|
@auto_register
|
|
33
35
|
export class Cluster extends Base {
|
|
34
|
-
PersistentVolume<Name extends string, Mode extends
|
|
36
|
+
PersistentVolume<Name extends string, Mode extends DataMode = "Filesystem">(
|
|
35
37
|
name: Name,
|
|
36
|
-
props:
|
|
38
|
+
props: Pv.Props<Mode>
|
|
37
39
|
) {
|
|
38
|
-
return new
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
) as LiveRefable<Persistent.Volume<Mode>, Name>
|
|
40
|
+
return new Pv.Pv(this.origin, this._metaWithName(name), props) as LiveRefable<
|
|
41
|
+
Pv.Pv<Mode>,
|
|
42
|
+
Name
|
|
43
|
+
>
|
|
43
44
|
}
|
|
44
45
|
Namespace<Name extends string>(name: Name, props?: Namespace.Props) {
|
|
45
46
|
return new Namespace.Namespace(
|
|
@@ -52,15 +53,11 @@ export namespace Factory {
|
|
|
52
53
|
|
|
53
54
|
@auto_register
|
|
54
55
|
export class Namespaced extends Base {
|
|
55
|
-
Claim<Mode extends
|
|
56
|
-
name
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.origin,
|
|
61
|
-
this._metaWithName(name),
|
|
62
|
-
mode
|
|
63
|
-
) as LiveRefable<Persistent.Claim<Mode>, Name>
|
|
56
|
+
Claim<Mode extends DataMode, Name extends string>(name: Name, mode: Pvc.Props<Mode>) {
|
|
57
|
+
return new Pvc.Pvc(this.origin, this._metaWithName(name), mode) as LiveRefable<
|
|
58
|
+
Pvc.Pvc<Mode>,
|
|
59
|
+
Name
|
|
60
|
+
>
|
|
64
61
|
}
|
|
65
62
|
ConfigMap<Name extends string>(name: Name, props: ConfigMap.Props) {
|
|
66
63
|
return new ConfigMap.ConfigMap(
|
|
@@ -69,6 +66,16 @@ export namespace Factory {
|
|
|
69
66
|
props
|
|
70
67
|
) as LiveRefable<ConfigMap, Name>
|
|
71
68
|
}
|
|
69
|
+
HttpRoute<Name extends string, Ports extends string>(
|
|
70
|
+
name: Name,
|
|
71
|
+
props: HttpRoute.Props<Ports>
|
|
72
|
+
) {
|
|
73
|
+
return new HttpRoute.HttpRoute(
|
|
74
|
+
this.origin,
|
|
75
|
+
this._metaWithName(name),
|
|
76
|
+
props
|
|
77
|
+
) as LiveRefable<HttpRoute<Ports>, Name>
|
|
78
|
+
}
|
|
72
79
|
Secret<Name extends string>(name: Name, props: Secret.Props) {
|
|
73
80
|
return new Secret.Secret(this.origin, this._metaWithName(name), props) as LiveRefable<
|
|
74
81
|
Secret,
|
|
@@ -85,7 +92,7 @@ export namespace Factory {
|
|
|
85
92
|
>
|
|
86
93
|
}
|
|
87
94
|
|
|
88
|
-
|
|
95
|
+
private PrvDeployment<Name extends string, Ports extends string = never>(
|
|
89
96
|
name: Name,
|
|
90
97
|
props: Deployment.Props<Ports>
|
|
91
98
|
) {
|
|
@@ -96,6 +103,27 @@ export namespace Factory {
|
|
|
96
103
|
) as LiveRefable<Deployment<Ports>, Name>
|
|
97
104
|
}
|
|
98
105
|
|
|
106
|
+
Deployment<Name extends string>(name: Name, props: Deployment.SmallerProps) {
|
|
107
|
+
const builder = this
|
|
108
|
+
return {
|
|
109
|
+
Template(templateProps?: PodTemplate.PodProps) {
|
|
110
|
+
return {
|
|
111
|
+
POD<Ports extends string>(
|
|
112
|
+
producer: PodTemplate.PodContainerProducer<Ports>
|
|
113
|
+
) {
|
|
114
|
+
return builder.PrvDeployment(name, {
|
|
115
|
+
...props,
|
|
116
|
+
template: {
|
|
117
|
+
...templateProps,
|
|
118
|
+
POD: producer
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
99
127
|
DomainRoute<Name extends string, Ports extends string>(
|
|
100
128
|
name: Name,
|
|
101
129
|
props: HttpRoute.Props<Ports>
|
package/src/file/origin.ts
CHANGED
|
@@ -7,6 +7,9 @@ export type FileOrigin<FScope extends FileOrigin.Scope = FileOrigin.Scope> =
|
|
|
7
7
|
export namespace FileOrigin {
|
|
8
8
|
export type Scope = Namespace | "cluster"
|
|
9
9
|
|
|
10
|
+
export interface SmallerProps extends OriginEntityProps {
|
|
11
|
+
meta?: Meta.Input
|
|
12
|
+
}
|
|
10
13
|
export interface Props<FScope extends Scope = Scope> extends OriginEntityProps {
|
|
11
14
|
meta?: Meta.Input
|
|
12
15
|
scope: FScope
|
package/src/index.ts
CHANGED
package/src/node/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Meta, MutableMeta } from "@k8ts/metadata"
|
|
|
3
3
|
import { TopResource } from "./top-resource"
|
|
4
4
|
|
|
5
5
|
export abstract class ManifestResource<Props extends object = object> extends TopResource<Props> {
|
|
6
|
-
protected manifest() {
|
|
6
|
+
protected async manifest() {
|
|
7
7
|
return Builder.get(this).manifest()
|
|
8
8
|
}
|
|
9
9
|
abstract override readonly kind: Kind.Kind
|
|
@@ -1,21 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DataSourceRecord_Binary,
|
|
3
|
+
DataSourceRecord_Text,
|
|
4
|
+
LocalFileSource,
|
|
5
|
+
manifest,
|
|
6
|
+
relations,
|
|
7
|
+
resolveBinary,
|
|
8
|
+
resolveText
|
|
9
|
+
} from "@k8ts/instruments"
|
|
2
10
|
import type { CDK } from "../../_imports"
|
|
3
11
|
import { v1 } from "../../api-versions"
|
|
4
12
|
import { k8ts } from "../../kind-map"
|
|
5
13
|
import { ManifestResource } from "../../node/manifest-resource"
|
|
6
14
|
export type ConfigMap = ConfigMap.ConfigMap
|
|
7
15
|
export namespace ConfigMap {
|
|
16
|
+
export type ConfigMapEntrySource = LocalFileSource | string
|
|
8
17
|
export interface Props {
|
|
9
|
-
data:
|
|
18
|
+
data: DataSourceRecord_Text
|
|
19
|
+
binaryData?: DataSourceRecord_Binary
|
|
10
20
|
}
|
|
11
21
|
|
|
12
22
|
const ident = v1.kind("ConfigMap")
|
|
13
23
|
@k8ts(ident)
|
|
14
24
|
@relations("none")
|
|
15
25
|
@manifest({
|
|
16
|
-
body(self): CDK.KubeConfigMapProps {
|
|
26
|
+
async body(self): Promise<CDK.KubeConfigMapProps> {
|
|
27
|
+
const binaryData = await resolveBinary(self.props.binaryData ?? {})
|
|
28
|
+
const data = await resolveText(self.props.data)
|
|
17
29
|
return {
|
|
18
|
-
data:
|
|
30
|
+
data: data.isEmpty() ? undefined : data.toObject(),
|
|
31
|
+
binaryData: binaryData.isEmpty()
|
|
32
|
+
? undefined
|
|
33
|
+
: binaryData.map(x => Buffer.from(x).toString("base64")).toObject()
|
|
19
34
|
}
|
|
20
35
|
}
|
|
21
36
|
})
|
|
@@ -9,7 +9,8 @@ import { PodTemplate } from "../pod/pod-template"
|
|
|
9
9
|
|
|
10
10
|
export type Deployment<Ports extends string> = Deployment.Deployment<Ports>
|
|
11
11
|
export namespace Deployment {
|
|
12
|
-
export type
|
|
12
|
+
export type SmallerProps = Omit<CDK.DeploymentSpec, "selector" | "template">
|
|
13
|
+
export type Props<Ports extends string> = SmallerProps & {
|
|
13
14
|
template: PodTemplate.Props<Ports>
|
|
14
15
|
}
|
|
15
16
|
|
|
@@ -19,7 +20,7 @@ export namespace Deployment {
|
|
|
19
20
|
kids: s => [s.template]
|
|
20
21
|
})
|
|
21
22
|
@manifest({
|
|
22
|
-
body(self): CDK.KubeDeploymentProps {
|
|
23
|
+
async body(self): Promise<CDK.KubeDeploymentProps> {
|
|
23
24
|
return {
|
|
24
25
|
spec: {
|
|
25
26
|
...omit(self.props, "template"),
|
|
@@ -28,7 +29,7 @@ export namespace Deployment {
|
|
|
28
29
|
app: self.name
|
|
29
30
|
}
|
|
30
31
|
},
|
|
31
|
-
template: self.template["manifest"]()
|
|
32
|
+
template: await self.template["manifest"]()
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -11,7 +11,7 @@ export type HttpRoute<Ports extends string> = HttpRoute.HttpRoute<Ports>
|
|
|
11
11
|
export namespace HttpRoute {
|
|
12
12
|
const gwKind = gateway_v1.kind("Gateway")
|
|
13
13
|
export interface Props<Ports extends string> {
|
|
14
|
-
|
|
14
|
+
gateway: External<typeof gwKind>
|
|
15
15
|
hostname: string
|
|
16
16
|
backend: Service.Port<Ports>
|
|
17
17
|
}
|
|
@@ -20,7 +20,7 @@ export namespace HttpRoute {
|
|
|
20
20
|
@k8ts(kind)
|
|
21
21
|
@relations({
|
|
22
22
|
needs: self => ({
|
|
23
|
-
gateway: self.props.
|
|
23
|
+
gateway: self.props.gateway,
|
|
24
24
|
service: self.props.backend.service
|
|
25
25
|
})
|
|
26
26
|
})
|
|
@@ -28,7 +28,7 @@ export namespace HttpRoute {
|
|
|
28
28
|
body(self): CDK.HttpRouteProps {
|
|
29
29
|
return {
|
|
30
30
|
spec: {
|
|
31
|
-
parentRefs: [self.props.
|
|
31
|
+
parentRefs: [self.props.gateway.ref()],
|
|
32
32
|
hostnames: [self.props.hostname],
|
|
33
33
|
rules: [
|
|
34
34
|
{
|
|
@@ -5,10 +5,10 @@ import { k8ts } from "../../../kind-map"
|
|
|
5
5
|
import { ManifestResource } from "../../../node"
|
|
6
6
|
import { Access } from "../access-mode"
|
|
7
7
|
import type { DataMode } from "../block-mode"
|
|
8
|
-
import
|
|
8
|
+
import { Pv } from "../volume"
|
|
9
9
|
|
|
10
|
-
export type
|
|
11
|
-
export namespace
|
|
10
|
+
export type Pvc<T extends DataMode = DataMode> = Pvc.Pvc<T>
|
|
11
|
+
export namespace Pvc {
|
|
12
12
|
const pvc_ResourcesSpec = ResourcesSpec.make({
|
|
13
13
|
storage: Unit.Data
|
|
14
14
|
})
|
|
@@ -17,7 +17,7 @@ export namespace Claim {
|
|
|
17
17
|
export interface Props<Mode extends DataMode> extends PvcResources {
|
|
18
18
|
accessModes: Access
|
|
19
19
|
mode?: Mode
|
|
20
|
-
bind:
|
|
20
|
+
bind: Pv<Mode>
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const ident = v1.kind("PersistentVolumeClaim")
|
|
@@ -46,7 +46,7 @@ export namespace Claim {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
})
|
|
49
|
-
export class
|
|
49
|
+
export class Pvc<Mode extends DataMode = DataMode> extends ManifestResource<Props<Mode>> {
|
|
50
50
|
kind = ident
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export namespace Persistent {
|
|
6
|
-
export import Claim = Claim_
|
|
7
|
-
export import Volume = Volume_
|
|
8
|
-
export import Access = Access_
|
|
9
|
-
export type DataMode = DataMode_
|
|
10
|
-
}
|
|
1
|
+
export * from "./access-mode"
|
|
2
|
+
export * from "./block-mode"
|
|
3
|
+
export * from "./claim"
|
|
4
|
+
export * from "./volume"
|
|
@@ -8,8 +8,8 @@ import type { DataMode } from "../block-mode"
|
|
|
8
8
|
import { Backend as Backend_ } from "./backend"
|
|
9
9
|
import { parseBackend } from "./parse-backend"
|
|
10
10
|
|
|
11
|
-
export type
|
|
12
|
-
export namespace
|
|
11
|
+
export type Pv<T extends DataMode = DataMode> = Pv.Pv<T>
|
|
12
|
+
export namespace Pv {
|
|
13
13
|
export import Backend = Backend_
|
|
14
14
|
export interface Props<Mode extends DataMode = DataMode> {
|
|
15
15
|
accessModes: Access
|
|
@@ -50,7 +50,7 @@ export namespace Volume {
|
|
|
50
50
|
})
|
|
51
51
|
@k8ts(ident)
|
|
52
52
|
@relations("none")
|
|
53
|
-
export class
|
|
53
|
+
export class Pv<Mode extends DataMode = DataMode> extends ManifestResource<Props<Mode>> {
|
|
54
54
|
declare readonly kind: typeof ident
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -30,9 +30,9 @@ export namespace Container {
|
|
|
30
30
|
export type Mounts = {
|
|
31
31
|
[key: string]: Mount.ContainerDeviceMount | Mount.ContainerVolumeMount
|
|
32
32
|
}
|
|
33
|
-
export interface Props<Ports extends string> {
|
|
33
|
+
export interface Props<Ports extends string = never> {
|
|
34
34
|
image: TaggedImage
|
|
35
|
-
ports
|
|
35
|
+
ports?: InputPortSetRecord<Ports>
|
|
36
36
|
command?: CmdBuilder
|
|
37
37
|
mounts?: Mounts
|
|
38
38
|
env?: InputEnvMapping
|
|
@@ -52,6 +52,7 @@ export namespace Container {
|
|
|
52
52
|
get kind() {
|
|
53
53
|
return this.parent.kind.subkind("Container")
|
|
54
54
|
}
|
|
55
|
+
|
|
55
56
|
get mounts() {
|
|
56
57
|
return Map(this.props.mounts ?? {})
|
|
57
58
|
.mapEntries(([path, mount]) => {
|
|
@@ -81,8 +82,8 @@ export namespace Container {
|
|
|
81
82
|
const { image, ports, command, env, securityContext } = self.props
|
|
82
83
|
const container: CDK.Container = {
|
|
83
84
|
name: self.name,
|
|
84
|
-
image: image.
|
|
85
|
-
ports: toContainerPorts(PortSet.make(ports)).valueSeq().toArray(),
|
|
85
|
+
image: image.toString(),
|
|
86
|
+
ports: ports && toContainerPorts(PortSet.make(ports)).valueSeq().toArray(),
|
|
86
87
|
resources: self._resources()?.toObject(),
|
|
87
88
|
command: command?.toArray(),
|
|
88
89
|
env: toEnvVars(Env(env)).valueSeq().toArray(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { manifest, relations } from "@k8ts/instruments"
|
|
1
|
+
import { manifest, Producer, relations } from "@k8ts/instruments"
|
|
2
2
|
import { seq } from "doddle"
|
|
3
3
|
import { omit } from "lodash"
|
|
4
4
|
import { CDK } from "../../_imports"
|
|
@@ -9,11 +9,13 @@ import { Container } from "./container"
|
|
|
9
9
|
import { Device, Volume } from "./volume"
|
|
10
10
|
export type PodTemplate<Ports extends string> = PodTemplate.PodTemplate<Ports>
|
|
11
11
|
export namespace PodTemplate {
|
|
12
|
-
export type
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export type PodProps = Omit<CDK.PodSpec, "containers" | "initContainers" | "volumes">
|
|
13
|
+
export type PodContainerProducer<Ports extends string> = Producer<
|
|
14
|
+
PodScope,
|
|
15
|
+
Container.Container<Ports>
|
|
16
|
+
>
|
|
17
|
+
export type Props<Ports extends string = never> = PodProps & {
|
|
18
|
+
POD: PodContainerProducer<Ports>
|
|
17
19
|
}
|
|
18
20
|
const ident = apps_v1.kind("PodTemplate")
|
|
19
21
|
@k8ts(ident)
|
|
@@ -2,12 +2,12 @@ import { relations } from "@k8ts/instruments"
|
|
|
2
2
|
import type { CDK } from "../../../_imports"
|
|
3
3
|
import type { ManifestResource } from "../../../node"
|
|
4
4
|
import { SubResource } from "../../../node/sub-resource"
|
|
5
|
-
import {
|
|
5
|
+
import { Pvc } from "../../persistent"
|
|
6
6
|
import { Mount } from "../container/mounts"
|
|
7
7
|
export type Device = Device.PodDevice
|
|
8
8
|
export namespace Device {
|
|
9
9
|
interface PodDevice_Backend_Pvc {
|
|
10
|
-
backend:
|
|
10
|
+
backend: Pvc.Pvc<"Block">
|
|
11
11
|
readOnly?: boolean
|
|
12
12
|
}
|
|
13
13
|
|
|
@@ -39,7 +39,7 @@ export namespace Device {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Mount() {
|
|
43
43
|
return new Mount.ContainerDeviceMount(this)
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -4,13 +4,13 @@ import { relations } from "@k8ts/instruments"
|
|
|
4
4
|
import type { ManifestResource } from "../../../node"
|
|
5
5
|
import { SubResource } from "../../../node/sub-resource"
|
|
6
6
|
import type { ConfigMap } from "../../configmap"
|
|
7
|
-
import
|
|
7
|
+
import { Pvc } from "../../persistent"
|
|
8
8
|
import type { Secret } from "../../secret"
|
|
9
9
|
import { Mount } from "../container/mounts"
|
|
10
10
|
export type Volume<Props extends Volume.Backend = Volume.Backend> = Volume.PodVolume<Props>
|
|
11
11
|
export namespace Volume {
|
|
12
12
|
interface PodVolume_Backend_Pvc {
|
|
13
|
-
backend:
|
|
13
|
+
backend: Pvc.Pvc<"Filesystem">
|
|
14
14
|
readOnly?: boolean
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -30,7 +30,6 @@ export namespace Volume {
|
|
|
30
30
|
})
|
|
31
31
|
})
|
|
32
32
|
export abstract class PodVolume<Props extends Backend = Backend> extends SubResource<Props> {
|
|
33
|
-
private KIND = "Volume" as const
|
|
34
33
|
get kind() {
|
|
35
34
|
return this.parent.kind.subkind("Volume")
|
|
36
35
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { manifest, relations, type InputPortMapping } from "@k8ts/instruments"
|
|
2
|
+
import { Map } from "immutable"
|
|
2
3
|
import { CDK } from "../../_imports"
|
|
3
4
|
import { v1 } from "../../api-versions"
|
|
4
5
|
import { k8ts } from "../../kind-map"
|
|
5
6
|
import { ManifestResource } from "../../node"
|
|
6
7
|
import type { Deployment } from "../deployment/deployment"
|
|
7
8
|
import { toServicePorts } from "../utils/adapters"
|
|
8
|
-
|
|
9
9
|
import { Frontend as Frontend_ } from "./frontend"
|
|
10
10
|
import { Port as Port_ } from "./service-port"
|
|
11
11
|
export type Service<Ports extends string> = Service.Service<Ports>
|
|
@@ -13,7 +13,7 @@ export namespace Service {
|
|
|
13
13
|
export import Port = Port_
|
|
14
14
|
export import Frontend = Frontend_
|
|
15
15
|
export interface Props<Ports extends string> {
|
|
16
|
-
ports: InputPortMapping<Ports
|
|
16
|
+
ports: Partial<InputPortMapping<Ports>>
|
|
17
17
|
backend: Deployment.Deployment<Ports>
|
|
18
18
|
frontend: Frontend
|
|
19
19
|
}
|
|
@@ -31,7 +31,9 @@ export namespace Service {
|
|
|
31
31
|
return {
|
|
32
32
|
spec: {
|
|
33
33
|
ports: toServicePorts(svcPorts).toArray(),
|
|
34
|
-
selector:
|
|
34
|
+
selector: {
|
|
35
|
+
app: self.props.backend.name
|
|
36
|
+
},
|
|
35
37
|
...self.props.frontend
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -42,11 +44,15 @@ export namespace Service {
|
|
|
42
44
|
|
|
43
45
|
get ports() {
|
|
44
46
|
const srcPorts = this.props.backend.ports.pull()
|
|
45
|
-
const
|
|
47
|
+
const knownPorts = Map(this.props.ports)
|
|
48
|
+
.filter(x => x !== undefined)
|
|
49
|
+
.keySeq()
|
|
50
|
+
.toArray() as Ports[]
|
|
51
|
+
const svcPorts = srcPorts.pick(...knownPorts).map(this.props.ports as any)
|
|
46
52
|
return svcPorts
|
|
47
53
|
}
|
|
48
54
|
|
|
49
|
-
|
|
55
|
+
portRef(port: Ports) {
|
|
50
56
|
return new Port.Port(this, port)
|
|
51
57
|
}
|
|
52
58
|
}
|