@cat-factory/eks 0.1.202 → 0.1.204
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/README.md +9 -10
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @cat-factory/eks
|
|
2
2
|
|
|
3
|
-
Opt-in AWS **EKS** backends for cat-factory
|
|
3
|
+
Opt-in AWS **EKS** backends for cat-factory: a runner backend (per-run agent pods) and an
|
|
4
4
|
ephemeral-environment backend (per-PR namespaces), both on an Amazon EKS cluster.
|
|
5
5
|
|
|
6
6
|
## Why this is a thin package
|
|
@@ -9,7 +9,7 @@ An EKS cluster's API server **is** a standard Kubernetes API server, so this pac
|
|
|
9
9
|
the entire native Kubernetes transport/provider** from `@cat-factory/integrations`
|
|
10
10
|
(`KubernetesRunnerTransport`, `KubernetesEnvironmentProvider`, `KubernetesApiClient`) verbatim.
|
|
11
11
|
The only EKS-specific piece is **authentication**: EKS doesn't use a static ServiceAccount
|
|
12
|
-
bearer token
|
|
12
|
+
bearer token; it expects a short-lived IAM token (a SigV4-presigned STS `GetCallerIdentity`
|
|
13
13
|
URL, prefixed `k8s-aws-v1.`, the exact token `aws eks get-token` produces). That token is
|
|
14
14
|
minted here with WebCrypto (`eks-auth.logic.ts`), so the package carries **no runtime AWS SDK
|
|
15
15
|
dependency** and is runtime-neutral. It's injected through the async token seam
|
|
@@ -28,7 +28,7 @@ registries.environmentBackendRegistry.register(eksEnvironmentBackend)
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
A workspace then connects an `eks` runner/environment backend with an `EksRunnerConfig` /
|
|
31
|
-
`EksProvisionConfig` (the Kubernetes config
|
|
31
|
+
`EksProvisionConfig` (the Kubernetes config of apiserver endpoint, CA, namespace, and image, plus
|
|
32
32
|
`region` + `clusterName`), and the AWS credentials (`awsAccessKeyId` / `awsSecretAccessKey` /
|
|
33
33
|
optional `awsSessionToken`) in the write-only secret bundle.
|
|
34
34
|
|
|
@@ -37,7 +37,7 @@ Both facades register the backends by reference (`backend/runtimes/node/src/cont
|
|
|
37
37
|
with the native `kubernetes` backend they extend.
|
|
38
38
|
|
|
39
39
|
> **Runtime reach.** A real EKS cluster's apiserver presents a **private CA**, which only a
|
|
40
|
-
> runtime that can pin a custom CA (Node/local, via `undici`) can verify
|
|
40
|
+
> runtime that can pin a custom CA (Node/local, via `undici`) can verify: the SAME constraint a
|
|
41
41
|
> private-CA `kubernetes` connection already carries. The Worker registers the `eks` kind for
|
|
42
42
|
> symmetry, but a connection to such a cluster is rejected up front at registration when the
|
|
43
43
|
> runtime can't honor the custom CA (`customTlsSupported: false`), so it fails loudly rather than
|
|
@@ -47,16 +47,15 @@ with the native `kubernetes` backend they extend.
|
|
|
47
47
|
|
|
48
48
|
The **runner** backend is a first-class UI citizen: it self-describes its connect form via the
|
|
49
49
|
`RunnerBackendProvider.form` descriptor, so the SPA renders it generically (region / cluster /
|
|
50
|
-
credentials + the shared apiserver fields) with **no** EKS-specific frontend code
|
|
50
|
+
credentials + the shared apiserver fields) with **no** EKS-specific frontend code, the same
|
|
51
51
|
descriptor-driven path the built-in Kubernetes runner backend now uses.
|
|
52
52
|
|
|
53
53
|
The **environment** backend is functional when resolved by kind, but is not yet surfaced as its
|
|
54
54
|
own first-class environment _engine_ in the SPA infra-handler selector (the connect flow would
|
|
55
55
|
lower to `{ kind: 'eks' }` rather than `{ kind: 'kubernetes' }`). That needs a dedicated
|
|
56
|
-
`InfraEngine('eks')` threaded through the contract engine union + `handlerConfigToBackendConfig`
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
[`docs/initiatives/descriptor-driven-infra-forms.md`](../../../docs/initiatives/descriptor-driven-infra-forms.md).
|
|
56
|
+
`InfraEngine('eks')` threaded through the contract engine union + `handlerConfigToBackendConfig` +
|
|
57
|
+
the per-provision-type SPA forms; tracked in
|
|
58
|
+
[`docs/initiatives/descriptor-driven-infra-forms.md`](../../../docs/initiatives/descriptor-driven-infra-forms.md).
|
|
60
59
|
|
|
61
60
|
## Tests
|
|
62
61
|
|
|
@@ -89,4 +88,4 @@ pnpm --filter @cat-factory/eks run test:integration
|
|
|
89
88
|
|
|
90
89
|
The `stsHost` override (`EKS_IT_STS_HOST` → the config's `stsHost`) points the presigned STS
|
|
91
90
|
`GetCallerIdentity` URL at floci instead of real AWS. See `src/test-support/eks-cluster.ts` for the
|
|
92
|
-
full env list and for exactly what floci does
|
|
91
|
+
full env list and for exactly what floci does, and does not, cover at the auth layer.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/eks",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.204",
|
|
4
4
|
"description": "Opt-in AWS EKS runner + environment backends for cat-factory. Reuses the native Kubernetes transport/provider behind a SigV4-presigned STS (IAM) apiserver token.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/contracts": "0.
|
|
28
|
-
"@cat-factory/integrations": "0.
|
|
29
|
-
"@cat-factory/kernel": "0.
|
|
27
|
+
"@cat-factory/contracts": "0.216.0",
|
|
28
|
+
"@cat-factory/integrations": "0.118.1",
|
|
29
|
+
"@cat-factory/kernel": "0.219.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^26.1.2",
|