@highstate/library 0.9.15 → 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/highstate.library.msgpack +0 -0
- package/dist/highstate.manifest.json +5 -0
- package/dist/index.js +1396 -1025
- package/dist/index.js.map +1 -1
- package/package.json +8 -5
- package/src/abbreviations.ts +35 -0
- package/src/apps/dns.ts +0 -2
- package/src/apps/shared.ts +2 -2
- package/src/common.ts +1 -54
- package/src/distributions/index.ts +1 -0
- package/src/distributions/ubuntu.ts +32 -0
- package/src/dns.ts +0 -8
- package/src/files.ts +146 -0
- package/src/git.ts +58 -0
- package/src/index.ts +5 -0
- package/src/k3s.ts +0 -8
- package/src/k8s.ts +21 -36
- package/src/mullvad.ts +0 -4
- package/src/network.ts +34 -9
- package/src/nixos.ts +92 -73
- package/src/obfuscators/shared.ts +15 -35
- package/src/proxmox.ts +129 -8
- package/src/restic.ts +4 -6
- package/src/sops.ts +4 -3
- package/src/ssh.ts +2 -0
- package/src/talos.ts +0 -12
- package/src/wireguard.ts +10 -58
package/package.json
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "@highstate/library",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.16",
|
4
4
|
"type": "module",
|
5
|
+
"highstate": {
|
6
|
+
"type": "library"
|
7
|
+
},
|
5
8
|
"files": [
|
6
9
|
"dist",
|
7
10
|
"src"
|
@@ -16,15 +19,15 @@
|
|
16
19
|
"access": "public"
|
17
20
|
},
|
18
21
|
"scripts": {
|
19
|
-
"build": "highstate build
|
22
|
+
"build": "highstate build"
|
20
23
|
},
|
21
24
|
"dependencies": {
|
22
|
-
"@highstate/contract": "^0.9.
|
25
|
+
"@highstate/contract": "^0.9.16",
|
23
26
|
"@sinclair/typebox": "^0.34.11",
|
24
27
|
"remeda": "^2.21.0"
|
25
28
|
},
|
26
29
|
"devDependencies": {
|
27
|
-
"@highstate/cli": "^0.9.
|
30
|
+
"@highstate/cli": "^0.9.16"
|
28
31
|
},
|
29
|
-
"gitHead": "
|
32
|
+
"gitHead": "458d6f1f9f6d4aec0ba75a2b2c4c01408cb9c8df"
|
30
33
|
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { registerKnownAbbreviations } from "@highstate/contract"
|
2
|
+
|
3
|
+
registerKnownAbbreviations([
|
4
|
+
"ID",
|
5
|
+
"URL",
|
6
|
+
"IP",
|
7
|
+
"IPs",
|
8
|
+
"IPv4",
|
9
|
+
"IPv6",
|
10
|
+
"DNS",
|
11
|
+
"FQDN",
|
12
|
+
"SSH",
|
13
|
+
"WireGuard",
|
14
|
+
"API",
|
15
|
+
"k8s",
|
16
|
+
"TLS",
|
17
|
+
"HTTP",
|
18
|
+
"HTTPS",
|
19
|
+
"TCP",
|
20
|
+
"UDP",
|
21
|
+
"CIDR",
|
22
|
+
"CPU",
|
23
|
+
"RAM",
|
24
|
+
"GPU",
|
25
|
+
"SSD",
|
26
|
+
"HDD",
|
27
|
+
"VM",
|
28
|
+
"CNI",
|
29
|
+
"CSI",
|
30
|
+
"MariaDB",
|
31
|
+
"PostgreSQL",
|
32
|
+
"MongoDB",
|
33
|
+
])
|
34
|
+
|
35
|
+
export const noop = () => {}
|
package/src/apps/dns.ts
CHANGED
package/src/apps/shared.ts
CHANGED
@@ -9,7 +9,7 @@ import {
|
|
9
9
|
persistentVolumeClaimEntity,
|
10
10
|
serviceEntity,
|
11
11
|
} from "../k8s"
|
12
|
-
import {
|
12
|
+
import { repositoryEntity } from "../restic"
|
13
13
|
import { providerEntity } from "../dns"
|
14
14
|
import { l4EndpointEntity } from "../network"
|
15
15
|
|
@@ -58,7 +58,7 @@ const eagerExtraInputDefinitions = {
|
|
58
58
|
entity: accessPointEntity,
|
59
59
|
},
|
60
60
|
resticRepo: {
|
61
|
-
entity:
|
61
|
+
entity: repositoryEntity,
|
62
62
|
required: false,
|
63
63
|
},
|
64
64
|
dnsProviders: {
|
package/src/common.ts
CHANGED
@@ -90,8 +90,6 @@ export const serverPatch = defineUnit({
|
|
90
90
|
* The entry may represent real node endpoint or virtual endpoint (like a load balancer).
|
91
91
|
*
|
92
92
|
* The same server may also be represented by multiple entries (e.g. a node with private and public IP).
|
93
|
-
*
|
94
|
-
* @schema
|
95
93
|
*/
|
96
94
|
endpoints: Type.Default(Type.Array(Type.String()), []),
|
97
95
|
|
@@ -197,57 +195,6 @@ export const script = defineUnit({
|
|
197
195
|
},
|
198
196
|
})
|
199
197
|
|
200
|
-
export const fileMetaEntity = defineEntity({
|
201
|
-
type: "common.file-meta",
|
202
|
-
|
203
|
-
schema: Type.Object({
|
204
|
-
name: Type.String(),
|
205
|
-
size: Type.Number(),
|
206
|
-
mode: Type.Number(),
|
207
|
-
isBinary: Type.Optional(Type.Boolean()),
|
208
|
-
}),
|
209
|
-
|
210
|
-
meta: {
|
211
|
-
color: "#FF5722",
|
212
|
-
description: "Metadata for a file.",
|
213
|
-
},
|
214
|
-
})
|
215
|
-
|
216
|
-
export const fileContentEntity = defineEntity({
|
217
|
-
type: "common.file-content",
|
218
|
-
|
219
|
-
schema: Type.Union([
|
220
|
-
Type.Object({
|
221
|
-
type: Type.Literal("inline"),
|
222
|
-
content: Type.String(),
|
223
|
-
}),
|
224
|
-
Type.Object({
|
225
|
-
type: Type.Literal("remote"),
|
226
|
-
url: Type.String(),
|
227
|
-
}),
|
228
|
-
]),
|
229
|
-
|
230
|
-
meta: {
|
231
|
-
color: "#FF5722",
|
232
|
-
description: "The content of a file.",
|
233
|
-
},
|
234
|
-
})
|
235
|
-
|
236
|
-
export const fileEntity = defineEntity({
|
237
|
-
type: "common.file",
|
238
|
-
|
239
|
-
schema: Type.Object({
|
240
|
-
meta: fileMetaEntity.schema,
|
241
|
-
content: fileContentEntity.schema,
|
242
|
-
}),
|
243
|
-
|
244
|
-
meta: {
|
245
|
-
color: "#FF5722",
|
246
|
-
},
|
247
|
-
})
|
248
|
-
|
249
198
|
export type Server = Static<typeof serverEntity.schema>
|
250
199
|
|
251
|
-
export
|
252
|
-
export type FileMeta = Static<typeof fileMetaEntity.schema>
|
253
|
-
export type FileContent = Static<typeof fileContentEntity.schema>
|
200
|
+
export * from "./files"
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./ubuntu"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { defineUnit, Type } from "@highstate/contract"
|
2
|
+
import { fileEntity } from "../files"
|
3
|
+
|
4
|
+
export const ubuntuVersionSchema = Type.StringEnum(["22.04", "24.04", "24.10", "25.04", "25.10"])
|
5
|
+
export const ubuntuArchitectureSchema = Type.StringEnum(["amd64", "arm64"])
|
6
|
+
|
7
|
+
export const ubuntu = defineUnit({
|
8
|
+
type: "distributions.ubuntu",
|
9
|
+
|
10
|
+
args: {
|
11
|
+
version: Type.Default(ubuntuVersionSchema, "24.04"),
|
12
|
+
architecture: Type.Default(ubuntuArchitectureSchema, "amd64"),
|
13
|
+
},
|
14
|
+
|
15
|
+
outputs: {
|
16
|
+
image: fileEntity,
|
17
|
+
cloudConfig: fileEntity,
|
18
|
+
},
|
19
|
+
|
20
|
+
meta: {
|
21
|
+
displayName: "Ubuntu",
|
22
|
+
description: "Ubuntu distribution with image and cloud-config.",
|
23
|
+
primaryIcon: "mdi:ubuntu",
|
24
|
+
primaryIconColor: "#E95420",
|
25
|
+
category: "Distributions",
|
26
|
+
},
|
27
|
+
|
28
|
+
source: {
|
29
|
+
package: "@highstate/distributions",
|
30
|
+
path: "ubuntu",
|
31
|
+
},
|
32
|
+
})
|
package/src/dns.ts
CHANGED
@@ -25,8 +25,6 @@ export function createArgs<TPrefix extends string = "">(prefix?: TPrefix) {
|
|
25
25
|
* Will be inserted at the beginning of the resulting endpoint list.
|
26
26
|
*
|
27
27
|
* Will throw an error if no matching provider is found.
|
28
|
-
*
|
29
|
-
* @schema
|
30
28
|
*/
|
31
29
|
fqdn: Type.Optional(Type.String()),
|
32
30
|
|
@@ -46,8 +44,6 @@ export function createArgs<TPrefix extends string = "">(prefix?: TPrefix) {
|
|
46
44
|
* - If any public endpoints exist, all public endpoints are selected;
|
47
45
|
* - Otherwise, if any external endpoints exist, all external endpoints are selected;
|
48
46
|
* - If neither exist, all internal endpoints are selected.
|
49
|
-
*
|
50
|
-
* @schema
|
51
47
|
*/
|
52
48
|
endpointFilter: Type.Default(endpointFilterSchema, []),
|
53
49
|
|
@@ -58,8 +54,6 @@ export function createArgs<TPrefix extends string = "">(prefix?: TPrefix) {
|
|
58
54
|
* - `replace`: Replace the existing endpoints with the FQDN. It will ensure that the only the FQDN is used.
|
59
55
|
*
|
60
56
|
* The default is `prepend`.
|
61
|
-
*
|
62
|
-
* @schema
|
63
57
|
*/
|
64
58
|
patchMode: Type.Default(arrayPatchModeSchema, "prepend"),
|
65
59
|
})
|
@@ -70,8 +64,6 @@ export const inputs = {
|
|
70
64
|
* The DNS providers to use to create the DNS records.
|
71
65
|
*
|
72
66
|
* If multiple providers match the domain, all of them will be used and multiple DNS records will be created.
|
73
|
-
*
|
74
|
-
* @schema
|
75
67
|
*/
|
76
68
|
dnsProviders: {
|
77
69
|
entity: providerEntity,
|
package/src/files.ts
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
import type { Static } from "@sinclair/typebox"
|
2
|
+
import {
|
3
|
+
defineEntity,
|
4
|
+
defineUnit,
|
5
|
+
HighstateSignature,
|
6
|
+
Type,
|
7
|
+
fileContentSchema as baseFileContentSchema,
|
8
|
+
fileMetaSchema as baseFileMetaSchema,
|
9
|
+
unitArtifactSchema,
|
10
|
+
} from "@highstate/contract"
|
11
|
+
import { l7EndpointEntity } from "./network"
|
12
|
+
|
13
|
+
export const checksumAlgorithmSchema = Type.StringEnum([
|
14
|
+
"md5",
|
15
|
+
"sha1",
|
16
|
+
"sha256",
|
17
|
+
"sha384",
|
18
|
+
"sha512",
|
19
|
+
])
|
20
|
+
|
21
|
+
export const checksumSchema = Type.Object({
|
22
|
+
algorithm: checksumAlgorithmSchema,
|
23
|
+
value: Type.String(),
|
24
|
+
})
|
25
|
+
|
26
|
+
export const fileContentSchema = Type.Union([
|
27
|
+
baseFileContentSchema,
|
28
|
+
Type.Object({
|
29
|
+
type: Type.Literal("local"),
|
30
|
+
path: Type.String(),
|
31
|
+
}),
|
32
|
+
Type.Object({
|
33
|
+
type: Type.Literal("remote"),
|
34
|
+
endpoint: l7EndpointEntity.schema,
|
35
|
+
checksum: Type.Optional(checksumSchema),
|
36
|
+
}),
|
37
|
+
])
|
38
|
+
|
39
|
+
export const fileEntity = defineEntity({
|
40
|
+
type: "common.file",
|
41
|
+
|
42
|
+
schema: Type.Object({
|
43
|
+
meta: baseFileMetaSchema,
|
44
|
+
content: fileContentSchema,
|
45
|
+
}),
|
46
|
+
|
47
|
+
meta: {
|
48
|
+
color: "#FF5722",
|
49
|
+
},
|
50
|
+
})
|
51
|
+
|
52
|
+
export const folderMetaSchema = Type.Object({
|
53
|
+
name: Type.String(),
|
54
|
+
mode: Type.Optional(Type.Number()),
|
55
|
+
})
|
56
|
+
|
57
|
+
export const folderContentSchema = Type.Recursive(
|
58
|
+
TSelf => {
|
59
|
+
return Type.Union([
|
60
|
+
Type.Object({
|
61
|
+
type: Type.Literal("embedded"),
|
62
|
+
files: Type.Array(fileEntity.schema),
|
63
|
+
folders: Type.Array(
|
64
|
+
Type.Object({
|
65
|
+
meta: folderMetaSchema,
|
66
|
+
content: TSelf,
|
67
|
+
}),
|
68
|
+
),
|
69
|
+
}),
|
70
|
+
Type.Object({
|
71
|
+
type: Type.Literal("artifact"),
|
72
|
+
[HighstateSignature.Artifact]: unitArtifactSchema,
|
73
|
+
}),
|
74
|
+
Type.Object({
|
75
|
+
type: Type.Literal("local"),
|
76
|
+
path: Type.String(),
|
77
|
+
}),
|
78
|
+
Type.Object({
|
79
|
+
type: Type.Literal("remote"),
|
80
|
+
endpoint: l7EndpointEntity.schema,
|
81
|
+
}),
|
82
|
+
])
|
83
|
+
},
|
84
|
+
{ $id: "common.folder.content" },
|
85
|
+
)
|
86
|
+
|
87
|
+
export const folderEntity = defineEntity({
|
88
|
+
type: "common.folder",
|
89
|
+
|
90
|
+
schema: Type.Object({
|
91
|
+
meta: folderMetaSchema,
|
92
|
+
content: folderContentSchema,
|
93
|
+
}),
|
94
|
+
|
95
|
+
meta: {
|
96
|
+
color: "#FF9800",
|
97
|
+
},
|
98
|
+
})
|
99
|
+
|
100
|
+
export const remoteFile = defineUnit({
|
101
|
+
type: "common.remote-file",
|
102
|
+
|
103
|
+
args: {
|
104
|
+
/**
|
105
|
+
* The URL of the remote file.
|
106
|
+
*/
|
107
|
+
url: Type.Optional(Type.String()),
|
108
|
+
},
|
109
|
+
|
110
|
+
inputs: {
|
111
|
+
/**
|
112
|
+
* The L7 endpoint of the remote file.
|
113
|
+
*/
|
114
|
+
endpoint: {
|
115
|
+
entity: l7EndpointEntity,
|
116
|
+
required: false,
|
117
|
+
},
|
118
|
+
},
|
119
|
+
|
120
|
+
outputs: {
|
121
|
+
file: fileEntity,
|
122
|
+
},
|
123
|
+
|
124
|
+
meta: {
|
125
|
+
displayName: "Remote File",
|
126
|
+
description: "References a file from a remote URL.",
|
127
|
+
primaryIcon: "mdi:file-download",
|
128
|
+
category: "Files",
|
129
|
+
},
|
130
|
+
|
131
|
+
source: {
|
132
|
+
package: "@highstate/common",
|
133
|
+
path: "units/remote-file",
|
134
|
+
},
|
135
|
+
})
|
136
|
+
|
137
|
+
export type File = Static<typeof fileEntity.schema>
|
138
|
+
export type FileMeta = Static<typeof baseFileMetaSchema>
|
139
|
+
export type FileContent = Static<typeof fileContentSchema>
|
140
|
+
|
141
|
+
export type Folder = Static<typeof folderEntity.schema>
|
142
|
+
export type FolderMeta = Static<typeof folderMetaSchema>
|
143
|
+
export type FolderContent = Static<typeof folderContentSchema>
|
144
|
+
|
145
|
+
export type Checksum = Static<typeof checksumSchema>
|
146
|
+
export type ChecksumAlgorithm = Static<typeof checksumAlgorithmSchema>
|
package/src/git.ts
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
import { defineUnit, Type } from "@highstate/contract"
|
2
|
+
import { l7EndpointEntity } from "./network"
|
3
|
+
import { folderEntity } from "./files"
|
4
|
+
|
5
|
+
export const remoteRepository = defineUnit({
|
6
|
+
type: "git.remote-repository",
|
7
|
+
|
8
|
+
args: {
|
9
|
+
/**
|
10
|
+
* The URL of the remote repository.
|
11
|
+
*/
|
12
|
+
url: Type.Optional(Type.String()),
|
13
|
+
|
14
|
+
/**
|
15
|
+
* The ref of the remote repository to checkout.
|
16
|
+
*
|
17
|
+
* If not specified, the default branch will be used.
|
18
|
+
*/
|
19
|
+
ref: Type.Optional(Type.String()),
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Whether to include the .git directory in the packed artifact.
|
23
|
+
*
|
24
|
+
* Do not enable this unless you need the full git history.
|
25
|
+
*/
|
26
|
+
includeGit: Type.Default(Type.Boolean(), false),
|
27
|
+
},
|
28
|
+
|
29
|
+
inputs: {
|
30
|
+
/**
|
31
|
+
* The L7 endpoint of the remote repository.
|
32
|
+
*/
|
33
|
+
endpoint: {
|
34
|
+
entity: l7EndpointEntity,
|
35
|
+
required: false,
|
36
|
+
},
|
37
|
+
},
|
38
|
+
|
39
|
+
outputs: {
|
40
|
+
/**
|
41
|
+
* The folder containing the repository content.
|
42
|
+
*/
|
43
|
+
folder: folderEntity,
|
44
|
+
},
|
45
|
+
|
46
|
+
meta: {
|
47
|
+
displayName: "Git Remote Repository",
|
48
|
+
description: "References a remote Git repository.",
|
49
|
+
primaryIcon: "simple-icons:git",
|
50
|
+
primaryIconColor: "#f1502f",
|
51
|
+
category: "Git",
|
52
|
+
},
|
53
|
+
|
54
|
+
source: {
|
55
|
+
package: "@highstate/git",
|
56
|
+
path: "remote-repository",
|
57
|
+
},
|
58
|
+
})
|
package/src/index.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import { noop } from "./abbreviations"
|
2
|
+
noop()
|
3
|
+
|
1
4
|
export * as common from "./common"
|
2
5
|
export * as proxmox from "./proxmox"
|
3
6
|
export * as ssh from "./ssh"
|
@@ -14,5 +17,7 @@ export * as timeweb from "./timeweb"
|
|
14
17
|
export * as nixos from "./nixos"
|
15
18
|
export * as sops from "./sops"
|
16
19
|
export * as obfuscators from "./obfuscators"
|
20
|
+
export * as distributions from "./distributions"
|
17
21
|
export * as network from "./network"
|
22
|
+
export * as git from "./git"
|
18
23
|
export * from "./utils"
|
package/src/k3s.ts
CHANGED
@@ -28,8 +28,6 @@ export const cluster = defineUnit({
|
|
28
28
|
args: {
|
29
29
|
/**
|
30
30
|
* The components to disable in the K3S cluster.
|
31
|
-
*
|
32
|
-
* @schema
|
33
31
|
*/
|
34
32
|
disabledComponents: Type.Default(Type.Array(componentSchema), []),
|
35
33
|
|
@@ -38,8 +36,6 @@ export const cluster = defineUnit({
|
|
38
36
|
*
|
39
37
|
* Setting this to "none" will disable default Flannel CNI, but will not disable network policy controller and kube-proxy.
|
40
38
|
* If needed, you can disable them using `disabledComponents` argument.
|
41
|
-
*
|
42
|
-
* @schema
|
43
39
|
*/
|
44
40
|
cni: Type.Default(cniSchema, "flannel"),
|
45
41
|
|
@@ -47,8 +43,6 @@ export const cluster = defineUnit({
|
|
47
43
|
* The K3S configuration to pass to each server or agent in the cluster.
|
48
44
|
*
|
49
45
|
* See: https://docs.k3s.io/installation/configuration
|
50
|
-
*
|
51
|
-
* @schema
|
52
46
|
*/
|
53
47
|
config: Type.Optional(Type.Record(Type.String(), Type.Any())),
|
54
48
|
|
@@ -56,8 +50,6 @@ export const cluster = defineUnit({
|
|
56
50
|
* The configuration of the registries to use for the K3S cluster.
|
57
51
|
*
|
58
52
|
* See: https://docs.k3s.io/installation/private-registry
|
59
|
-
*
|
60
|
-
* @schema
|
61
53
|
*/
|
62
54
|
registries: Type.Optional(Type.Record(Type.String(), Type.Any())),
|
63
55
|
},
|
package/src/k8s.ts
CHANGED
@@ -30,8 +30,6 @@ export const clusterQuirksSchema = Type.Object({
|
|
30
30
|
* The IP and port of the kube-apiserver available from the cluster.
|
31
31
|
*
|
32
32
|
* Will be used to create fallback network policy in CNIs which does not support allowing access to the kube-apiserver.
|
33
|
-
*
|
34
|
-
* @schema
|
35
33
|
*/
|
36
34
|
fallbackKubeApiAccess: Type.Optional(fallbackKubeApiAccessSchema),
|
37
35
|
|
@@ -41,8 +39,6 @@ export const clusterQuirksSchema = Type.Object({
|
|
41
39
|
* If not provided, the default policy is `host` which assumes just mounting /dev/net/tun from the host.
|
42
40
|
*
|
43
41
|
* For some runtimes, like Talos's one, the /dev/net/tun device is not available in the host, so the plugin policy should be used.
|
44
|
-
*
|
45
|
-
* @schema
|
46
42
|
*/
|
47
43
|
tunDevicePolicy: Type.Optional(tunDevicePolicySchema),
|
48
44
|
|
@@ -50,8 +46,6 @@ export const clusterQuirksSchema = Type.Object({
|
|
50
46
|
* The service type to use for external services.
|
51
47
|
*
|
52
48
|
* If not provided, the default service type is `NodePort` since `LoadBalancer` may not be available.
|
53
|
-
*
|
54
|
-
* @schema
|
55
49
|
*/
|
56
50
|
externalServiceType: Type.Optional(externalServiceTypeSchema),
|
57
51
|
})
|
@@ -61,15 +55,11 @@ export const clusterInfoProperties = {
|
|
61
55
|
* The unique identifier of the cluster.
|
62
56
|
*
|
63
57
|
* Should be defined as a UUID of the `kube-system` namespace which is always present in the cluster.
|
64
|
-
*
|
65
|
-
* @schema
|
66
58
|
*/
|
67
59
|
id: Type.String(),
|
68
60
|
|
69
61
|
/**
|
70
62
|
* The name of the cluster.
|
71
|
-
*
|
72
|
-
* @schema
|
73
63
|
*/
|
74
64
|
name: Type.String(),
|
75
65
|
|
@@ -79,8 +69,6 @@ export const clusterInfoProperties = {
|
|
79
69
|
* Supported values are:
|
80
70
|
* - `cilium`
|
81
71
|
* - `other`
|
82
|
-
*
|
83
|
-
* @schema
|
84
72
|
*/
|
85
73
|
cni: cniSchema,
|
86
74
|
|
@@ -90,8 +78,6 @@ export const clusterInfoProperties = {
|
|
90
78
|
* The entry may represent real node endpoint or virtual endpoint (like a load balancer).
|
91
79
|
*
|
92
80
|
* The same node may also be represented by multiple entries (e.g. a node with private and public IP).
|
93
|
-
*
|
94
|
-
* @schema
|
95
81
|
*/
|
96
82
|
endpoints: Type.Array(l3EndpointEntity.schema),
|
97
83
|
|
@@ -106,22 +92,16 @@ export const clusterInfoProperties = {
|
|
106
92
|
|
107
93
|
/**
|
108
94
|
* The external IPs of the cluster nodes allowed to be used for external access.
|
109
|
-
*
|
110
|
-
* @schema
|
111
95
|
*/
|
112
96
|
externalIps: Type.Array(Type.String()),
|
113
97
|
|
114
98
|
/**
|
115
99
|
* The extra quirks of the cluster to improve compatibility.
|
116
|
-
*
|
117
|
-
* @schema
|
118
100
|
*/
|
119
101
|
quirks: Type.Optional(clusterQuirksSchema),
|
120
102
|
|
121
103
|
/**
|
122
104
|
* The extra metadata to attach to the cluster.
|
123
|
-
*
|
124
|
-
* @schema
|
125
105
|
*/
|
126
106
|
metadata: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
|
127
107
|
} as const
|
@@ -176,8 +156,6 @@ export const scheduleOnMastersPolicyArgs = {
|
|
176
156
|
* - `always`: always schedule workloads on master nodes regardless of the number of workers;
|
177
157
|
* - `when-no-workers`: schedule workloads on master nodes only if there are no workers (default);
|
178
158
|
* - `never`: never schedule workloads on master nodes.
|
179
|
-
*
|
180
|
-
* @schema
|
181
159
|
*/
|
182
160
|
scheduleOnMastersPolicy: Type.Default(scheduleOnMastersPolicySchema, "when-no-workers"),
|
183
161
|
}
|
@@ -214,8 +192,6 @@ export const existingCluster = defineUnit({
|
|
214
192
|
* The list of external IPs of the cluster nodes allowed to be used for external access.
|
215
193
|
*
|
216
194
|
* If not provided, will be automatically detected by querying the cluster nodes.
|
217
|
-
*
|
218
|
-
* @schema
|
219
195
|
*/
|
220
196
|
externalIps: Type.Optional(Type.Array(Type.String())),
|
221
197
|
|
@@ -225,15 +201,11 @@ export const existingCluster = defineUnit({
|
|
225
201
|
* - `always`: always use internal IPs as external IPs;
|
226
202
|
* - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;
|
227
203
|
* - `never`: never use internal IPs as external IPs.
|
228
|
-
*
|
229
|
-
* @schema
|
230
204
|
*/
|
231
205
|
internalIpsPolicy: Type.Default(internalIpsPolicySchema, "public"),
|
232
206
|
|
233
207
|
/**
|
234
208
|
* The extra quirks of the cluster to improve compatibility.
|
235
|
-
*
|
236
|
-
* @schema
|
237
209
|
*/
|
238
210
|
quirks: Type.Optional(clusterQuirksSchema),
|
239
211
|
},
|
@@ -243,8 +215,6 @@ export const existingCluster = defineUnit({
|
|
243
215
|
* The kubeconfig of the cluster to use for connecting to the cluster.
|
244
216
|
*
|
245
217
|
* Will be available for all components using `cluster` output of this unit.
|
246
|
-
*
|
247
|
-
* @schema
|
248
218
|
*/
|
249
219
|
kubeconfig: Type.Record(Type.String(), Type.Any()),
|
250
220
|
},
|
@@ -274,8 +244,6 @@ export const clusterPatch = defineUnit({
|
|
274
244
|
* The entry may represent real node endpoint or virtual endpoint (like a load balancer).
|
275
245
|
*
|
276
246
|
* The same node may also be represented by multiple entries (e.g. a node with private and public IP).
|
277
|
-
*
|
278
|
-
* @schema
|
279
247
|
*/
|
280
248
|
apiEndpoints: Type.Default(Type.Array(Type.String()), []),
|
281
249
|
|
@@ -293,8 +261,6 @@ export const clusterPatch = defineUnit({
|
|
293
261
|
* The entry may represent real node endpoint or virtual endpoint (like a load balancer).
|
294
262
|
*
|
295
263
|
* The same node may also be represented by multiple entries (e.g. a node with private and public IP).
|
296
|
-
*
|
297
|
-
* @schema
|
298
264
|
*/
|
299
265
|
endpoints: Type.Default(Type.Array(Type.String()), []),
|
300
266
|
|
@@ -471,8 +437,6 @@ export const dns01TlsIssuer = defineUnit({
|
|
471
437
|
* The top-level domains to filter the DNS01 challenge for.
|
472
438
|
*
|
473
439
|
* If not provided, will use all domains passed to the DNS providers.
|
474
|
-
*
|
475
|
-
* @schema
|
476
440
|
*/
|
477
441
|
domains: Type.Optional(Type.Array(Type.String())),
|
478
442
|
},
|
@@ -630,6 +594,24 @@ export const cilium = defineUnit({
|
|
630
594
|
},
|
631
595
|
})
|
632
596
|
|
597
|
+
export const monitorWorkerResourceGroupSchema = Type.Object({
|
598
|
+
type: Type.StringEnum(["deployment", "statefulset", "pod", "service"]),
|
599
|
+
namespace: Type.String(),
|
600
|
+
names: Type.Optional(Type.Array(Type.String())),
|
601
|
+
})
|
602
|
+
|
603
|
+
export const monitorWorkerParamsSchema = Type.Object({
|
604
|
+
/**
|
605
|
+
* The ID of the secret containing the kubeconfig of the cluster.
|
606
|
+
*/
|
607
|
+
kubeconfigSecretId: Type.String(),
|
608
|
+
|
609
|
+
/**
|
610
|
+
* The resources to monitor in the cluster.
|
611
|
+
*/
|
612
|
+
resourceGroups: Type.Array(monitorWorkerResourceGroupSchema),
|
613
|
+
})
|
614
|
+
|
633
615
|
export type CNI = Static<typeof cniSchema>
|
634
616
|
export type Cluster = Static<typeof clusterEntity.schema>
|
635
617
|
|
@@ -651,3 +633,6 @@ export type StatefulSet = Static<typeof statefulSetEntity.schema>
|
|
651
633
|
|
652
634
|
export type Interface = Static<typeof interfaceEntity.schema>
|
653
635
|
export type InternalIpsPolicy = Static<typeof internalIpsPolicySchema>
|
636
|
+
|
637
|
+
export type MonitorWorkerParams = Static<typeof monitorWorkerParamsSchema>
|
638
|
+
export type MonitorWorkerResourceGroup = Static<typeof monitorWorkerResourceGroupSchema>
|
package/src/mullvad.ts
CHANGED
@@ -10,8 +10,6 @@ export const peer = defineUnit({
|
|
10
10
|
|
11
11
|
/**
|
12
12
|
* Whether to include Mullvad DNS servers in the peer configuration.
|
13
|
-
*
|
14
|
-
* @schema
|
15
13
|
*/
|
16
14
|
includeDns: Type.Default(Type.Boolean(), true),
|
17
15
|
},
|
@@ -21,8 +19,6 @@ export const peer = defineUnit({
|
|
21
19
|
* The network to use for the WireGuard peer.
|
22
20
|
*
|
23
21
|
* If not provided, the peer will use default network configuration.
|
24
|
-
*
|
25
|
-
* @schema
|
26
22
|
*/
|
27
23
|
network: {
|
28
24
|
entity: networkEntity,
|