@highstate/k3s 0.9.3 → 0.9.5

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.
@@ -1,63 +1,170 @@
1
1
  // src/cluster/index.ts
2
- import { DnsRecord, Server } from "@highstate/common";
2
+ import {
3
+ Command,
4
+ filterEndpoints,
5
+ l3EndpointToString,
6
+ l3ToL4Endpoint,
7
+ l4EndpointToString,
8
+ parseL3Endpoint
9
+ } from "@highstate/common";
3
10
  import { k3s } from "@highstate/library";
4
- import { all, forUnit, output, secret, toPromise } from "@highstate/pulumi";
11
+ import {
12
+ fileFromString,
13
+ forUnit,
14
+ interpolate,
15
+ output,
16
+ secret,
17
+ toPromise
18
+ } from "@highstate/pulumi";
5
19
  import { KubeConfig } from "@kubernetes/client-node";
6
20
  import { core, Provider } from "@pulumi/kubernetes";
7
- import { createK8sTerminal, detectExternalIps } from "@highstate/k8s";
21
+ import { createK8sTerminal } from "@highstate/k8s";
22
+ import { text } from "@highstate/contract";
23
+ import { uniqueBy } from "remeda";
8
24
  var { name, args, inputs, outputs } = forUnit(k3s.cluster);
9
- var server = new Server(inputs.server);
10
- var configFile = server.file({
11
- id: "config",
12
- path: "/etc/rancher/k3s/config.yaml",
13
- content: output(args.config).apply((config) => config ?? {}).apply(JSON.stringify)
14
- });
15
- var k3sCommand = server.command({
16
- id: "k3s",
17
- create: "curl -sfL https://get.k3s.io | sh -",
18
- delete: "/usr/local/bin/k3s-uninstall.sh",
19
- dependsOn: configFile
20
- });
21
- var kubeconfigCommand = server.command({
22
- id: "kubeconfig",
23
- create: "cat /etc/rancher/k3s/k3s.yaml",
24
- logging: "stderr",
25
- dependsOn: k3sCommand
25
+ var { masters, workers } = await toPromise(inputs);
26
+ var seed = masters[0];
27
+ var endpoints = uniqueBy(
28
+ [...workers, ...masters].flatMap(
29
+ (server) => server.endpoints.map((endpoint) => parseL3Endpoint(endpoint))
30
+ ),
31
+ l3EndpointToString
32
+ );
33
+ var apiEndpoints = uniqueBy(
34
+ masters.flatMap((server) => server.endpoints.map((endpoint) => l3ToL4Endpoint(endpoint, 6443))),
35
+ l4EndpointToString
36
+ );
37
+ var configContent = JSON.stringify({
38
+ ...args.config,
39
+ "tls-san": apiEndpoints.map(l4EndpointToString)
26
40
  });
41
+ var seedInstallCommand = createNode(seed, "server", { K3S_CLUSTER_INIT: "true" });
42
+ var tokenCommand = Command.receiveTextFile(
43
+ "token",
44
+ {
45
+ host: seed,
46
+ path: "/var/lib/rancher/k3s/server/node-token"
47
+ },
48
+ { dependsOn: seedInstallCommand }
49
+ );
50
+ var agentTokenCommand = Command.receiveTextFile(
51
+ "agent-token",
52
+ {
53
+ host: seed,
54
+ path: "/var/lib/rancher/k3s/server/agent-token"
55
+ },
56
+ { dependsOn: seedInstallCommand }
57
+ );
58
+ for (const master of masters.slice(1)) {
59
+ createNode(master, "server", {
60
+ K3S_TOKEN: tokenCommand.stdout,
61
+ K3S_URL: `https://${l4EndpointToString(apiEndpoints[0])}`
62
+ });
63
+ }
64
+ for (const worker of workers) {
65
+ createNode(worker, "agent", {
66
+ K3S_TOKEN: agentTokenCommand.stdout,
67
+ K3S_URL: `https://${l4EndpointToString(apiEndpoints[0])}`
68
+ });
69
+ }
70
+ function createNode(server, type, env, dependsOn) {
71
+ const configFileCommand = Command.createTextFile(`config-${server.hostname}`, {
72
+ host: server,
73
+ path: "/etc/rancher/k3s/config.yaml",
74
+ content: configContent
75
+ });
76
+ const registryConfigFileCommand = Command.createTextFile(`registry-config-${server.hostname}`, {
77
+ host: server,
78
+ path: "/etc/rancher/k3s/registries.yaml",
79
+ content: JSON.stringify(args.registries ?? {})
80
+ });
81
+ const envString = output(env).apply((env2) => {
82
+ return Object.entries(env2).map(([key, value]) => `${key}=${value}`).join(" ");
83
+ });
84
+ return new Command(
85
+ `install-${server.hostname}`,
86
+ {
87
+ host: server,
88
+ create: interpolate`curl -sfL https://get.k3s.io | ${envString} sh -s - ${type}`,
89
+ delete: "/usr/local/bin/k3s-uninstall.sh"
90
+ },
91
+ {
92
+ dependsOn: [
93
+ configFileCommand.command,
94
+ registryConfigFileCommand.command,
95
+ ...dependsOn ? [dependsOn] : []
96
+ ]
97
+ }
98
+ );
99
+ }
100
+ var kubeconfigResult = Command.receiveTextFile(
101
+ "kubeconfig",
102
+ {
103
+ host: seed,
104
+ path: "/etc/rancher/k3s/k3s.yaml"
105
+ },
106
+ { dependsOn: seedInstallCommand }
107
+ );
27
108
  var kubeconfig = await toPromise(
28
- all([kubeconfigCommand.stdout, server.endpoint]).apply(([kubeconfig2, endpoint]) => kubeconfig2.replace("127.0.0.1", endpoint))
109
+ kubeconfigResult.stdout.apply(
110
+ (kubeconfig2) => kubeconfig2.replace("127.0.0.1:6443", l4EndpointToString(apiEndpoints[0]))
111
+ )
29
112
  );
30
113
  var kubeConfig = new KubeConfig();
31
114
  kubeConfig.loadFromString(kubeconfig);
32
- var externalIps = await detectExternalIps(kubeConfig, args.internalIpsPolicy);
33
115
  var provider = new Provider(name, { kubeconfig: secret(kubeconfig) });
34
116
  var kubeSystem = core.v1.Namespace.get("kube-system", "kube-system", { provider });
35
- if (args.registerFqdn && args.fqdn) {
36
- DnsRecord.createSet(args.fqdn, {
37
- providers: inputs.dnsProviders,
38
- type: "A",
39
- value: externalIps[0]
40
- });
41
- }
117
+ var kubeconfigFile = fileFromString("config", kubeconfig, "text/yaml", true);
42
118
  var cluster_default = outputs({
43
119
  k8sCluster: {
44
- info: {
45
- id: kubeSystem.metadata.uid,
46
- name,
47
- externalIps,
48
- fqdn: args.fqdn,
49
- kubeApiServerIp: externalIps[0],
50
- kubeApiServerPort: 6443
120
+ id: kubeSystem.metadata.uid,
121
+ name,
122
+ cni: "other",
123
+ externalIps: filterEndpoints(endpoints, ["public", "external"]).filter((endpoint) => endpoint.type !== "hostname").map(l3EndpointToString),
124
+ endpoints,
125
+ apiEndpoints,
126
+ quirks: {
127
+ externalServiceType: "LoadBalancer"
51
128
  },
52
129
  kubeconfig: secret(kubeconfig)
53
130
  },
131
+ endpoints,
132
+ apiEndpoints,
54
133
  $terminals: [createK8sTerminal(kubeconfig)],
55
134
  $status: {
56
- externalIps: {
57
- value: externalIps.join(", "),
58
- complementaryTo: "externalIps"
135
+ endpoints: endpoints.map(l3EndpointToString),
136
+ apiEndpoints: apiEndpoints.map(l4EndpointToString)
137
+ },
138
+ $pages: {
139
+ index: {
140
+ title: "K3s Cluster",
141
+ content: [
142
+ {
143
+ type: "markdown",
144
+ content: text`
145
+ The cluster is up and running.
146
+
147
+ You can access the cluster via the terminal or by using the kubeconfig file.
148
+ `
149
+ },
150
+ {
151
+ type: "file",
152
+ fileMeta: kubeconfigFile.meta
153
+ },
154
+ {
155
+ type: "markdown",
156
+ content: text`
157
+ You can also copy the following content of the kubeconfig file and use it to access the cluster:
158
+
159
+ \`\`\`yaml
160
+ ${kubeconfig}
161
+ \`\`\`
162
+ `
163
+ }
164
+ ]
59
165
  }
60
- }
166
+ },
167
+ $files: [kubeconfigFile]
61
168
  });
62
169
  export {
63
170
  cluster_default as default
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cluster/index.ts"],"sourcesContent":["import { DnsRecord, Server } from \"@highstate/common\"\nimport { k3s } from \"@highstate/library\"\nimport { all, forUnit, output, secret, toPromise } from \"@highstate/pulumi\"\nimport { KubeConfig } from \"@kubernetes/client-node\"\nimport { core, Provider } from \"@pulumi/kubernetes\"\nimport { createK8sTerminal, detectExternalIps } from \"@highstate/k8s\"\n\nconst { name, args, inputs, outputs } = forUnit(k3s.cluster)\n\nconst server = new Server(inputs.server)\n\nconst configFile = server.file({\n id: \"config\",\n path: \"/etc/rancher/k3s/config.yaml\",\n content: output(args.config)\n .apply(config => config ?? {})\n .apply(JSON.stringify),\n})\n\nconst k3sCommand = server.command({\n id: \"k3s\",\n create: \"curl -sfL https://get.k3s.io | sh -\",\n delete: \"/usr/local/bin/k3s-uninstall.sh\",\n dependsOn: configFile,\n})\n\nconst kubeconfigCommand = server.command({\n id: \"kubeconfig\",\n create: \"cat /etc/rancher/k3s/k3s.yaml\",\n logging: \"stderr\",\n dependsOn: k3sCommand,\n})\n\nconst kubeconfig = await toPromise(\n all([kubeconfigCommand.stdout, server.endpoint])\n //\n .apply(([kubeconfig, endpoint]) => kubeconfig.replace(\"127.0.0.1\", endpoint)),\n)\n\nconst kubeConfig = new KubeConfig()\nkubeConfig.loadFromString(kubeconfig)\n\nconst externalIps = await detectExternalIps(kubeConfig, args.internalIpsPolicy)\n\nconst provider = new Provider(name, { kubeconfig: secret(kubeconfig) })\nconst kubeSystem = core.v1.Namespace.get(\"kube-system\", \"kube-system\", { provider })\n\nif (args.registerFqdn && args.fqdn) {\n DnsRecord.createSet(args.fqdn, {\n providers: inputs.dnsProviders,\n type: \"A\",\n value: externalIps[0],\n })\n}\n\nexport default outputs({\n k8sCluster: {\n info: {\n id: kubeSystem.metadata.uid,\n name,\n externalIps,\n fqdn: args.fqdn,\n kubeApiServerIp: externalIps[0],\n kubeApiServerPort: 6443,\n },\n kubeconfig: secret(kubeconfig),\n },\n $terminals: [createK8sTerminal(kubeconfig)],\n $status: {\n externalIps: {\n value: externalIps.join(\", \"),\n complementaryTo: \"externalIps\",\n },\n },\n})\n"],"mappings":";AAAA,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW;AACpB,SAAS,KAAK,SAAS,QAAQ,QAAQ,iBAAiB;AACxD,SAAS,kBAAkB;AAC3B,SAAS,MAAM,gBAAgB;AAC/B,SAAS,mBAAmB,yBAAyB;AAErD,IAAM,EAAE,MAAM,MAAM,QAAQ,QAAQ,IAAI,QAAQ,IAAI,OAAO;AAE3D,IAAM,SAAS,IAAI,OAAO,OAAO,MAAM;AAEvC,IAAM,aAAa,OAAO,KAAK;AAAA,EAC7B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS,OAAO,KAAK,MAAM,EACxB,MAAM,YAAU,UAAU,CAAC,CAAC,EAC5B,MAAM,KAAK,SAAS;AACzB,CAAC;AAED,IAAM,aAAa,OAAO,QAAQ;AAAA,EAChC,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AACb,CAAC;AAED,IAAM,oBAAoB,OAAO,QAAQ;AAAA,EACvC,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AACb,CAAC;AAED,IAAM,aAAa,MAAM;AAAA,EACvB,IAAI,CAAC,kBAAkB,QAAQ,OAAO,QAAQ,CAAC,EAE5C,MAAM,CAAC,CAACA,aAAY,QAAQ,MAAMA,YAAW,QAAQ,aAAa,QAAQ,CAAC;AAChF;AAEA,IAAM,aAAa,IAAI,WAAW;AAClC,WAAW,eAAe,UAAU;AAEpC,IAAM,cAAc,MAAM,kBAAkB,YAAY,KAAK,iBAAiB;AAE9E,IAAM,WAAW,IAAI,SAAS,MAAM,EAAE,YAAY,OAAO,UAAU,EAAE,CAAC;AACtE,IAAM,aAAa,KAAK,GAAG,UAAU,IAAI,eAAe,eAAe,EAAE,SAAS,CAAC;AAEnF,IAAI,KAAK,gBAAgB,KAAK,MAAM;AAClC,YAAU,UAAU,KAAK,MAAM;AAAA,IAC7B,WAAW,OAAO;AAAA,IAClB,MAAM;AAAA,IACN,OAAO,YAAY,CAAC;AAAA,EACtB,CAAC;AACH;AAEA,IAAO,kBAAQ,QAAQ;AAAA,EACrB,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,IAAI,WAAW,SAAS;AAAA,MACxB;AAAA,MACA;AAAA,MACA,MAAM,KAAK;AAAA,MACX,iBAAiB,YAAY,CAAC;AAAA,MAC9B,mBAAmB;AAAA,IACrB;AAAA,IACA,YAAY,OAAO,UAAU;AAAA,EAC/B;AAAA,EACA,YAAY,CAAC,kBAAkB,UAAU,CAAC;AAAA,EAC1C,SAAS;AAAA,IACP,aAAa;AAAA,MACX,OAAO,YAAY,KAAK,IAAI;AAAA,MAC5B,iBAAiB;AAAA,IACnB;AAAA,EACF;AACF,CAAC;","names":["kubeconfig"]}
1
+ {"version":3,"sources":["../../src/cluster/index.ts"],"sourcesContent":["import {\n Command,\n filterEndpoints,\n l3EndpointToString,\n l3ToL4Endpoint,\n l4EndpointToString,\n parseL3Endpoint,\n} from \"@highstate/common\"\nimport { common, k3s } from \"@highstate/library\"\nimport {\n fileFromString,\n forUnit,\n interpolate,\n output,\n Resource,\n secret,\n toPromise,\n type InputMap,\n} from \"@highstate/pulumi\"\nimport { KubeConfig } from \"@kubernetes/client-node\"\nimport { core, Provider } from \"@pulumi/kubernetes\"\nimport { createK8sTerminal } from \"@highstate/k8s\"\nimport { text } from \"@highstate/contract\"\nimport { uniqueBy } from \"remeda\"\n\nconst { name, args, inputs, outputs } = forUnit(k3s.cluster)\n\nconst { masters, workers } = await toPromise(inputs)\n\nconst seed = masters[0]\n\nconst endpoints = uniqueBy(\n [...workers, ...masters].flatMap(server =>\n server.endpoints.map(endpoint => parseL3Endpoint(endpoint)),\n ),\n l3EndpointToString,\n)\n\nconst apiEndpoints = uniqueBy(\n masters.flatMap(server => server.endpoints.map(endpoint => l3ToL4Endpoint(endpoint, 6443))),\n l4EndpointToString,\n)\n\nconst configContent = JSON.stringify({\n ...args.config,\n \"tls-san\": apiEndpoints.map(l4EndpointToString),\n})\n\nconst seedInstallCommand = createNode(seed, \"server\", { K3S_CLUSTER_INIT: \"true\" })\n\nconst tokenCommand = Command.receiveTextFile(\n \"token\",\n {\n host: seed,\n path: \"/var/lib/rancher/k3s/server/node-token\",\n },\n { dependsOn: seedInstallCommand },\n)\n\nconst agentTokenCommand = Command.receiveTextFile(\n \"agent-token\",\n {\n host: seed,\n path: \"/var/lib/rancher/k3s/server/agent-token\",\n },\n { dependsOn: seedInstallCommand },\n)\n\nfor (const master of masters.slice(1)) {\n createNode(master, \"server\", {\n K3S_TOKEN: tokenCommand.stdout,\n K3S_URL: `https://${l4EndpointToString(apiEndpoints[0])}`,\n })\n}\n\nfor (const worker of workers) {\n createNode(worker, \"agent\", {\n K3S_TOKEN: agentTokenCommand.stdout,\n K3S_URL: `https://${l4EndpointToString(apiEndpoints[0])}`,\n })\n}\n\nfunction createNode(\n server: common.Server,\n type: \"server\" | \"agent\",\n env: InputMap<string>,\n dependsOn?: Resource,\n) {\n const configFileCommand = Command.createTextFile(`config-${server.hostname}`, {\n host: server,\n path: \"/etc/rancher/k3s/config.yaml\",\n content: configContent,\n })\n\n const registryConfigFileCommand = Command.createTextFile(`registry-config-${server.hostname}`, {\n host: server,\n path: \"/etc/rancher/k3s/registries.yaml\",\n content: JSON.stringify(args.registries ?? {}),\n })\n\n const envString = output(env).apply(env => {\n return Object.entries(env)\n .map(([key, value]) => `${key}=${value}`)\n .join(\" \")\n })\n\n return new Command(\n `install-${server.hostname}`,\n {\n host: server,\n create: interpolate`curl -sfL https://get.k3s.io | ${envString} sh -s - ${type}`,\n delete: \"/usr/local/bin/k3s-uninstall.sh\",\n },\n {\n dependsOn: [\n configFileCommand.command,\n registryConfigFileCommand.command,\n ...(dependsOn ? [dependsOn] : []),\n ],\n },\n )\n}\n\nconst kubeconfigResult = Command.receiveTextFile(\n \"kubeconfig\",\n {\n host: seed,\n path: \"/etc/rancher/k3s/k3s.yaml\",\n },\n { dependsOn: seedInstallCommand },\n)\n\nconst kubeconfig = await toPromise(\n kubeconfigResult.stdout.apply(kubeconfig =>\n kubeconfig.replace(\"127.0.0.1:6443\", l4EndpointToString(apiEndpoints[0])),\n ),\n)\n\nconst kubeConfig = new KubeConfig()\nkubeConfig.loadFromString(kubeconfig)\n\nconst provider = new Provider(name, { kubeconfig: secret(kubeconfig) })\nconst kubeSystem = core.v1.Namespace.get(\"kube-system\", \"kube-system\", { provider })\n\nconst kubeconfigFile = fileFromString(\"config\", kubeconfig, \"text/yaml\", true)\n\nexport default outputs({\n k8sCluster: {\n id: kubeSystem.metadata.uid,\n name,\n cni: \"other\",\n\n externalIps: filterEndpoints(endpoints, [\"public\", \"external\"])\n .filter(endpoint => endpoint.type !== \"hostname\")\n .map(l3EndpointToString),\n\n endpoints,\n apiEndpoints,\n\n quirks: {\n externalServiceType: \"LoadBalancer\",\n },\n\n kubeconfig: secret(kubeconfig),\n },\n\n endpoints,\n apiEndpoints,\n\n $terminals: [createK8sTerminal(kubeconfig)],\n\n $status: {\n endpoints: endpoints.map(l3EndpointToString),\n apiEndpoints: apiEndpoints.map(l4EndpointToString),\n },\n\n $pages: {\n index: {\n title: \"K3s Cluster\",\n content: [\n {\n type: \"markdown\",\n content: text`\n The cluster is up and running.\n\n You can access the cluster via the terminal or by using the kubeconfig file.\n `,\n },\n {\n type: \"file\",\n fileMeta: kubeconfigFile.meta,\n },\n {\n type: \"markdown\",\n content: text`\n You can also copy the following content of the kubeconfig file and use it to access the cluster:\n\n \\`\\`\\`yaml\n ${kubeconfig}\n \\`\\`\\`\n `,\n },\n ],\n },\n },\n\n $files: [kubeconfigFile],\n})\n"],"mappings":"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","names":["env","kubeconfig"]}
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "sourceHashes": {
3
- "./dist/cluster/index.js": "d1244b384687fb5e91705dde3c4109a84f45c11a0658b90302edde41a5fd2c37"
3
+ "./dist/cluster/index.js": "731733fcd20b132f6431edc7f58efd5a7ddc858b9fa3f6ad1235c8ee1430f418"
4
4
  }
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highstate/k3s",
3
- "version": "0.9.3",
3
+ "version": "0.9.5",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -15,17 +15,18 @@
15
15
  "build": "highstate build"
16
16
  },
17
17
  "dependencies": {
18
- "@highstate/common": "^0.9.3",
19
- "@highstate/contract": "^0.9.3",
20
- "@highstate/k8s": "^0.9.3",
21
- "@highstate/library": "^0.9.3",
22
- "@highstate/pulumi": "^0.9.3",
18
+ "@highstate/common": "^0.9.5",
19
+ "@highstate/contract": "^0.9.5",
20
+ "@highstate/k8s": "^0.9.5",
21
+ "@highstate/library": "^0.9.5",
22
+ "@highstate/pulumi": "^0.9.5",
23
23
  "@kubernetes/client-node": "^1.1.0",
24
24
  "@pulumi/command": "^1.0.2",
25
- "@pulumi/kubernetes": "^4.18.0"
25
+ "@pulumi/kubernetes": "^4.18.0",
26
+ "remeda": "^2.21.0"
26
27
  },
27
28
  "devDependencies": {
28
- "@highstate/cli": "^0.9.3"
29
+ "@highstate/cli": "^0.9.5"
29
30
  },
30
- "gitHead": "cdd2bb1d9001ba4a39f64087eb29af6f50d82bec"
31
+ "gitHead": "93fa1e8b1189a5232055c852fd79a684d8b80444"
31
32
  }