@codiac.io/codiac-cli 1.3.230 → 1.3.233
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 +259 -192
- package/dist/commands/asset/create.d.ts +2 -0
- package/dist/commands/asset/create.js +31 -14
- package/dist/commands/asset/create.js.map +1 -1
- package/dist/commands/import/cluster.d.ts +27 -1
- package/dist/commands/import/cluster.js +208 -29
- package/dist/commands/import/cluster.js.map +1 -1
- package/dist/commands/secretStore/capture.d.ts +5 -0
- package/dist/commands/secretStore/capture.js +107 -4
- package/dist/commands/secretStore/capture.js.map +1 -1
- package/oclif.manifest.json +71 -7
- package/package.json +1 -1
|
@@ -12,6 +12,8 @@ export default class AssetCreate extends CommandBaseExec<AssetCreateRequest> {
|
|
|
12
12
|
kit: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
13
13
|
image: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
14
14
|
registry: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
15
|
+
chart: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
16
|
+
"chart-repo": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
15
17
|
name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
16
18
|
code: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
17
19
|
enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
@@ -115,10 +115,19 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
115
115
|
partial.regInput.url = flags.registry;
|
|
116
116
|
// regRef.scope = undefined;
|
|
117
117
|
}
|
|
118
|
+
// For helm assets the chart repository takes the place of the container registry; it is
|
|
119
|
+
// referenced by its Codiac registry code (resolved in buildCandidate_silently).
|
|
120
|
+
if (flags['chart-repo']) {
|
|
121
|
+
partial.regInput.code = flags['chart-repo'];
|
|
122
|
+
}
|
|
118
123
|
partial.imgInput = { registry: partial.regInput };
|
|
119
124
|
if (flags.image !== undefined) {
|
|
120
125
|
partial.imgInput.name = flags.image;
|
|
121
126
|
}
|
|
127
|
+
// For helm assets the chart name takes the place of the container image name.
|
|
128
|
+
if (flags.chart !== undefined) {
|
|
129
|
+
partial.imgInput.name = flags.chart;
|
|
130
|
+
}
|
|
122
131
|
if (flags['deploy-condition']) {
|
|
123
132
|
partial.deployCondition = { expr: flags['deploy-condition'], because: flags['deploy-condition-because'] };
|
|
124
133
|
}
|
|
@@ -130,7 +139,7 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
130
139
|
});
|
|
131
140
|
}
|
|
132
141
|
buildCandidate_silently(partial) {
|
|
133
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
142
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
134
143
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
135
144
|
// Rough validation for missing args
|
|
136
145
|
if (!partial.name)
|
|
@@ -154,13 +163,14 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
154
163
|
// ImageRegistry.code), fall back to the official DockerHub registry record
|
|
155
164
|
// for the enterprise. The deploy path expects a full registry record (with
|
|
156
165
|
// url, type, etc.); a bare {url} stub crashes K8sDomainMapper.
|
|
157
|
-
const registryHint = (_c = (_b = partial.imgInput.registry) === null || _b === void 0 ? void 0 : _b.
|
|
166
|
+
const registryHint = (_c = (_b = partial.imgInput.registry) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : (_d = partial.imgInput.registry) === null || _d === void 0 ? void 0 : _d.url;
|
|
167
|
+
const isHelm = partial.type === contracts_1.AssetTypesEnum.helm;
|
|
158
168
|
let registry;
|
|
159
169
|
if (registryHint) {
|
|
160
170
|
const matches = yield this._codiacApi.ImageRegistry.readMany({ code: { $eq: registryHint } }, { throwNotFound: false });
|
|
161
171
|
registry = (matches !== null && matches !== void 0 ? matches : [])[0];
|
|
162
172
|
if (!registry)
|
|
163
|
-
throw new Error(`No ImageRegistry was found matching
|
|
173
|
+
throw new Error(`No ImageRegistry was found matching ${isHelm ? `--chart-repo` : `--registry`} [${registryHint}].`);
|
|
164
174
|
}
|
|
165
175
|
else {
|
|
166
176
|
// Default: DockerHub|official for the tenant
|
|
@@ -173,7 +183,8 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
173
183
|
}
|
|
174
184
|
if (!((_e = partial.image) === null || _e === void 0 ? void 0 : _e.name))
|
|
175
185
|
throw new Error("Asset image name must be set");
|
|
176
|
-
|
|
186
|
+
// Helm assets carry no Codiac-managed port; the chart owns its own service definitions.
|
|
187
|
+
if (partial.type !== contracts_1.AssetTypesEnum.helm && !partial.port)
|
|
177
188
|
throw new Error("Asset port must be set"); // TODO: Consider defaulting to 80 or next available...?
|
|
178
189
|
// We gotta validate the registry input,
|
|
179
190
|
// AND we should look it up by csp+name,
|
|
@@ -185,10 +196,10 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
185
196
|
//
|
|
186
197
|
// TODO: this.validateImage(partial.image);
|
|
187
198
|
try {
|
|
188
|
-
let candidate = Object.assign({ enterprise: partial.enterprise, code: partial.code, name: partial.name, image: partial.image, port: partial.port, hasIngress: (
|
|
199
|
+
let candidate = Object.assign({ enterprise: partial.enterprise, code: partial.code, name: partial.name, image: partial.image, port: (_f = partial.port) !== null && _f !== void 0 ? _f : 0, hasIngress: (_g = partial.hasIngress) !== null && _g !== void 0 ? _g : false, routedWithoutName: (_h = partial.routedWithoutName) !== null && _h !== void 0 ? _h : false }, this.createAuditable());
|
|
189
200
|
candidate.product = partial.product;
|
|
190
201
|
candidate.reservedFolders = partial.reservedFolders;
|
|
191
|
-
candidate.type = (
|
|
202
|
+
candidate.type = (_j = partial.type) !== null && _j !== void 0 ? _j : contracts_1.AssetTypesEnum.service;
|
|
192
203
|
if (partial.allowHttp != undefined)
|
|
193
204
|
candidate.allowHttp = partial.allowHttp;
|
|
194
205
|
if (partial.disableHttps != undefined)
|
|
@@ -307,12 +318,14 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
307
318
|
cmd.push("--enterprise", candidate.enterprise);
|
|
308
319
|
cmd.push("--name", candidate.name);
|
|
309
320
|
cmd.push("--code", candidate.code);
|
|
310
|
-
cmd.push("--image", candidate.image.name);
|
|
311
|
-
cmd.push("--registry", candidate.image.registry.code);
|
|
312
321
|
if (candidate.type == contracts_1.AssetTypesEnum.helm) {
|
|
313
322
|
cmd.push("--helm");
|
|
323
|
+
cmd.push("--chart", candidate.image.name);
|
|
324
|
+
cmd.push("--chart-repo", candidate.image.registry.code);
|
|
314
325
|
}
|
|
315
326
|
else {
|
|
327
|
+
cmd.push("--image", candidate.image.name);
|
|
328
|
+
cmd.push("--registry", candidate.image.registry.code);
|
|
316
329
|
// Ports
|
|
317
330
|
if (candidate.port != undefined) {
|
|
318
331
|
if (_.isArray(candidate.port)) {
|
|
@@ -361,11 +374,12 @@ class AssetCreate extends command_base_exec_1.CommandBaseExec {
|
|
|
361
374
|
}
|
|
362
375
|
catch (err) {
|
|
363
376
|
this.logger.error(err, candidate);
|
|
364
|
-
throw err; //
|
|
365
|
-
}
|
|
366
|
-
finally {
|
|
367
|
-
return;
|
|
377
|
+
throw err; // base lifecycle renders the error and sets a non-zero exit code
|
|
368
378
|
}
|
|
379
|
+
// NOTE: do NOT add a `finally { return; }` here. A return inside finally
|
|
380
|
+
// silently swallows the rethrown error above — turning every failure
|
|
381
|
+
// (e.g. "Asset already exists") into a fake exit-0 success with no output,
|
|
382
|
+
// which is especially dangerous in --silent/scripted mode.
|
|
369
383
|
});
|
|
370
384
|
}
|
|
371
385
|
// --------------------------------------------------------------------------------------------
|
|
@@ -402,8 +416,10 @@ AssetCreate.dependsOn = ["image", "registry", "name", "code", "enterprise", "por
|
|
|
402
416
|
AssetCreate.flags = {
|
|
403
417
|
help: core_1.Flags.help({ char: 'h' }),
|
|
404
418
|
kit: core_1.Flags.string({ char: 'k', required: false, exclusive: ["image", "registry"], description: "The name of the kit (with library prefix, eg: 'library/kitName') to use to create the asset. Use '?' to be prompted for a kit (Optional: used instead of calling for the image)." }),
|
|
405
|
-
image: core_1.Flags.string({ char: 'i', required: false, exclusive: ["kit"], description: "The image name including scope prefix if applicable (eg: '@yourCompany/your-api-image')." }),
|
|
406
|
-
registry: core_1.Flags.string({ char: 'r', required: false, exclusive: ["kit"], description: "The container registry in which the image exists (defaults to docker hub)." }),
|
|
419
|
+
image: core_1.Flags.string({ char: 'i', required: false, exclusive: ["kit", "chart", "chart-repo"], description: "The image name including scope prefix if applicable (eg: '@yourCompany/your-api-image')." }),
|
|
420
|
+
registry: core_1.Flags.string({ char: 'r', required: false, exclusive: ["kit", "chart", "chart-repo"], description: "The container registry in which the image exists (defaults to docker hub)." }),
|
|
421
|
+
chart: core_1.Flags.string({ required: false, exclusive: ["kit", "image", "registry"], description: "(Helm assets only) Name of the Helm chart to base the asset on, in place of a container image. Use with --helm." }),
|
|
422
|
+
"chart-repo": core_1.Flags.string({ required: false, exclusive: ["kit", "image", "registry"], description: "(Helm assets only) Codiac registry code of the Helm chart repository that publishes the chart. Use with --helm and --chart." }),
|
|
407
423
|
name: core_1.Flags.string({ char: 'n', required: false, description: "The name to give the enterprise asset (Optional: defaults to the image name without the scope prefix)." }),
|
|
408
424
|
code: core_1.Flags.string({ char: 'c', required: false, description: "The host name to assign this asset in the domain url. eg: 'myasset' in 'myasset.your-domain.com' (Optional: defaults to the asset name)." }),
|
|
409
425
|
enterprise: core_1.Flags.string({ char: 'e', required: false, description: 'The name of the enterprise in which to create this asset. (defaults to the current enterprise context)' }),
|
|
@@ -427,5 +443,6 @@ AssetCreate.examples = [
|
|
|
427
443
|
{ description: "Create an asset interactively.", command: "<%= config.bin %> <%= command.id %>" },
|
|
428
444
|
{ description: "Create an asset with a deploy condition so it is skipped on AKS clusters (which include metrics-server natively).", command: "<%= config.bin %> <%= command.id %> -e myEnterprise -n metrics-server --deploy-condition \"cluster.provider != 'azure'\" --deploy-condition-because 'AKS clusters include metrics-server natively.'" },
|
|
429
445
|
{ description: "Create an asset that only deploys to production environments.", command: "<%= config.bin %> <%= command.id %> -e myEnterprise -n my-api --deploy-condition \"environment.name = 'production'\"" },
|
|
446
|
+
{ description: "Create a Helm-typed asset from a chart in a captured chart repository.", command: "<%= config.bin %> <%= command.id %> -e myEnterprise -n redis --helm --chart redis --chart-repo bitnami --silent" },
|
|
430
447
|
];
|
|
431
448
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/asset/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/asset/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export default class ImportCluster extends Command {
|
|
|
7
7
|
enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
8
|
environment: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
9
|
cluster: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
"subscription-id": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
11
|
"generate-cabinet": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
"generate-secret-store": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
"generate-pvcs": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -28,6 +29,29 @@ export default class ImportCluster extends Command {
|
|
|
28
29
|
run(): Promise<void>;
|
|
29
30
|
private listUserNamespaces;
|
|
30
31
|
private scanNamespace;
|
|
32
|
+
/** True when the Deployment is owned by one of the named Helm releases (so it must not be imported as a raw asset). */
|
|
33
|
+
private isHelmOwned;
|
|
34
|
+
/** Lists the Helm v3 release storage Secrets in a namespace, keeps the latest revision per release, and decodes
|
|
35
|
+
* each into a HelmRelease. Listing failures (typically missing `secrets` read RBAC) are non-fatal: a warning is
|
|
36
|
+
* emitted and an empty list returned, so the affected Deployments fall back to the raw asset-import path. */
|
|
37
|
+
private scanNamespaceHelmReleases;
|
|
38
|
+
/** Decodes a Helm v3 release storage payload. Helm stores the release as base64(gzip(json)); the Kubernetes API
|
|
39
|
+
* then base64-encodes that string again as the Secret's `release` data value, so two base64 decodes precede the
|
|
40
|
+
* gunzip. Older releases may be stored without gzip, so the gzip magic bytes are checked before inflating. */
|
|
41
|
+
private decodeHelmRelease;
|
|
42
|
+
/** Best-effort recovery of a usable chart repository reference from chart metadata. The Helm release Secret does
|
|
43
|
+
* not record where a chart came from, so only an explicit OCI source can be returned with confidence. */
|
|
44
|
+
private sniffChartRepo;
|
|
45
|
+
/** Renders a human hint (chart home / sources) shown in a comment when the chart repository could not be resolved. */
|
|
46
|
+
private buildRepoHint;
|
|
47
|
+
/** Builds the full block of generated commands for one Helm release: the asset create line, plus enterprise-scoped
|
|
48
|
+
* default values and (when present) cabinet-scoped override values, each delivered via a heredoc to keep the output
|
|
49
|
+
* a single self-contained script stream. */
|
|
50
|
+
private buildHelmReleaseCommands;
|
|
51
|
+
/** Builds a single `codiac config set -t helm` command whose value is the entire values document, supplied via a
|
|
52
|
+
* quoted heredoc so the YAML passes through the shell literally. `--escape-expressions` ensures any third-party
|
|
53
|
+
* `@{...}` tokens in the values are stored as literals rather than evaluated by Codiac at deploy time. */
|
|
54
|
+
private buildHelmValuesConfigBlock;
|
|
31
55
|
private scanNamespacePvcs;
|
|
32
56
|
/** Resolves a PVC's FileStoreType using the cluster-wide StorageClass map, falling back to the PV's CSI driver
|
|
33
57
|
* for statically-bound PVCs (storageClassName empty / spec.volumeName set). Returns undefined when no path resolves. */
|
|
@@ -49,7 +73,9 @@ export default class ImportCluster extends Command {
|
|
|
49
73
|
private buildSecretRefCommand;
|
|
50
74
|
/** Builds a codiac config set with -t k8spatch for a fieldRef (Downward API) env var. */
|
|
51
75
|
private buildFieldRefPatchCommand;
|
|
52
|
-
/** Builds a codiac secretStore:capture command.
|
|
76
|
+
/** Builds a codiac secretStore:capture command. When the import was run with --subscription-id, threads
|
|
77
|
+
* it through so the generated line resolves the Azure tenant context unambiguously when the operator
|
|
78
|
+
* has multiple cached azure subscriptions. */
|
|
53
79
|
private buildSecretStoreCaptureCommand;
|
|
54
80
|
private outputCommands;
|
|
55
81
|
private findServicesForDeployment;
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const core_1 = require("@oclif/core");
|
|
5
5
|
const k8s = require("@kubernetes/client-node");
|
|
6
|
+
const zlib = require("zlib");
|
|
7
|
+
const YAML = require("yaml");
|
|
6
8
|
const contracts_1 = require("../../apis/codiac-api/contracts");
|
|
7
9
|
const EXCLUDED_NAMESPACES = new Set([
|
|
8
10
|
"kube-system",
|
|
@@ -41,7 +43,7 @@ class ImportCluster extends core_1.Command {
|
|
|
41
43
|
const { flags } = yield this.parse(ImportCluster);
|
|
42
44
|
if (!flags["run-in-cluster"]) {
|
|
43
45
|
this.log("The --run-in-cluster flag is required. Interactive mode is not yet supported.");
|
|
44
|
-
this.log("Usage: codiac import cluster --run-in-cluster [--enterprise <name>] [--environment <name>] [--cluster <name>] [--generate-cabinet] [--generate-secret-store] [--generate-pvcs] [--generate-volume-mounts] [--keyvault-name <name>] [--include-default]");
|
|
46
|
+
this.log("Usage: codiac import cluster --run-in-cluster [--enterprise <name>] [--environment <name>] [--cluster <name>] [--subscription-id <id>] [--generate-cabinet] [--generate-secret-store] [--generate-pvcs] [--generate-volume-mounts] [--keyvault-name <name>] [--include-default]");
|
|
45
47
|
return;
|
|
46
48
|
}
|
|
47
49
|
// The generated commands all rely on --enterprise. Catch the omission up front rather than emitting broken script lines.
|
|
@@ -82,11 +84,13 @@ class ImportCluster extends core_1.Command {
|
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
const allGroups = [];
|
|
87
|
+
const allHelmGroups = [];
|
|
85
88
|
for (const namespace of namespaces) {
|
|
86
|
-
const groups = yield this.scanNamespace(namespace, coreApi, appsApi, networkingApi, storageClassByName, flags);
|
|
89
|
+
const { groups, helmGroups } = yield this.scanNamespace(namespace, coreApi, appsApi, networkingApi, storageClassByName, flags);
|
|
87
90
|
allGroups.push(...groups);
|
|
91
|
+
allHelmGroups.push(...helmGroups);
|
|
88
92
|
}
|
|
89
|
-
this.outputCommands(allGroups, flags);
|
|
93
|
+
this.outputCommands(allGroups, allHelmGroups, flags);
|
|
90
94
|
});
|
|
91
95
|
}
|
|
92
96
|
// --------------------------------------------------------------------
|
|
@@ -115,10 +119,19 @@ class ImportCluster extends core_1.Command {
|
|
|
115
119
|
scanNamespace(namespace, coreApi, appsApi, networkingApi, storageClassByName, flags) {
|
|
116
120
|
var _a, _b;
|
|
117
121
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
// Discover Helm releases first so their owned Deployments can be deduped out of the raw asset path.
|
|
123
|
+
const helmReleases = yield this.scanNamespaceHelmReleases(namespace, coreApi);
|
|
124
|
+
const releaseNames = new Set(helmReleases.map(r => r.name));
|
|
125
|
+
const helmGroups = helmReleases.map(r => ({
|
|
126
|
+
namespace,
|
|
127
|
+
releaseName: r.name,
|
|
128
|
+
lines: this.buildHelmReleaseCommands(r, flags),
|
|
129
|
+
}));
|
|
118
130
|
const deploymentResult = yield appsApi.listNamespacedDeployment({ namespace });
|
|
119
|
-
|
|
131
|
+
// Skip Deployments owned by a Helm release we successfully imported; they are represented by the helm asset instead.
|
|
132
|
+
const deployments = deploymentResult.items.filter(d => { var _a; return !!((_a = d.metadata) === null || _a === void 0 ? void 0 : _a.name) && !this.isHelmOwned(d, releaseNames); });
|
|
120
133
|
if (deployments.length === 0)
|
|
121
|
-
return [];
|
|
134
|
+
return { groups: [], helmGroups };
|
|
122
135
|
const services = (yield coreApi.listNamespacedService({ namespace })).items;
|
|
123
136
|
const ingresses = (yield networkingApi.listNamespacedIngress({ namespace })).items;
|
|
124
137
|
// Only list PVCs when at least one PVC-related emission flag is set; the API call is per-namespace.
|
|
@@ -136,9 +149,6 @@ class ImportCluster extends core_1.Command {
|
|
|
136
149
|
volumeMountCommands: [],
|
|
137
150
|
filestoreBindCommands: [],
|
|
138
151
|
};
|
|
139
|
-
if (i === 0 && flags["generate-cabinet"]) {
|
|
140
|
-
group.cabinetCommand = this.buildCabinetCreateCommand(namespace, flags);
|
|
141
|
-
}
|
|
142
152
|
if (needsPvcs && pvcsInNs.size > 0) {
|
|
143
153
|
const assetName = (_b = (_a = deployment.metadata) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "unnamed";
|
|
144
154
|
const mounts = this.findPvcMountsForDeployment(deployment, pvcsInNs);
|
|
@@ -160,9 +170,157 @@ class ImportCluster extends core_1.Command {
|
|
|
160
170
|
}
|
|
161
171
|
groups.push(group);
|
|
162
172
|
}
|
|
163
|
-
return groups;
|
|
173
|
+
return { groups, helmGroups };
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/** True when the Deployment is owned by one of the named Helm releases (so it must not be imported as a raw asset). */
|
|
177
|
+
isHelmOwned(deployment, releaseNames) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
const releaseName = (_b = (_a = deployment.metadata) === null || _a === void 0 ? void 0 : _a.annotations) === null || _b === void 0 ? void 0 : _b["meta.helm.sh/release-name"];
|
|
180
|
+
return releaseName != undefined && releaseNames.has(releaseName);
|
|
181
|
+
}
|
|
182
|
+
// --------------------------------------------------------------------
|
|
183
|
+
// Helm Release Discovery
|
|
184
|
+
// --------------------------------------------------------------------
|
|
185
|
+
/** Lists the Helm v3 release storage Secrets in a namespace, keeps the latest revision per release, and decodes
|
|
186
|
+
* each into a HelmRelease. Listing failures (typically missing `secrets` read RBAC) are non-fatal: a warning is
|
|
187
|
+
* emitted and an empty list returned, so the affected Deployments fall back to the raw asset-import path. */
|
|
188
|
+
scanNamespaceHelmReleases(namespace, coreApi) {
|
|
189
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
190
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
let secrets;
|
|
192
|
+
try {
|
|
193
|
+
const list = yield coreApi.listNamespacedSecret({ namespace, fieldSelector: "type=helm.sh/release.v1" });
|
|
194
|
+
secrets = (_a = list.items) !== null && _a !== void 0 ? _a : [];
|
|
195
|
+
}
|
|
196
|
+
catch (err) {
|
|
197
|
+
this.log(`# WARNING: Failed to list Helm release secrets in namespace [${namespace}] (${(_b = err.message) !== null && _b !== void 0 ? _b : err}). Helm releases here will not be imported; their Deployments will be imported individually instead.`);
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
// Group by release name, keeping only the highest revision Secret per release.
|
|
201
|
+
const latestByName = new Map();
|
|
202
|
+
for (const secret of secrets) {
|
|
203
|
+
const releaseName = (_d = (_c = secret.metadata) === null || _c === void 0 ? void 0 : _c.labels) === null || _d === void 0 ? void 0 : _d["name"];
|
|
204
|
+
if (!releaseName)
|
|
205
|
+
continue;
|
|
206
|
+
const revision = parseInt((_g = (_f = (_e = secret.metadata) === null || _e === void 0 ? void 0 : _e.labels) === null || _f === void 0 ? void 0 : _f["version"]) !== null && _g !== void 0 ? _g : "0", 10) || 0;
|
|
207
|
+
const existing = latestByName.get(releaseName);
|
|
208
|
+
if (!existing || revision > existing.revision)
|
|
209
|
+
latestByName.set(releaseName, { revision, secret });
|
|
210
|
+
}
|
|
211
|
+
const releases = [];
|
|
212
|
+
for (const [releaseName, { secret }] of latestByName) {
|
|
213
|
+
const encoded = (_h = secret.data) === null || _h === void 0 ? void 0 : _h["release"];
|
|
214
|
+
if (!encoded)
|
|
215
|
+
continue;
|
|
216
|
+
try {
|
|
217
|
+
const release = this.decodeHelmRelease(encoded);
|
|
218
|
+
const metadata = (_k = (_j = release === null || release === void 0 ? void 0 : release.chart) === null || _j === void 0 ? void 0 : _j.metadata) !== null && _k !== void 0 ? _k : {};
|
|
219
|
+
releases.push({
|
|
220
|
+
name: (_l = release === null || release === void 0 ? void 0 : release.name) !== null && _l !== void 0 ? _l : releaseName,
|
|
221
|
+
namespace: (_m = release === null || release === void 0 ? void 0 : release.namespace) !== null && _m !== void 0 ? _m : namespace,
|
|
222
|
+
chartName: (_o = metadata.name) !== null && _o !== void 0 ? _o : releaseName,
|
|
223
|
+
chartVersion: metadata.version,
|
|
224
|
+
defaults: (_q = (_p = release === null || release === void 0 ? void 0 : release.chart) === null || _p === void 0 ? void 0 : _p.values) !== null && _q !== void 0 ? _q : {},
|
|
225
|
+
overrides: (_r = release === null || release === void 0 ? void 0 : release.config) !== null && _r !== void 0 ? _r : {},
|
|
226
|
+
repoGuess: this.sniffChartRepo(metadata),
|
|
227
|
+
repoHint: this.buildRepoHint(metadata),
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
this.log(`# WARNING: Failed to decode Helm release [${namespace}/${releaseName}] (${(_s = err.message) !== null && _s !== void 0 ? _s : err}); skipping.`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
releases.sort((a, b) => a.name.localeCompare(b.name));
|
|
235
|
+
return releases;
|
|
164
236
|
});
|
|
165
237
|
}
|
|
238
|
+
/** Decodes a Helm v3 release storage payload. Helm stores the release as base64(gzip(json)); the Kubernetes API
|
|
239
|
+
* then base64-encodes that string again as the Secret's `release` data value, so two base64 decodes precede the
|
|
240
|
+
* gunzip. Older releases may be stored without gzip, so the gzip magic bytes are checked before inflating. */
|
|
241
|
+
decodeHelmRelease(b64FromK8s) {
|
|
242
|
+
const helmStored = Buffer.from(b64FromK8s, "base64");
|
|
243
|
+
const payload = Buffer.from(helmStored.toString("utf8"), "base64");
|
|
244
|
+
let json;
|
|
245
|
+
if (payload.length >= 2 && payload[0] === 0x1f && payload[1] === 0x8b) {
|
|
246
|
+
json = zlib.gunzipSync(payload);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
json = payload.length > 0 ? payload : helmStored;
|
|
250
|
+
}
|
|
251
|
+
return JSON.parse(json.toString("utf8"));
|
|
252
|
+
}
|
|
253
|
+
/** Best-effort recovery of a usable chart repository reference from chart metadata. The Helm release Secret does
|
|
254
|
+
* not record where a chart came from, so only an explicit OCI source can be returned with confidence. */
|
|
255
|
+
sniffChartRepo(metadata) {
|
|
256
|
+
const sources = Array.isArray(metadata === null || metadata === void 0 ? void 0 : metadata.sources) ? metadata.sources : [];
|
|
257
|
+
const ociRef = sources.find(s => typeof s === "string" && s.startsWith("oci://"));
|
|
258
|
+
return ociRef;
|
|
259
|
+
}
|
|
260
|
+
/** Renders a human hint (chart home / sources) shown in a comment when the chart repository could not be resolved. */
|
|
261
|
+
buildRepoHint(metadata) {
|
|
262
|
+
const hints = [];
|
|
263
|
+
if (typeof (metadata === null || metadata === void 0 ? void 0 : metadata.home) === "string" && metadata.home)
|
|
264
|
+
hints.push(metadata.home);
|
|
265
|
+
if (Array.isArray(metadata === null || metadata === void 0 ? void 0 : metadata.sources))
|
|
266
|
+
hints.push(...metadata.sources.filter((s) => typeof s === "string"));
|
|
267
|
+
return hints.length > 0 ? hints.join(", ") : undefined;
|
|
268
|
+
}
|
|
269
|
+
// --------------------------------------------------------------------
|
|
270
|
+
// Helm Command Generation
|
|
271
|
+
// --------------------------------------------------------------------
|
|
272
|
+
/** Builds the full block of generated commands for one Helm release: the asset create line, plus enterprise-scoped
|
|
273
|
+
* default values and (when present) cabinet-scoped override values, each delivered via a heredoc to keep the output
|
|
274
|
+
* a single self-contained script stream. */
|
|
275
|
+
buildHelmReleaseCommands(release, flags) {
|
|
276
|
+
const lines = [];
|
|
277
|
+
const versionSuffix = release.chartVersion ? `:${release.chartVersion}` : "";
|
|
278
|
+
lines.push(`# --- Helm release: ${release.namespace}/${release.name} (chart ${release.chartName}${versionSuffix}) ---`);
|
|
279
|
+
// The Codiac asset model has no chart-version field; version is a deploy-time concern, so surface it for the operator.
|
|
280
|
+
if (release.chartVersion) {
|
|
281
|
+
lines.push(`# Chart version at import time: ${release.chartVersion} (set explicitly at deploy time; not stored on the asset).`);
|
|
282
|
+
}
|
|
283
|
+
let repo = release.repoGuess;
|
|
284
|
+
if (!repo) {
|
|
285
|
+
this.todoCount++;
|
|
286
|
+
lines.push(`# TODO: the Helm release secret does not record its chart repository; set --chart-repo to the Codiac registry code for the repo that publishes [${release.chartName}].`);
|
|
287
|
+
if (release.repoHint)
|
|
288
|
+
lines.push(`# hint - chart home/sources: ${release.repoHint}`);
|
|
289
|
+
repo = "<CHART_REPO>";
|
|
290
|
+
}
|
|
291
|
+
const createParts = ["codiac asset create --helm", `--chart ${release.chartName}`, `--chart-repo ${repo}`];
|
|
292
|
+
if (flags.enterprise)
|
|
293
|
+
createParts.push(`--enterprise ${flags.enterprise}`);
|
|
294
|
+
createParts.push(`--name ${release.name}`, "--silent");
|
|
295
|
+
lines.push(createParts.join(" "));
|
|
296
|
+
// Chart defaults define the asset baseline -> enterprise-scoped helm config.
|
|
297
|
+
if (release.defaults && Object.keys(release.defaults).length > 0) {
|
|
298
|
+
lines.push(`# Chart default values for ${release.name}:`);
|
|
299
|
+
lines.push(this.buildHelmValuesConfigBlock(release.name, release.defaults, "enterprise", release.namespace, flags));
|
|
300
|
+
}
|
|
301
|
+
// Operator overrides define per-deployment behavior -> cabinet-scoped helm config.
|
|
302
|
+
if (release.overrides && Object.keys(release.overrides).length > 0) {
|
|
303
|
+
lines.push(`# Release override values for ${release.name} (captured verbatim from the live release; MAY CONTAIN SECRETS - review before running):`);
|
|
304
|
+
lines.push(this.buildHelmValuesConfigBlock(release.name, release.overrides, "cabinet", release.namespace, flags));
|
|
305
|
+
}
|
|
306
|
+
return lines;
|
|
307
|
+
}
|
|
308
|
+
/** Builds a single `codiac config set -t helm` command whose value is the entire values document, supplied via a
|
|
309
|
+
* quoted heredoc so the YAML passes through the shell literally. `--escape-expressions` ensures any third-party
|
|
310
|
+
* `@{...}` tokens in the values are stored as literals rather than evaluated by Codiac at deploy time. */
|
|
311
|
+
buildHelmValuesConfigBlock(assetName, values, scope, namespace, flags) {
|
|
312
|
+
const parts = ["codiac config set --silent"];
|
|
313
|
+
if (flags.enterprise)
|
|
314
|
+
parts.push(`--enterprise ${flags.enterprise}`);
|
|
315
|
+
parts.push(`-a ${assetName}`);
|
|
316
|
+
if (scope === "enterprise")
|
|
317
|
+
parts.push("--enterprise-scope");
|
|
318
|
+
else
|
|
319
|
+
parts.push(`-c ${namespace}`);
|
|
320
|
+
parts.push("-t helm", "--entire-file", "--value-stdin", "--escape-expressions");
|
|
321
|
+
const yamlText = YAML.stringify(values).replace(/\n+$/, "");
|
|
322
|
+
return `${parts.join(" ")} <<'EOF'\n${yamlText}\nEOF`;
|
|
323
|
+
}
|
|
166
324
|
scanNamespacePvcs(namespace, coreApi) {
|
|
167
325
|
var _a, _b, _c;
|
|
168
326
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -363,16 +521,22 @@ class ImportCluster extends core_1.Command {
|
|
|
363
521
|
parts.push(`--value '${shellEscaped}'`);
|
|
364
522
|
return parts.join(" ");
|
|
365
523
|
}
|
|
366
|
-
/** Builds a codiac secretStore:capture command.
|
|
367
|
-
|
|
368
|
-
|
|
524
|
+
/** Builds a codiac secretStore:capture command. When the import was run with --subscription-id, threads
|
|
525
|
+
* it through so the generated line resolves the Azure tenant context unambiguously when the operator
|
|
526
|
+
* has multiple cached azure subscriptions. */
|
|
527
|
+
buildSecretStoreCaptureCommand(storeName, flags) {
|
|
528
|
+
const parts = [`codiac secretStore:capture --silent --name=${storeName} --provider=azure`];
|
|
529
|
+
if (flags["subscription-id"])
|
|
530
|
+
parts.push(`--subscription-id=${flags["subscription-id"]}`);
|
|
531
|
+
return parts.join(" ");
|
|
369
532
|
}
|
|
370
533
|
// --------------------------------------------------------------------
|
|
371
534
|
// Output
|
|
372
535
|
// --------------------------------------------------------------------
|
|
373
|
-
outputCommands(groups, flags) {
|
|
374
|
-
|
|
375
|
-
|
|
536
|
+
outputCommands(groups, helmGroups, flags) {
|
|
537
|
+
var _a, _b, _c, _d;
|
|
538
|
+
if (groups.length === 0 && helmGroups.length === 0) {
|
|
539
|
+
this.log("# No deployments or Helm releases found to import.");
|
|
376
540
|
return;
|
|
377
541
|
}
|
|
378
542
|
this.log("");
|
|
@@ -401,7 +565,7 @@ class ImportCluster extends core_1.Command {
|
|
|
401
565
|
this.log("");
|
|
402
566
|
this.log("# --- Secret Store Capture ---");
|
|
403
567
|
for (const store of [...this.discoveredStores].sort()) {
|
|
404
|
-
this.log(this.buildSecretStoreCaptureCommand(store));
|
|
568
|
+
this.log(this.buildSecretStoreCaptureCommand(store, flags));
|
|
405
569
|
}
|
|
406
570
|
}
|
|
407
571
|
if (flags["generate-pvcs"] && this.discoveredPvcs.size > 0) {
|
|
@@ -412,30 +576,43 @@ class ImportCluster extends core_1.Command {
|
|
|
412
576
|
this.log(this.discoveredPvcs.get(name));
|
|
413
577
|
}
|
|
414
578
|
}
|
|
415
|
-
|
|
579
|
+
// Group both raw and helm commands by namespace, then iterate the union so a namespace that contains only
|
|
580
|
+
// Helm releases (and no raw Deployments) still gets its own section and cabinet line.
|
|
581
|
+
const groupsByNs = new Map();
|
|
416
582
|
for (const group of groups) {
|
|
417
|
-
|
|
583
|
+
const list = (_a = groupsByNs.get(group.namespace)) !== null && _a !== void 0 ? _a : [];
|
|
584
|
+
list.push(group);
|
|
585
|
+
groupsByNs.set(group.namespace, list);
|
|
586
|
+
}
|
|
587
|
+
const helmByNs = new Map();
|
|
588
|
+
for (const helmGroup of helmGroups) {
|
|
589
|
+
const list = (_b = helmByNs.get(helmGroup.namespace)) !== null && _b !== void 0 ? _b : [];
|
|
590
|
+
list.push(helmGroup);
|
|
591
|
+
helmByNs.set(helmGroup.namespace, list);
|
|
592
|
+
}
|
|
593
|
+
const allNamespaces = [...new Set([...groupsByNs.keys(), ...helmByNs.keys()])].sort();
|
|
594
|
+
for (const namespace of allNamespaces) {
|
|
595
|
+
this.log("");
|
|
596
|
+
this.log(`# --- Namespace: ${namespace} ---`);
|
|
597
|
+
if (flags["generate-cabinet"]) {
|
|
418
598
|
this.log("");
|
|
419
|
-
this.log(
|
|
420
|
-
lastNamespace = group.namespace;
|
|
599
|
+
this.log(this.buildCabinetCreateCommand(namespace, flags));
|
|
421
600
|
}
|
|
422
|
-
|
|
601
|
+
for (const helmGroup of (_c = helmByNs.get(namespace)) !== null && _c !== void 0 ? _c : []) {
|
|
423
602
|
this.log("");
|
|
424
|
-
|
|
603
|
+
for (const line of helmGroup.lines) {
|
|
604
|
+
this.log(line);
|
|
605
|
+
}
|
|
425
606
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
607
|
+
for (const group of (_d = groupsByNs.get(namespace)) !== null && _d !== void 0 ? _d : []) {
|
|
608
|
+
this.log("");
|
|
609
|
+
this.log(group.assetCommand);
|
|
429
610
|
for (const cmd of group.configCommands) {
|
|
430
611
|
this.log(cmd);
|
|
431
612
|
}
|
|
432
|
-
}
|
|
433
|
-
if (group.volumeMountCommands.length > 0) {
|
|
434
613
|
for (const cmd of group.volumeMountCommands) {
|
|
435
614
|
this.log(cmd);
|
|
436
615
|
}
|
|
437
|
-
}
|
|
438
|
-
if (group.filestoreBindCommands.length > 0) {
|
|
439
616
|
for (const cmd of group.filestoreBindCommands) {
|
|
440
617
|
this.log(cmd);
|
|
441
618
|
}
|
|
@@ -604,12 +781,14 @@ ImportCluster.examples = [
|
|
|
604
781
|
'<%= config.bin %> <%= command.id %> --run-in-cluster',
|
|
605
782
|
'<%= config.bin %> <%= command.id %> --run-in-cluster --enterprise myco --environment dev --cluster mycluster --generate-cabinet --generate-secret-store',
|
|
606
783
|
'<%= config.bin %> <%= command.id %> --run-in-cluster --enterprise myco --environment dev --cluster mycluster --generate-pvcs --generate-volume-mounts',
|
|
784
|
+
'<%= config.bin %> <%= command.id %> --run-in-cluster --enterprise myco --environment dev --cluster mycluster --generate-cabinet --generate-secret-store --subscription-id 00000000-0000-0000-0000-000000000000',
|
|
607
785
|
];
|
|
608
786
|
ImportCluster.flags = {
|
|
609
787
|
"run-in-cluster": core_1.Flags.boolean({ description: 'Run using in-cluster Kubernetes config (service account). Required for headless/pod execution.' }),
|
|
610
788
|
enterprise: core_1.Flags.string({ description: 'Enterprise code to include in generated commands.' }),
|
|
611
789
|
environment: core_1.Flags.string({ description: 'Environment name to include in generated commands (required by --generate-cabinet).' }),
|
|
612
790
|
cluster: core_1.Flags.string({ description: 'Cluster name to include in generated cabinet create commands (required by --generate-cabinet).' }),
|
|
791
|
+
"subscription-id": core_1.Flags.string({ char: 's', description: 'Cloud subscription containing the source cluster; threaded into generated secretStore:capture commands so they run silently in multi-subscription tenants.' }),
|
|
613
792
|
"generate-cabinet": core_1.Flags.boolean({ description: 'Include codiac cabinet create commands in the output (one per namespace). Requires --enterprise, --environment, and --cluster.' }),
|
|
614
793
|
"generate-secret-store": core_1.Flags.boolean({ description: 'Include codiac secretStore:capture commands in the output for discovered Azure Key Vaults.' }),
|
|
615
794
|
"generate-pvcs": core_1.Flags.boolean({ description: 'Include codiac pvc create commands (enterprise-scope) plus codiac config add -t filestore bindings for every PersistentVolumeClaim mounted by a discovered deployment.' }),
|