typekro 0.33.5 → 0.33.6
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/.tsbuildinfo +1 -1
- package/dist/core/aspects/apply.d.ts.map +1 -1
- package/dist/core/aspects/apply.js +3 -0
- package/dist/core/aspects/apply.js.map +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +34 -1
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts +1 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +51 -18
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/metadata/resource-metadata.d.ts +9 -0
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
- package/dist/core/metadata/resource-metadata.js.map +1 -1
- package/dist/factories/nats/compositions/index.d.ts +1 -0
- package/dist/factories/nats/compositions/index.d.ts.map +1 -1
- package/dist/factories/nats/compositions/index.js +1 -0
- package/dist/factories/nats/compositions/index.js.map +1 -1
- package/dist/factories/nats/compositions/nack-controller-bootstrap.d.ts +44 -0
- package/dist/factories/nats/compositions/nack-controller-bootstrap.d.ts.map +1 -0
- package/dist/factories/nats/compositions/nack-controller-bootstrap.js +157 -0
- package/dist/factories/nats/compositions/nack-controller-bootstrap.js.map +1 -0
- package/dist/factories/nats/compositions/nack-controller-migration.d.ts +18 -0
- package/dist/factories/nats/compositions/nack-controller-migration.d.ts.map +1 -0
- package/dist/factories/nats/compositions/nack-controller-migration.js +126 -0
- package/dist/factories/nats/compositions/nack-controller-migration.js.map +1 -0
- package/dist/factories/nats/compositions/nats-bootstrap.d.ts +31 -1
- package/dist/factories/nats/compositions/nats-bootstrap.d.ts.map +1 -1
- package/dist/factories/nats/compositions/nats-bootstrap.js +186 -119
- package/dist/factories/nats/compositions/nats-bootstrap.js.map +1 -1
- package/dist/factories/nats/resources/helm.d.ts +1 -0
- package/dist/factories/nats/resources/helm.d.ts.map +1 -1
- package/dist/factories/nats/resources/helm.js +1 -0
- package/dist/factories/nats/resources/helm.js.map +1 -1
- package/dist/factories/nats/types.d.ts +46 -0
- package/dist/factories/nats/types.d.ts.map +1 -1
- package/dist/factories/nats/types.js +30 -0
- package/dist/factories/nats/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../../../src/core/metadata/resource-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../../../src/core/metadata/resource-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Own the single cluster-wide NACK controller used by NATS installations.
|
|
3
|
+
*
|
|
4
|
+
* The official chart's non-namespaced mode creates fixed-name ClusterRoles and
|
|
5
|
+
* ClusterRoleBindings. Installing the chart once per NATS cluster makes those
|
|
6
|
+
* resources cross-instance shared state: deleting one release can remove RBAC
|
|
7
|
+
* from another controller. This composition gives that state one explicit
|
|
8
|
+
* lifecycle owner. `natsBootstrap` consumes it through `singleton(...)`.
|
|
9
|
+
*
|
|
10
|
+
* The controller intentionally omits a default NATS URL, selecting NACK's
|
|
11
|
+
* `-crd-connect` mode. Each Stream, Consumer, or Account then identifies its
|
|
12
|
+
* own NATS system through its typed connection fields, allowing one controller
|
|
13
|
+
* to reconcile multiple NATS systems safely.
|
|
14
|
+
*/
|
|
15
|
+
export declare const nackControllerBootstrap: import("../../../index.js").CallableComposition<{
|
|
16
|
+
name: string;
|
|
17
|
+
namespace: string;
|
|
18
|
+
namespaceOwnership?: "external" | "owned";
|
|
19
|
+
version?: string;
|
|
20
|
+
repositoryName?: string;
|
|
21
|
+
repositoryUrl?: string;
|
|
22
|
+
values?: Record<string, unknown>;
|
|
23
|
+
}, {
|
|
24
|
+
ready: boolean;
|
|
25
|
+
failed: boolean;
|
|
26
|
+
phase: "Ready" | "Failed" | "Installing";
|
|
27
|
+
version: string;
|
|
28
|
+
}>;
|
|
29
|
+
/** Explicit lifecycle alias for the cluster-wide NACK owner. */
|
|
30
|
+
export declare const nackControllerInstallation: import("../../../index.js").CallableComposition<{
|
|
31
|
+
name: string;
|
|
32
|
+
namespace: string;
|
|
33
|
+
namespaceOwnership?: "external" | "owned";
|
|
34
|
+
version?: string;
|
|
35
|
+
repositoryName?: string;
|
|
36
|
+
repositoryUrl?: string;
|
|
37
|
+
values?: Record<string, unknown>;
|
|
38
|
+
}, {
|
|
39
|
+
ready: boolean;
|
|
40
|
+
failed: boolean;
|
|
41
|
+
phase: "Ready" | "Failed" | "Installing";
|
|
42
|
+
version: string;
|
|
43
|
+
}>;
|
|
44
|
+
//# sourceMappingURL=nack-controller-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nack-controller-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nack-controller-bootstrap.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;EA0FnC,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;EAA0B,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { mergeValuesExpression } from '../../../core/aspects/values-merge.js';
|
|
2
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
3
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
4
|
+
import { isKubernetesRef } from '../../../utils/type-guards.js';
|
|
5
|
+
import { helmReleaseConditionSummary } from '../../helm/status.js';
|
|
6
|
+
import { namespace } from '../../kubernetes/core/namespace.js';
|
|
7
|
+
import { DEFAULT_NACK_REPOSITORY_NAME, DEFAULT_NACK_VERSION, DEFAULT_NATS_REPOSITORY_URL, natsHelmRelease, natsHelmRepository, } from '../resources/helm.js';
|
|
8
|
+
import { NackControllerBootstrapConfigSchema, NackControllerBootstrapStatusSchema, } from '../types.js';
|
|
9
|
+
const NACK_VALUES_VALIDATION = '(!has(self.jetstream) || (' +
|
|
10
|
+
'(!has(self.jetstream.nats) || size(self.jetstream.nats) == 0) && ' +
|
|
11
|
+
'(!has(self.jetstream.tls) || size(self.jetstream.tls) == 0) && ' +
|
|
12
|
+
'(!has(self.jetstream.additionalArgs) || self.jetstream.additionalArgs.all(arg, ' +
|
|
13
|
+
'!(arg == "-s" || arg.startsWith("-s=") || arg == "--server" || ' +
|
|
14
|
+
'arg.startsWith("--server=") || arg == "--namespace" || ' +
|
|
15
|
+
'arg.startsWith("--namespace=") || arg == "--read-only" || ' +
|
|
16
|
+
'arg.startsWith("--read-only="))))) && !has(self.rbacRules)';
|
|
17
|
+
/**
|
|
18
|
+
* Own the single cluster-wide NACK controller used by NATS installations.
|
|
19
|
+
*
|
|
20
|
+
* The official chart's non-namespaced mode creates fixed-name ClusterRoles and
|
|
21
|
+
* ClusterRoleBindings. Installing the chart once per NATS cluster makes those
|
|
22
|
+
* resources cross-instance shared state: deleting one release can remove RBAC
|
|
23
|
+
* from another controller. This composition gives that state one explicit
|
|
24
|
+
* lifecycle owner. `natsBootstrap` consumes it through `singleton(...)`.
|
|
25
|
+
*
|
|
26
|
+
* The controller intentionally omits a default NATS URL, selecting NACK's
|
|
27
|
+
* `-crd-connect` mode. Each Stream, Consumer, or Account then identifies its
|
|
28
|
+
* own NATS system through its typed connection fields, allowing one controller
|
|
29
|
+
* to reconcile multiple NATS systems safely.
|
|
30
|
+
*/
|
|
31
|
+
export const nackControllerBootstrap = kubernetesComposition({
|
|
32
|
+
name: 'nack-controller-bootstrap',
|
|
33
|
+
kind: 'NackControllerBootstrap',
|
|
34
|
+
spec: NackControllerBootstrapConfigSchema,
|
|
35
|
+
status: NackControllerBootstrapStatusSchema,
|
|
36
|
+
}, (spec) => {
|
|
37
|
+
const graphMode = isKubernetesRef(spec.name);
|
|
38
|
+
const ownsNamespace = graphMode
|
|
39
|
+
? Cel.expr('!has(schema.spec.namespaceOwnership) || schema.spec.namespaceOwnership == "owned"')
|
|
40
|
+
: spec.namespaceOwnership !== 'external';
|
|
41
|
+
const version = spec.version ?? DEFAULT_NACK_VERSION;
|
|
42
|
+
const repositoryName = spec.repositoryName ?? DEFAULT_NACK_REPOSITORY_NAME;
|
|
43
|
+
const repositoryUrl = spec.repositoryUrl ?? DEFAULT_NATS_REPOSITORY_URL;
|
|
44
|
+
if (!graphMode) {
|
|
45
|
+
validateNackControllerValues(spec.values);
|
|
46
|
+
}
|
|
47
|
+
const controllerName = graphMode
|
|
48
|
+
? Cel.expr('"typekro-" + string(schema.spec.name) + "-controller"')
|
|
49
|
+
: `typekro-${spec.name}-controller`;
|
|
50
|
+
const protectedValues = {
|
|
51
|
+
jetstream: {
|
|
52
|
+
enabled: true,
|
|
53
|
+
controlLoop: true,
|
|
54
|
+
},
|
|
55
|
+
namespaced: false,
|
|
56
|
+
// The v0.33.5 per-installation chart used the chart default
|
|
57
|
+
// `jetstream-controller`. The TypeKro prefix makes this identity
|
|
58
|
+
// disjoint for every legal controller name, including `jetstream`, so
|
|
59
|
+
// the singleton can become Ready before the legacy release is retired
|
|
60
|
+
// without asking Helm to steal another release's ClusterRole/Binding.
|
|
61
|
+
nameOverride: spec.name,
|
|
62
|
+
namespaceOverride: spec.namespace,
|
|
63
|
+
serviceAccountName: controllerName,
|
|
64
|
+
useLegacyNames: false,
|
|
65
|
+
readOnly: false,
|
|
66
|
+
automountServiceAccountToken: true,
|
|
67
|
+
};
|
|
68
|
+
// User values are deliberately the base. The singleton invariants are the
|
|
69
|
+
// final overlay so ordinary chart customization remains available without
|
|
70
|
+
// being able to select a single NATS server, a namespace-only watch, or a
|
|
71
|
+
// controller that never reconciles.
|
|
72
|
+
const values = spec.values
|
|
73
|
+
? mergeValuesExpression(spec.values, protectedValues)
|
|
74
|
+
: protectedValues;
|
|
75
|
+
namespace({
|
|
76
|
+
id: 'nackNamespace',
|
|
77
|
+
metadata: {
|
|
78
|
+
name: spec.namespace,
|
|
79
|
+
labels: {
|
|
80
|
+
'app.kubernetes.io/name': 'nack',
|
|
81
|
+
'app.kubernetes.io/instance': spec.name,
|
|
82
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
}).withIncludeWhen(ownsNamespace);
|
|
86
|
+
const repository = natsHelmRepository({
|
|
87
|
+
id: 'nackHelmRepository',
|
|
88
|
+
name: repositoryName,
|
|
89
|
+
namespace: spec.namespace,
|
|
90
|
+
url: repositoryUrl,
|
|
91
|
+
});
|
|
92
|
+
const release = natsHelmRelease({
|
|
93
|
+
id: 'nackHelmRelease',
|
|
94
|
+
name: spec.name,
|
|
95
|
+
namespace: spec.namespace,
|
|
96
|
+
chart: 'nack',
|
|
97
|
+
version,
|
|
98
|
+
values,
|
|
99
|
+
repositoryName,
|
|
100
|
+
repositoryNamespace: spec.namespace,
|
|
101
|
+
repositoryUrl,
|
|
102
|
+
});
|
|
103
|
+
release.dependsOn(repository);
|
|
104
|
+
return {
|
|
105
|
+
...helmReleaseConditionSummary(release),
|
|
106
|
+
version,
|
|
107
|
+
};
|
|
108
|
+
}, {
|
|
109
|
+
schemaFieldValidations: {
|
|
110
|
+
values: NACK_VALUES_VALIDATION,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
/** Explicit lifecycle alias for the cluster-wide NACK owner. */
|
|
114
|
+
export const nackControllerInstallation = nackControllerBootstrap;
|
|
115
|
+
function validateNackControllerValues(values) {
|
|
116
|
+
if (!values || typeof values !== 'object' || isKubernetesRef(values))
|
|
117
|
+
return;
|
|
118
|
+
const valuesRecord = values;
|
|
119
|
+
if (Object.hasOwn(valuesRecord, 'rbacRules')) {
|
|
120
|
+
throw new Error('NACK singleton values.rbacRules cannot replace the controller permissions. Add separate ' +
|
|
121
|
+
'RBAC resources for extra access.');
|
|
122
|
+
}
|
|
123
|
+
const jetstream = valuesRecord.jetstream;
|
|
124
|
+
if (!jetstream || typeof jetstream !== 'object' || Array.isArray(jetstream))
|
|
125
|
+
return;
|
|
126
|
+
const nats = jetstream.nats;
|
|
127
|
+
if (nats &&
|
|
128
|
+
typeof nats === 'object' &&
|
|
129
|
+
!Array.isArray(nats) &&
|
|
130
|
+
Object.keys(nats).length > 0) {
|
|
131
|
+
throw new Error('NACK singleton values.jetstream.nats must be omitted. The shared controller uses ' +
|
|
132
|
+
'CRD-connect mode; each JetStream resource declares its own NATS connection.');
|
|
133
|
+
}
|
|
134
|
+
const tls = jetstream.tls;
|
|
135
|
+
if (tls &&
|
|
136
|
+
typeof tls === 'object' &&
|
|
137
|
+
!Array.isArray(tls) &&
|
|
138
|
+
Object.keys(tls).length > 0) {
|
|
139
|
+
throw new Error('NACK singleton values.jetstream.tls must be omitted. Shared-controller connection ' +
|
|
140
|
+
'security belongs on each JetStream resource.');
|
|
141
|
+
}
|
|
142
|
+
const additionalArgs = jetstream.additionalArgs;
|
|
143
|
+
if (Array.isArray(additionalArgs) &&
|
|
144
|
+
additionalArgs.some((argument) => typeof argument === 'string' &&
|
|
145
|
+
(argument === '-s' ||
|
|
146
|
+
argument.startsWith('-s=') ||
|
|
147
|
+
argument === '--server' ||
|
|
148
|
+
argument.startsWith('--server=') ||
|
|
149
|
+
argument === '--namespace' ||
|
|
150
|
+
argument.startsWith('--namespace=') ||
|
|
151
|
+
argument === '--read-only' ||
|
|
152
|
+
argument.startsWith('--read-only=')))) {
|
|
153
|
+
throw new Error('NACK singleton values.jetstream.additionalArgs cannot override server, namespace, or ' +
|
|
154
|
+
'read-only routing invariants.');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=nack-controller-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nack-controller-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nack-controller-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { KubernetesObjectApi } from '@kubernetes/client-node';
|
|
2
|
+
export interface LegacyNackRetirementOptions {
|
|
3
|
+
readonly namespace: string;
|
|
4
|
+
readonly instanceName: string;
|
|
5
|
+
readonly kubernetesApi: KubernetesObjectApi;
|
|
6
|
+
readonly timeout?: number;
|
|
7
|
+
readonly abortSignal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Retire the v0.33.5 instance-owned NACK HelmRelease after the replacement
|
|
11
|
+
* singleton is Ready.
|
|
12
|
+
*
|
|
13
|
+
* This is intentionally ownership- and UID-leased. A same-named user release,
|
|
14
|
+
* a release belonging to another TypeKro instance, or a replacement object
|
|
15
|
+
* appearing during deletion is never adopted or deleted.
|
|
16
|
+
*/
|
|
17
|
+
export declare function retireLegacyNackController(options: LegacyNackRetirementOptions): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=nack-controller-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nack-controller-migration.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nack-controller-migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AASrF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAkEf"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { extractTypekroTags } from '../../../core/deployment/resource-tagging.js';
|
|
2
|
+
import { isNotFoundError } from '../../../core/kubernetes/errors.js';
|
|
3
|
+
const LEGACY_NACK_RELEASE = 'nack';
|
|
4
|
+
const LEGACY_NACK_RESOURCE_ID = 'nackHelmRelease';
|
|
5
|
+
const CURRENT_NATS_RESOURCE_ID = 'natsHelmRelease';
|
|
6
|
+
const NATS_FACTORY_NAME = 'nats-bootstrap';
|
|
7
|
+
/**
|
|
8
|
+
* Retire the v0.33.5 instance-owned NACK HelmRelease after the replacement
|
|
9
|
+
* singleton is Ready.
|
|
10
|
+
*
|
|
11
|
+
* This is intentionally ownership- and UID-leased. A same-named user release,
|
|
12
|
+
* a release belonging to another TypeKro instance, or a replacement object
|
|
13
|
+
* appearing during deletion is never adopted or deleted.
|
|
14
|
+
*/
|
|
15
|
+
export async function retireLegacyNackController(options) {
|
|
16
|
+
const identity = {
|
|
17
|
+
apiVersion: 'helm.toolkit.fluxcd.io/v2',
|
|
18
|
+
kind: 'HelmRelease',
|
|
19
|
+
metadata: {
|
|
20
|
+
name: LEGACY_NACK_RELEASE,
|
|
21
|
+
namespace: options.namespace,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
let live;
|
|
25
|
+
try {
|
|
26
|
+
live = await options.kubernetesApi.read(identity);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (isNotFoundError(error))
|
|
30
|
+
return;
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
const classification = classifyNackRelease(live, options.instanceName);
|
|
34
|
+
if (classification === 'current-nats-server')
|
|
35
|
+
return;
|
|
36
|
+
assertLegacyNackOwnership(live, options.instanceName);
|
|
37
|
+
const uid = live.metadata?.uid;
|
|
38
|
+
if (!uid) {
|
|
39
|
+
throw new Error(`Refusing to retire legacy NACK HelmRelease ${options.namespace}/${LEGACY_NACK_RELEASE}: ` +
|
|
40
|
+
'metadata.uid is missing.');
|
|
41
|
+
}
|
|
42
|
+
await options.kubernetesApi.delete(live, undefined, undefined, undefined, undefined, 'Foreground', { preconditions: { uid } });
|
|
43
|
+
const timeout = options.timeout ?? 300_000;
|
|
44
|
+
const startedAt = Date.now();
|
|
45
|
+
while (Date.now() - startedAt < timeout) {
|
|
46
|
+
options.abortSignal?.throwIfAborted();
|
|
47
|
+
try {
|
|
48
|
+
const current = await options.kubernetesApi.read(identity);
|
|
49
|
+
if (current.metadata?.uid && current.metadata.uid !== uid) {
|
|
50
|
+
throw new Error(`Refusing to continue legacy NACK retirement for ${options.namespace}/${LEGACY_NACK_RELEASE}: ` +
|
|
51
|
+
`UID changed from ${uid} to ${current.metadata.uid}.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (isNotFoundError(error))
|
|
56
|
+
return;
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
await abortableDelay(1_000, options.abortSignal);
|
|
60
|
+
}
|
|
61
|
+
throw new Error(`Timed out after ${timeout}ms retiring legacy NACK HelmRelease ` +
|
|
62
|
+
`${options.namespace}/${LEGACY_NACK_RELEASE} (uid ${uid}).`);
|
|
63
|
+
}
|
|
64
|
+
function assertLegacyNackOwnership(resource, instanceName) {
|
|
65
|
+
const tags = extractTypekroTags(resource);
|
|
66
|
+
const chartName = chart(resource);
|
|
67
|
+
const problems = [
|
|
68
|
+
...(tags.factoryName === NATS_FACTORY_NAME
|
|
69
|
+
? []
|
|
70
|
+
: [`factory=${tags.factoryName ?? '<missing>'}`]),
|
|
71
|
+
...(tags.instanceName === instanceName ? [] : [`instance=${tags.instanceName ?? '<missing>'}`]),
|
|
72
|
+
...(tags.resourceId === LEGACY_NACK_RESOURCE_ID
|
|
73
|
+
? []
|
|
74
|
+
: [`resource-id=${tags.resourceId ?? '<missing>'}`]),
|
|
75
|
+
...(chartName === 'nack' ? [] : [`chart=${String(chartName ?? '<missing>')}`]),
|
|
76
|
+
];
|
|
77
|
+
if (problems.length > 0) {
|
|
78
|
+
throw new Error(`Refusing to retire HelmRelease ${resource.metadata?.namespace}/${resource.metadata?.name}: ` +
|
|
79
|
+
`it is not the v0.33.5 NACK child owned by ${NATS_FACTORY_NAME}/${instanceName} ` +
|
|
80
|
+
`(${problems.join(', ')}).`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function classifyNackRelease(resource, instanceName) {
|
|
84
|
+
const tags = extractTypekroTags(resource);
|
|
85
|
+
const chartName = chart(resource);
|
|
86
|
+
if (tags.factoryName === NATS_FACTORY_NAME &&
|
|
87
|
+
tags.instanceName === instanceName &&
|
|
88
|
+
tags.resourceId === LEGACY_NACK_RESOURCE_ID &&
|
|
89
|
+
chartName === 'nack') {
|
|
90
|
+
return 'legacy-controller';
|
|
91
|
+
}
|
|
92
|
+
// A current NATS instance may itself be named `nack`, which means the fixed
|
|
93
|
+
// legacy lookup finds the successfully deployed server HelmRelease. This is
|
|
94
|
+
// not an ownership mismatch and there is no legacy controller left to
|
|
95
|
+
// retire. Match every current identity component before treating it as
|
|
96
|
+
// absent so a same-named foreign release still fails closed.
|
|
97
|
+
if (resource.metadata?.name === LEGACY_NACK_RELEASE &&
|
|
98
|
+
tags.factoryName === NATS_FACTORY_NAME &&
|
|
99
|
+
tags.instanceName === instanceName &&
|
|
100
|
+
tags.resourceId === CURRENT_NATS_RESOURCE_ID &&
|
|
101
|
+
chartName === 'nats') {
|
|
102
|
+
return 'current-nats-server';
|
|
103
|
+
}
|
|
104
|
+
return 'unrelated';
|
|
105
|
+
}
|
|
106
|
+
function chart(resource) {
|
|
107
|
+
return resource.spec?.chart?.spec?.chart;
|
|
108
|
+
}
|
|
109
|
+
function abortableDelay(milliseconds, signal) {
|
|
110
|
+
if (!signal) {
|
|
111
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
112
|
+
}
|
|
113
|
+
signal.throwIfAborted();
|
|
114
|
+
return new Promise((resolve, reject) => {
|
|
115
|
+
const onAbort = () => {
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
reject(signal.reason ?? new DOMException('The operation was aborted', 'AbortError'));
|
|
118
|
+
};
|
|
119
|
+
const timer = setTimeout(() => {
|
|
120
|
+
signal.removeEventListener('abort', onAbort);
|
|
121
|
+
resolve();
|
|
122
|
+
}, milliseconds);
|
|
123
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=nack-controller-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nack-controller-migration.js","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nack-controller-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
import { type NatsBootstrapBuildOptions } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build a NATS installation composition backed by one cluster-wide NACK owner.
|
|
4
|
+
*
|
|
5
|
+
* NACK ownership is deliberately build-time. Every consumer of the singleton
|
|
6
|
+
* must agree on an identical concrete controller spec.
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeNatsBootstrap(options?: NatsBootstrapBuildOptions): import("../../../index.js").CallableComposition<{
|
|
9
|
+
name: string;
|
|
10
|
+
namespace?: string;
|
|
11
|
+
namespaceOwnership?: "external" | "owned";
|
|
12
|
+
version?: string;
|
|
13
|
+
nackVersion?: string;
|
|
14
|
+
repositoryName?: string;
|
|
15
|
+
repositoryNamespace?: string;
|
|
16
|
+
repositoryUrl?: string;
|
|
17
|
+
replicas?: number;
|
|
18
|
+
storageSize?: string;
|
|
19
|
+
storageClassName?: string;
|
|
20
|
+
pvcRetentionPolicy?: "delete" | "retain";
|
|
21
|
+
values?: Record<string, unknown>;
|
|
22
|
+
nackValues?: Record<string, unknown>;
|
|
23
|
+
}, {
|
|
24
|
+
ready: boolean;
|
|
25
|
+
failed: boolean;
|
|
26
|
+
phase: "Ready" | "Failed" | "Installing";
|
|
27
|
+
serverVersion: string;
|
|
28
|
+
controllerVersion: string;
|
|
29
|
+
endpoint: string;
|
|
30
|
+
}>;
|
|
31
|
+
/** Install an official NATS cluster backed by the shared NACK controller. */
|
|
2
32
|
export declare const natsBootstrap: import("../../../index.js").CallableComposition<{
|
|
3
33
|
name: string;
|
|
4
34
|
namespace?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nats-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nats-bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nats-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/nats/compositions/nats-bootstrap.ts"],"names":[],"mappings":"AA0BA,OAAO,EAEL,KAAK,yBAAyB,EAK/B,MAAM,aAAa,CAAC;AASrB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;;;;GAqNxE;AAED,6EAA6E;AAC7E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;EAAsB,CAAC;AAEjD,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;EAAgB,CAAC"}
|