@alchemy.run/kubernetes 2.0.0-beta.85 → 2.0.0-beta.87
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/lib/BuiltinAdapters.d.ts.map +1 -1
- package/lib/BuiltinAdapters.js.map +1 -1
- package/lib/Client.d.ts +7 -7
- package/lib/Client.d.ts.map +1 -1
- package/lib/Client.js.map +1 -1
- package/lib/ClusterAdapter.d.ts +3 -2
- package/lib/ClusterAdapter.d.ts.map +1 -1
- package/lib/ClusterAdapter.js.map +1 -1
- package/lib/Connection.d.ts.map +1 -1
- package/lib/Connection.js.map +1 -1
- package/lib/Deployment.d.ts +55 -2
- package/lib/Deployment.d.ts.map +1 -1
- package/lib/Deployment.js +45 -0
- package/lib/Deployment.js.map +1 -1
- package/lib/HelmChart.d.ts.map +1 -1
- package/lib/HelmChart.js.map +1 -1
- package/lib/Job.d.ts +42 -2
- package/lib/Job.d.ts.map +1 -1
- package/lib/Job.js +33 -0
- package/lib/Job.js.map +1 -1
- package/lib/LocalCluster.d.ts +22 -1
- package/lib/LocalCluster.d.ts.map +1 -1
- package/lib/LocalCluster.js +22 -0
- package/lib/LocalCluster.js.map +1 -1
- package/lib/Manifest.d.ts +33 -1
- package/lib/Manifest.d.ts.map +1 -1
- package/lib/Manifest.js +26 -0
- package/lib/Manifest.js.map +1 -1
- package/lib/Objects.d.ts.map +1 -1
- package/lib/Objects.js.map +1 -1
- package/lib/Providers.d.ts.map +1 -1
- package/lib/Providers.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internal/declared.d.ts.map +1 -1
- package/lib/internal/declared.js.map +1 -1
- package/lib/internal/helm.d.ts.map +1 -1
- package/lib/internal/helm.js.map +1 -1
- package/lib/internal/kind.d.ts.map +1 -1
- package/lib/internal/kind.js.map +1 -1
- package/lib/internal/kubeconfig.d.ts.map +1 -1
- package/lib/internal/kubeconfig.js +16 -7
- package/lib/internal/kubeconfig.js.map +1 -1
- package/lib/internal/registry.d.ts +1 -1
- package/lib/internal/registry.d.ts.map +1 -1
- package/lib/internal/registry.js.map +1 -1
- package/lib/internal/workload.d.ts.map +1 -1
- package/lib/internal/workload.js +4 -0
- package/lib/internal/workload.js.map +1 -1
- package/package.json +9 -9
- package/src/ClusterAdapter.ts +3 -2
- package/src/Deployment.ts +56 -2
- package/src/Job.ts +44 -2
- package/src/LocalCluster.ts +35 -1
- package/src/Manifest.ts +48 -2
- package/src/internal/kubeconfig.ts +16 -7
- package/src/internal/workload.ts +4 -0
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
* path: AKS/GKE/EKS CLI-managed contexts work through their exec plugins
|
|
7
7
|
* (`kubelogin`, `gke-gcloud-auth-plugin`, `aws eks get-token`).
|
|
8
8
|
*/
|
|
9
|
+
import * as Clock from "effect/Clock";
|
|
9
10
|
import * as Config from "effect/Config";
|
|
10
11
|
import * as Data from "effect/Data";
|
|
12
|
+
import * as DateTime from "effect/DateTime";
|
|
11
13
|
import * as Effect from "effect/Effect";
|
|
12
14
|
import * as FileSystem from "effect/FileSystem";
|
|
15
|
+
import * as Option from "effect/Option";
|
|
13
16
|
import * as Path from "effect/Path";
|
|
14
17
|
import * as ChildProcess from "effect/process/ChildProcess";
|
|
15
18
|
import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
|
|
@@ -25,6 +28,8 @@ const decodeBase64 = (value) => Buffer.from(value, "base64").toString("utf8");
|
|
|
25
28
|
const expandHome = Effect.fn(function* (input) {
|
|
26
29
|
if (!input.startsWith("~"))
|
|
27
30
|
return input;
|
|
31
|
+
// `~` is the user's real home directory, not a configured value.
|
|
32
|
+
// oxlint-disable-next-line effecttsgo/process-env-in-effect -- home expansion reads the real process env
|
|
28
33
|
const home = yield* Effect.sync(() => process.env.HOME ?? process.env.USERPROFILE);
|
|
29
34
|
if (!home) {
|
|
30
35
|
return yield* new KubeConfigError({
|
|
@@ -107,7 +112,7 @@ const execCache = new Map();
|
|
|
107
112
|
export const runExecCredential = Effect.fn(function* (options) {
|
|
108
113
|
const cacheKey = JSON.stringify([options.command, options.args ?? [], options.env ?? {}]);
|
|
109
114
|
const cached = execCache.get(cacheKey);
|
|
110
|
-
const now = yield*
|
|
115
|
+
const now = yield* Clock.currentTimeMillis;
|
|
111
116
|
if (cached && cached.expiresAt > now) {
|
|
112
117
|
return cached.credentials;
|
|
113
118
|
}
|
|
@@ -155,12 +160,16 @@ export const runExecCredential = Effect.fn(function* (options) {
|
|
|
155
160
|
}
|
|
156
161
|
: undefined,
|
|
157
162
|
};
|
|
158
|
-
const
|
|
159
|
-
?
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
const declaredExpiry = status.expirationTimestamp
|
|
164
|
+
? DateTime.make(status.expirationTimestamp)
|
|
165
|
+
: Option.none();
|
|
166
|
+
const expiresAt = Option.match(declaredExpiry, {
|
|
167
|
+
// Re-mint 30s before the declared expiry.
|
|
168
|
+
onSome: (expiry) => DateTime.toEpochMillis(expiry) - 30_000,
|
|
169
|
+
// No (valid) declared expiry: cache briefly so bursts of requests share
|
|
170
|
+
// one plugin invocation without holding a stale credential for long.
|
|
171
|
+
onNone: () => now + 60_000,
|
|
172
|
+
});
|
|
164
173
|
execCache.set(cacheKey, { credentials, expiresAt });
|
|
165
174
|
return credentials;
|
|
166
175
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubeconfig.js","
|
|
1
|
+
{"version":3,"file":"kubeconfig.js","sources":["../../src/internal/kubeconfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,mBAAmB,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,gEAAgE;AAChE,MAAM,OAAO,eAAgB,SAAQ,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAGhF;CAAG;AAEL,yEAAyE;AACzE,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CAAC,gCAAgC,CAGxF;CAAG;AA8CL,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAEtF,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,iEAAiE;IACjE,yGAAyG;IACzG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,OAAO,EAAE,kBAAkB,KAAK,iCAAiC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAA4B;IACpF,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,qEAAqE;IACrE,gCAAgC;IAChC,MAAM,SAAS,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAGtD;IACC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CACnD,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,eAAe,CAAC;QAClB,OAAO,EAAE,iCAAiC,UAAU,GAAG;QACvD,KAAK;KACN,CAAC,CACL,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB;QAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,eAAe,CAAC;YAClB,OAAO,EAAE,kCAAkC,UAAU,GAAG;YACxD,KAAK;SACN,CAAC;KACL,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,OAAO,EAAE,eAAe,UAAU,qDAAqD;SACxF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,OAAO,CAAC;IACtF,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,OAAO,EAAE,YAAY,WAAW,8BAA8B,UAAU,GAAG;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1F,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,OAAO,EAAE,YAAY,OAAO,CAAC,OAAO,eAAe,WAAW,mCAAmC,UAAU,GAAG;SAC/G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAEpF,IAAI,wBAAwB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACrE,IAAI,CAAC,wBAAwB,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/C,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,eAAe,CAAC;YAClB,OAAO,EAAE,8CAA8C,MAAM,GAAG;YAChE,KAAK;SACN,CAAC,CACL,CACF,CAAC;QACF,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,wBAAwB;QACxB,qBAAqB,EAAE,OAAO,CAAC,0BAA0B,CAAC;QAC1D,IAAI;KACyB,CAAC;AAClC,CAAC,CAAC,CAAC;AAeH,qEAAqE;AACrE,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiE,CAAC;AAE3F;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAIrD;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;IAC/D,sEAAsE;IACtE,6CAA6C;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;QAC3E,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC,IAAI,CACL,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EACnC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,MAAM,CAAC,GAAG,CACR;QACE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC7D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;KAC9D,EACD,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CACF,EACD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1B,MAAM,CAAC,IAAI,CACT,IAAI,mBAAmB,CAAC;QACtB,OAAO,EAAE,yCAAyC,OAAO,CAAC,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE;KACvF,CAAC,CACH,CACF,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,CAAC,IAAI,mBAAmB,CAAC;YACpC,OAAO,EACL,2BAA2B,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;gBAChF,oBAAoB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAuC,CAAC,MAAM;QAClF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,mBAAmB,CAAC;YACtB,OAAO,EAAE,2BAA2B,OAAO,CAAC,OAAO,2BAA2B;YAC9E,KAAK;SACN,CAAC;KACL,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,KAAK,CAAC,CAAC,IAAI,mBAAmB,CAAC;YACpC,OAAO,EAAE,2BAA2B,OAAO,CAAC,OAAO,2CAA2C;SAC/F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAsB;QACrC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EACR,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,aAAa;YAClD,CAAC,CAAC;gBACE,WAAW,EAAE,MAAM,CAAC,qBAAqB;gBACzC,GAAG,EAAE,MAAM,CAAC,aAAa;aAC1B;YACH,CAAC,CAAC,SAAS;KAChB,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB;QAC/C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAClB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;QAC7C,0CAA0C;QAC1C,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;QAC3D,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,MAAM;KAC3B,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAEpD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAoB;IAC1E,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,CAAC,iBAAiB,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;gBAChB,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,IAAI,CAAC,GAAG;qBACV,MAAM,CACL,CAAC,KAAK,EAA4C,EAAE,CAClD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CACpE;qBACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAC7C;gBACH,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAA8B,CAAC;IAC3D,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,eAAe,CAAC;YAClB,OAAO,EAAE,8BAA8B,SAAS,GAAG;YACnD,KAAK;SACN,CAAC,CACL,CACF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAA8B,CAAC;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,UAAU,EAAE;gBACV,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC;gBACnC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC;aAC3B;SAC0B,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAC/B,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CACnB,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9B,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,eAAe,CAAC;YAClB,OAAO,EAAE,mCAAmC,QAAQ,GAAG;YACvD,KAAK;SACN,CAAC,CACL,CACF,CACF,CACF,CAAC;QACJ,OAAO;YACL,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACrC,GAAG,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;aAC7B;SAC0B,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;QAChC,OAAO,EACL,kEAAkE;YAClE,gDAAgD;KACnD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -36,7 +36,7 @@ export declare const makeConnectionRegistry: Effect.Effect<{
|
|
|
36
36
|
port?: number | undefined;
|
|
37
37
|
isExternal?: boolean | undefined;
|
|
38
38
|
bootstrap: (importPath: string) => string;
|
|
39
|
-
}) => Effect.Effect<string | undefined, import("alchemy/Bundle/Bundle").BundleError | import("effect/PlatformError").PlatformError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
|
|
39
|
+
}) => Effect.Effect<string | undefined, import("@alchemy.run/docker/BuildHash").BuildHashInvalidProps | import("alchemy/Bundle/Bundle").BundleError | import("effect/PlatformError").PlatformError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
|
|
40
40
|
}, never, import("alchemy/AlchemyContext").AlchemyContext | import("@alchemy.run/docker/Docker").Docker | import("effect/Path").Path>;
|
|
41
41
|
/** The publisher returned by {@link makeConnectionRegistry}. */
|
|
42
42
|
export interface ConnectionRegistry extends Effect.Success<typeof makeConnectionRegistry> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAe1D,eAAO,MAAM,sBAAsB;;YAI3B,MAAM;kBACA,iBAAiB;gBACnB,mBAAmB;kBACjB,MAAM;eACT,MAAM,GAAG,SAAS;qBACZ,OAAO,GAAG,SAAS;mBACrB,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM;eAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;iBACjC;YAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;SAAE;;;;;kBAuCjD,UAAU;;;;;oBAOC;QACrB,MAAM,EAAE,mBAAmB,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACjC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;KAC3C;qIAUD,CAAC;AAEH,gEAAgE;AAChE,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,sBAAsB,CAAC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../src/internal/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workload.d.ts","
|
|
1
|
+
{"version":3,"file":"workload.d.ts","sources":["../../src/internal/workload.ts"],"names":[],"mappings":"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"}
|
package/lib/internal/workload.js
CHANGED
|
@@ -254,6 +254,7 @@ import * as Context from "effect/Context";
|
|
|
254
254
|
import * as Config from "effect/Config";
|
|
255
255
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
256
256
|
import * as Effect from "effect/Effect";
|
|
257
|
+
import * as SecureRandom from "effect/crypto/SecureRandom";
|
|
257
258
|
import * as FetchHttpClient from "effect/http/FetchHttpClient";
|
|
258
259
|
import * as Layer from "effect/Layer";
|
|
259
260
|
import * as Logger from "effect/Logger";
|
|
@@ -271,6 +272,7 @@ const layer = makeEntrypointLayer(tag, entrypoint);
|
|
|
271
272
|
const platform = Layer.mergeAll(
|
|
272
273
|
BunServices.layer,
|
|
273
274
|
FetchHttpClient.layer,
|
|
275
|
+
SecureRandom.layerWebCrypto,
|
|
274
276
|
Logger.layer([Logger.consolePretty()]),
|
|
275
277
|
);
|
|
276
278
|
|
|
@@ -340,6 +342,7 @@ import * as Context from "effect/Context";
|
|
|
340
342
|
import * as Config from "effect/Config";
|
|
341
343
|
import * as ConfigProvider from "effect/ConfigProvider";
|
|
342
344
|
import * as Effect from "effect/Effect";
|
|
345
|
+
import * as SecureRandom from "effect/crypto/SecureRandom";
|
|
343
346
|
import * as FetchHttpClient from "effect/http/FetchHttpClient";
|
|
344
347
|
import * as Layer from "effect/Layer";
|
|
345
348
|
import * as Logger from "effect/Logger";
|
|
@@ -353,6 +356,7 @@ const layer = makeEntrypointLayer(tag, entrypoint);
|
|
|
353
356
|
const platform = Layer.mergeAll(
|
|
354
357
|
BunServices.layer,
|
|
355
358
|
FetchHttpClient.layer,
|
|
359
|
+
SecureRandom.layerWebCrypto,
|
|
356
360
|
Logger.layer([Logger.consolePretty()]),
|
|
357
361
|
);
|
|
358
362
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workload.js","
|
|
1
|
+
{"version":3,"file":"workload.js","sources":["../../src/internal/workload.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alchemy.run/kubernetes",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.87",
|
|
4
4
|
"description": "Kubernetes deployments, jobs, Helm charts, manifests and local clusters for Alchemy.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"alchemy",
|
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@alchemy.run/docker": "2.0.0-beta.
|
|
47
|
+
"@alchemy.run/docker": "2.0.0-beta.87",
|
|
48
48
|
"yaml": "^2.9.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@effect/platform-bun": "^4.1.
|
|
51
|
+
"@effect/platform-bun": "^4.1.4",
|
|
52
52
|
"@types/bun": "1.4.3",
|
|
53
53
|
"@types/node": "26.6.5",
|
|
54
|
-
"alchemy": "2.0.0-beta.
|
|
55
|
-
"effect": "^4.1.
|
|
56
|
-
"typescript": "^7.0.
|
|
54
|
+
"alchemy": "2.0.0-beta.87",
|
|
55
|
+
"effect": "^4.1.4",
|
|
56
|
+
"typescript": "^7.1.0-dev.20261105.1"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@effect/platform-bun": "^4.1.
|
|
60
|
-
"alchemy": "2.0.0-beta.
|
|
61
|
-
"effect": "^4.1.
|
|
59
|
+
"@effect/platform-bun": "^4.1.4",
|
|
60
|
+
"alchemy": "2.0.0-beta.87",
|
|
61
|
+
"effect": "^4.1.4"
|
|
62
62
|
},
|
|
63
63
|
"peerDependenciesMeta": {
|
|
64
64
|
"@effect/platform-bun": {
|
package/src/ClusterAdapter.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { InlineDockerfile } from "@alchemy.run/docker/Dockerfile";
|
|
2
2
|
import type { DockerfileBuild } from "@alchemy.run/docker/ImageSource";
|
|
3
3
|
import type * as Bundle from "alchemy/Bundle/Bundle";
|
|
4
|
+
import type { ProviderError } from "alchemy/Provider";
|
|
4
5
|
import type { ResourceBinding } from "alchemy/Resource";
|
|
5
6
|
import type { ResourceContext } from "alchemy/ResourceContext";
|
|
6
7
|
import type { Stack } from "alchemy/Stack";
|
|
@@ -71,7 +72,7 @@ export interface ClusterTransport {
|
|
|
71
72
|
/** Skip TLS verification (self-signed local clusters). */
|
|
72
73
|
insecureSkipTlsVerify?: boolean;
|
|
73
74
|
/** Mint the auth headers for one request. */
|
|
74
|
-
headers: Effect.Effect<Record<string, string>,
|
|
75
|
+
headers: Effect.Effect<Record<string, string>, ProviderError>;
|
|
75
76
|
/** PEM client certificate credentials for mutual TLS. */
|
|
76
77
|
clientCert?: { certificate: string; key: string };
|
|
77
78
|
}
|
|
@@ -286,7 +287,7 @@ export interface ClusterAdapterService {
|
|
|
286
287
|
*/
|
|
287
288
|
readonly connect: (
|
|
288
289
|
connection: Connection,
|
|
289
|
-
) => Effect.Effect<ClusterTransport, ClusterNotFoundError |
|
|
290
|
+
) => Effect.Effect<ClusterTransport, ClusterNotFoundError | ProviderError>;
|
|
290
291
|
/** Workload identity provisioning (Pod Identity on EKS, Workload Identity Federation on GKE). */
|
|
291
292
|
readonly identity?: {
|
|
292
293
|
readonly reconcile: (
|
package/src/Deployment.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BuildCacheOptions } from "@alchemy.run/docker/BuildCache";
|
|
1
2
|
import type { DockerfileBuildOptions } from "@alchemy.run/docker/ImageSource";
|
|
2
3
|
import type * as Bundle from "alchemy/Bundle/Bundle";
|
|
3
4
|
import { isResolved } from "alchemy/Diff";
|
|
@@ -133,6 +134,14 @@ export interface DeploymentPropsBase extends PlatformProps {
|
|
|
133
134
|
* @default the connection's `architecture`, else "amd64"
|
|
134
135
|
*/
|
|
135
136
|
architecture?: "amd64" | "arm64";
|
|
137
|
+
/**
|
|
138
|
+
* Kubernetes `RuntimeClass` the pods run under. On EKS, `isolated-sandbox`
|
|
139
|
+
* runs each pod in its own Nitro Sandbox, a lightweight VM isolated by the
|
|
140
|
+
* AWS Nitro hypervisor, and `confidential-sandbox` also hides the pod's
|
|
141
|
+
* memory from the node. EKS Auto Mode needs no other setup. Any other
|
|
142
|
+
* RuntimeClass on the cluster (gVisor, Kata) works too.
|
|
143
|
+
*/
|
|
144
|
+
runtimeClassName?: "isolated-sandbox" | "confidential-sandbox" | (string & {});
|
|
136
145
|
/**
|
|
137
146
|
* Deep-partial Kubernetes Pod template merged into the synthesized
|
|
138
147
|
* template (objects merge recursively; arrays and primitives replace) —
|
|
@@ -175,8 +184,8 @@ export interface BundledDeploymentProps extends DeploymentPropsBase {
|
|
|
175
184
|
image?: string;
|
|
176
185
|
/** Named export to load from `main`. @default "default" */
|
|
177
186
|
handler?: string;
|
|
178
|
-
/** Bundler configuration for the entrypoint
|
|
179
|
-
build?: Bundle.BundleConfig;
|
|
187
|
+
/** Bundler configuration for the entrypoint, and the image build's layer `cache`. */
|
|
188
|
+
build?: Bundle.BundleConfig & BuildCacheOptions;
|
|
180
189
|
/** Environment Dockerfile (path or inline content). */
|
|
181
190
|
dockerfile?: WorkloadImageSource["dockerfile"];
|
|
182
191
|
/** Build context for a path {@link dockerfile} environment. */
|
|
@@ -411,6 +420,39 @@ export interface DeploymentRuntimeContext extends HostRuntimeContext {
|
|
|
411
420
|
* );
|
|
412
421
|
* ```
|
|
413
422
|
*
|
|
423
|
+
* ### Caching Build Layers
|
|
424
|
+
* Builds reuse the local BuildKit cache of the machine they run on, and
|
|
425
|
+
* nothing but the image is pushed. A builder that has never built the image,
|
|
426
|
+
* such as a fresh CI runner, reruns every step. Set `build.cache: true` to keep
|
|
427
|
+
* every stage's layers at the image repository's `:buildcache` tag, so fresh
|
|
428
|
+
* builders skip unchanged steps. For another backend, pass BuildKit's own
|
|
429
|
+
* `--cache-from` / `--cache-to` values as `from` and `to`.
|
|
430
|
+
*
|
|
431
|
+
* **Example:** Cache layers in the image repository
|
|
432
|
+
* ```typescript
|
|
433
|
+
* const api = yield* Kubernetes.Deployment("Api", {
|
|
434
|
+
* cluster,
|
|
435
|
+
* context: "./api",
|
|
436
|
+
* port: 8080,
|
|
437
|
+
* build: { cache: true },
|
|
438
|
+
* });
|
|
439
|
+
* ```
|
|
440
|
+
*
|
|
441
|
+
* **Example:** Cache layers in GitHub Actions
|
|
442
|
+
* ```typescript
|
|
443
|
+
* const api = yield* Kubernetes.Deployment("Api", {
|
|
444
|
+
* cluster,
|
|
445
|
+
* context: "./api",
|
|
446
|
+
* port: 8080,
|
|
447
|
+
* build: {
|
|
448
|
+
* cache: {
|
|
449
|
+
* from: ["type=gha,scope=api"],
|
|
450
|
+
* to: ["type=gha,scope=api,mode=max"],
|
|
451
|
+
* },
|
|
452
|
+
* },
|
|
453
|
+
* });
|
|
454
|
+
* ```
|
|
455
|
+
*
|
|
414
456
|
* ### Bundling & Tree-shaking
|
|
415
457
|
* `main` is bundled with rolldown at deploy time. Unused code is
|
|
416
458
|
* tree-shaken. `effect`, alchemy, and `@distilled.cloud` are marked
|
|
@@ -436,6 +478,17 @@ export interface DeploymentRuntimeContext extends HostRuntimeContext {
|
|
|
436
478
|
* }
|
|
437
479
|
* ```
|
|
438
480
|
*
|
|
481
|
+
* ### Isolate pods in Nitro Sandboxes
|
|
482
|
+
* **Example:** Run each pod in its own VM on EKS
|
|
483
|
+
* ```typescript
|
|
484
|
+
* const agent = yield* Kubernetes.Deployment("Agent", {
|
|
485
|
+
* cluster,
|
|
486
|
+
* main: import.meta.url,
|
|
487
|
+
* port: 3000,
|
|
488
|
+
* runtimeClassName: "isolated-sandbox",
|
|
489
|
+
* });
|
|
490
|
+
* ```
|
|
491
|
+
*
|
|
439
492
|
* ### Kubernetes Escape Hatch
|
|
440
493
|
* **Example:** Tune the synthesized pod template
|
|
441
494
|
* ```typescript
|
|
@@ -737,6 +790,7 @@ export const DeploymentProvider = () =>
|
|
|
737
790
|
metadata: { labels },
|
|
738
791
|
spec: {
|
|
739
792
|
serviceAccountName,
|
|
793
|
+
...(news.runtimeClassName ? { runtimeClassName: news.runtimeClassName } : {}),
|
|
740
794
|
containers: [
|
|
741
795
|
{
|
|
742
796
|
name: baseName,
|
package/src/Job.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BuildCacheOptions } from "@alchemy.run/docker/BuildCache";
|
|
1
2
|
import type { DockerfileBuildOptions } from "@alchemy.run/docker/ImageSource";
|
|
2
3
|
import type * as Bundle from "alchemy/Bundle/Bundle";
|
|
3
4
|
import { isResolved } from "alchemy/Diff";
|
|
@@ -114,6 +115,14 @@ export interface JobPropsBase extends PlatformProps {
|
|
|
114
115
|
* @default the connection's `architecture`, else "amd64"
|
|
115
116
|
*/
|
|
116
117
|
architecture?: "amd64" | "arm64";
|
|
118
|
+
/**
|
|
119
|
+
* Kubernetes `RuntimeClass` the pods run under. On EKS, `isolated-sandbox`
|
|
120
|
+
* runs each pod in its own Nitro Sandbox, a lightweight VM isolated by the
|
|
121
|
+
* AWS Nitro hypervisor, and `confidential-sandbox` also hides the pod's
|
|
122
|
+
* memory from the node. EKS Auto Mode needs no other setup. Any other
|
|
123
|
+
* RuntimeClass on the cluster (gVisor, Kata) works too.
|
|
124
|
+
*/
|
|
125
|
+
runtimeClassName?: "isolated-sandbox" | "confidential-sandbox" | (string & {});
|
|
117
126
|
/**
|
|
118
127
|
* Deep-partial Kubernetes Pod template merged into the synthesized
|
|
119
128
|
* template (objects merge recursively; arrays and primitives replace) —
|
|
@@ -156,8 +165,8 @@ export interface BundledJobProps extends JobPropsBase {
|
|
|
156
165
|
image?: string;
|
|
157
166
|
/** Named export to load from `main`. @default "default" */
|
|
158
167
|
handler?: string;
|
|
159
|
-
/** Bundler configuration for the entrypoint
|
|
160
|
-
build?: Bundle.BundleConfig;
|
|
168
|
+
/** Bundler configuration for the entrypoint, and the image build's layer `cache`. */
|
|
169
|
+
build?: Bundle.BundleConfig & BuildCacheOptions;
|
|
161
170
|
/** Environment Dockerfile (path or inline content). */
|
|
162
171
|
dockerfile?: WorkloadImageSource["dockerfile"];
|
|
163
172
|
/** Build context for a path {@link dockerfile} environment. */
|
|
@@ -337,6 +346,37 @@ export interface JobRuntimeContext extends HostRuntimeContext {
|
|
|
337
346
|
* );
|
|
338
347
|
* ```
|
|
339
348
|
*
|
|
349
|
+
* ### Caching Build Layers
|
|
350
|
+
* Builds reuse the local BuildKit cache of the machine they run on, and
|
|
351
|
+
* nothing but the image is pushed. A builder that has never built the image,
|
|
352
|
+
* such as a fresh CI runner, reruns every step. Set `build.cache: true` to keep
|
|
353
|
+
* every stage's layers at the image repository's `:buildcache` tag, so fresh
|
|
354
|
+
* builders skip unchanged steps. For another backend, pass BuildKit's own
|
|
355
|
+
* `--cache-from` / `--cache-to` values as `from` and `to`.
|
|
356
|
+
*
|
|
357
|
+
* **Example:** Cache layers in the image repository
|
|
358
|
+
* ```typescript
|
|
359
|
+
* const migrate = yield* Kubernetes.Job("Migrate", {
|
|
360
|
+
* cluster,
|
|
361
|
+
* context: "./migrate",
|
|
362
|
+
* build: { cache: true },
|
|
363
|
+
* });
|
|
364
|
+
* ```
|
|
365
|
+
*
|
|
366
|
+
* **Example:** Cache layers in GitHub Actions
|
|
367
|
+
* ```typescript
|
|
368
|
+
* const migrate = yield* Kubernetes.Job("Migrate", {
|
|
369
|
+
* cluster,
|
|
370
|
+
* context: "./migrate",
|
|
371
|
+
* build: {
|
|
372
|
+
* cache: {
|
|
373
|
+
* from: ["type=gha,scope=migrate"],
|
|
374
|
+
* to: ["type=gha,scope=migrate,mode=max"],
|
|
375
|
+
* },
|
|
376
|
+
* },
|
|
377
|
+
* });
|
|
378
|
+
* ```
|
|
379
|
+
*
|
|
340
380
|
* ### Bundling & Tree-shaking
|
|
341
381
|
* `main` is bundled with rolldown at deploy time. Unused code is
|
|
342
382
|
* tree-shaken. `effect`, alchemy, and `@distilled.cloud` are marked
|
|
@@ -396,6 +436,7 @@ export const Job: Platform<Job, JobServices, JobShape, JobRuntimeContext> = Plat
|
|
|
396
436
|
env[key] = output.pipe(Output.map(packEnvValue));
|
|
397
437
|
return key;
|
|
398
438
|
}),
|
|
439
|
+
// oxlint-disable-next-line effecttsgo/process-env-in-effect -- runtime ctx.get must read raw env, never Config (see unpackEnvValue)
|
|
399
440
|
get: <T>(key: string) => Effect.sync(() => unpackEnvValue<T>(process.env[key]) as T),
|
|
400
441
|
run: (effect: Effect.Effect<void, never, any>) =>
|
|
401
442
|
Effect.sync(() => {
|
|
@@ -590,6 +631,7 @@ export const JobProvider = () =>
|
|
|
590
631
|
metadata: { labels },
|
|
591
632
|
spec: {
|
|
592
633
|
serviceAccountName,
|
|
634
|
+
...(news.runtimeClassName ? { runtimeClassName: news.runtimeClassName } : {}),
|
|
593
635
|
restartPolicy: news.restartPolicy ?? "Never",
|
|
594
636
|
containers: [
|
|
595
637
|
{
|
package/src/LocalCluster.ts
CHANGED
|
@@ -178,9 +178,21 @@ export interface LocalCluster extends Resource<
|
|
|
178
178
|
connection: Connection;
|
|
179
179
|
},
|
|
180
180
|
{},
|
|
181
|
-
Providers
|
|
181
|
+
Providers,
|
|
182
|
+
LocalClusterLookup
|
|
182
183
|
> {}
|
|
183
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Props for {@link LocalCluster.lookup}: find a kind cluster this
|
|
187
|
+
* stack doesn't manage by its name.
|
|
188
|
+
*/
|
|
189
|
+
export interface LocalClusterLookup {
|
|
190
|
+
/** kind cluster name. */
|
|
191
|
+
name: string;
|
|
192
|
+
/** Kubeconfig file the cluster's context is in. */
|
|
193
|
+
kubeconfig?: string;
|
|
194
|
+
}
|
|
195
|
+
|
|
184
196
|
/**
|
|
185
197
|
* A Kubernetes cluster on your machine, for trying Alchemy's Kubernetes
|
|
186
198
|
* resources and developing against them without a hosted cluster.
|
|
@@ -252,6 +264,17 @@ export interface LocalCluster extends Resource<
|
|
|
252
264
|
* });
|
|
253
265
|
* ```
|
|
254
266
|
*
|
|
267
|
+
* ### Looking up an existing cluster
|
|
268
|
+
* `LocalCluster.lookup` references a kind cluster Alchemy doesn't manage (applied with
|
|
269
|
+
* `kubectl`, Helm or another stack). It is read during plan/deploy, never
|
|
270
|
+
* applied, updated or deleted.
|
|
271
|
+
*
|
|
272
|
+
* **Example:** Apply to an existing kind cluster
|
|
273
|
+
* ```typescript
|
|
274
|
+
* const cluster = Kubernetes.LocalCluster.lookup({ name: "dev" });
|
|
275
|
+
* yield* Kubernetes.Manifest("Settings", { cluster, manifest });
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
255
278
|
* @resource
|
|
256
279
|
* @product LocalCluster
|
|
257
280
|
*/
|
|
@@ -559,6 +582,17 @@ export const LocalClusterProvider = () =>
|
|
|
559
582
|
return { action: "replace", deleteFirst: true } as const;
|
|
560
583
|
}
|
|
561
584
|
}),
|
|
585
|
+
lookup: Effect.fn(function* ({ name, kubeconfig }) {
|
|
586
|
+
if (!(yield* clusterExists(name))) return undefined;
|
|
587
|
+
const registryInfo = yield* inspectRegistry(`${name}-registry`);
|
|
588
|
+
return toAttributes({
|
|
589
|
+
name,
|
|
590
|
+
kubeconfig,
|
|
591
|
+
registryPort: registryHostPort(registryInfo) ?? DEFAULT_REGISTRY_PORT,
|
|
592
|
+
architecture: yield* hostArchitecture,
|
|
593
|
+
});
|
|
594
|
+
}),
|
|
595
|
+
|
|
562
596
|
read: Effect.fn(function* ({ id, olds, output, previous }) {
|
|
563
597
|
const name = yield* clusterName(id, olds, output);
|
|
564
598
|
if (!(yield* clusterExists(name))) return undefined;
|
package/src/Manifest.ts
CHANGED
|
@@ -91,9 +91,27 @@ export interface Manifest extends Resource<
|
|
|
91
91
|
observedHash?: string;
|
|
92
92
|
},
|
|
93
93
|
{},
|
|
94
|
-
Providers
|
|
94
|
+
Providers,
|
|
95
|
+
ManifestLookup
|
|
95
96
|
> {}
|
|
96
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Props for {@link Manifest.lookup}: find an object this stack
|
|
100
|
+
* doesn't manage by its cluster, kind and name.
|
|
101
|
+
*/
|
|
102
|
+
export interface ManifestLookup {
|
|
103
|
+
/** The cluster the object lives in. */
|
|
104
|
+
cluster: ClusterLike;
|
|
105
|
+
/** API version, e.g. `apps/v1`. */
|
|
106
|
+
apiVersion: string;
|
|
107
|
+
/** Object kind, e.g. `Deployment`. */
|
|
108
|
+
kind: string;
|
|
109
|
+
/** Object name. */
|
|
110
|
+
name: string;
|
|
111
|
+
/** Namespace, for namespaced kinds. */
|
|
112
|
+
namespace?: string;
|
|
113
|
+
}
|
|
114
|
+
|
|
97
115
|
/**
|
|
98
116
|
* Applies a raw Kubernetes manifest onto any cluster via server-side
|
|
99
117
|
* apply.
|
|
@@ -167,6 +185,22 @@ export interface Manifest extends Resource<
|
|
|
167
185
|
* });
|
|
168
186
|
* ```
|
|
169
187
|
*
|
|
188
|
+
* ### Looking up an existing object
|
|
189
|
+
* `Manifest.lookup` references an object Alchemy doesn't manage (applied with
|
|
190
|
+
* `kubectl`, Helm or another stack). It is read during plan/deploy, never
|
|
191
|
+
* applied, updated or deleted.
|
|
192
|
+
*
|
|
193
|
+
* **Example:** Reference an existing ConfigMap
|
|
194
|
+
* ```typescript
|
|
195
|
+
* const settings = Kubernetes.Manifest.lookup({
|
|
196
|
+
* cluster,
|
|
197
|
+
* apiVersion: "v1",
|
|
198
|
+
* kind: "ConfigMap",
|
|
199
|
+
* name: "app-settings",
|
|
200
|
+
* namespace: "default",
|
|
201
|
+
* });
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
170
204
|
* @resource
|
|
171
205
|
* @product Manifest
|
|
172
206
|
*/
|
|
@@ -176,7 +210,7 @@ export const Manifest = Resource<Manifest>("Kubernetes.Manifest", {
|
|
|
176
210
|
|
|
177
211
|
const toObjectDefinition = (
|
|
178
212
|
manifest: KubernetesManifest,
|
|
179
|
-
): Effect.Effect<KubernetesObjectDefinition,
|
|
213
|
+
): Effect.Effect<KubernetesObjectDefinition, ManifestInvalidProps> => {
|
|
180
214
|
const name = manifest.metadata?.name;
|
|
181
215
|
if (!name) {
|
|
182
216
|
return Effect.fail(
|
|
@@ -216,6 +250,18 @@ export const ManifestProvider = () =>
|
|
|
216
250
|
return { action: "replace" } as const;
|
|
217
251
|
}
|
|
218
252
|
}),
|
|
253
|
+
lookup: Effect.fn(function* ({ cluster, apiVersion, kind, name, namespace }) {
|
|
254
|
+
const connection = toConnection(cluster);
|
|
255
|
+
const ref: KubernetesObjectRef = { apiVersion, kind, name, namespace };
|
|
256
|
+
const transport = yield* connectCluster(connection);
|
|
257
|
+
const observed = yield* readObject({ transport, object: ref }).pipe(
|
|
258
|
+
Effect.catchTag("KubernetesNotFound", () => Effect.undefined),
|
|
259
|
+
);
|
|
260
|
+
if (!observed) return undefined;
|
|
261
|
+
const uid = (observed as { metadata?: { uid?: string } }).metadata?.uid;
|
|
262
|
+
return { connection, apiVersion, kind, name, namespace, ref, uid };
|
|
263
|
+
}),
|
|
264
|
+
|
|
219
265
|
read: Effect.fn(function* ({ output, olds }) {
|
|
220
266
|
if (!output) return undefined;
|
|
221
267
|
const connection = connectionOfOutput(output);
|