kptdev / kpt

Automate Kubernetes Configuration Editing
https://kpt.dev
Apache License 2.0
1.7k stars 228 forks source link

Reconsider whether we need statically nested subpackages #3343

Open bgrant0607 opened 2 years ago

bgrant0607 commented 2 years ago

This has come up a few times, so I am creating an issue for it.

Statically nested subpackages raised some tricky cases in the v1 design, such as pipeline execution order, functions needing to execute multiple times over the same content, providing inputs to functions in nested subpackages, demand fetching of subpackages, independent upgrades of subpackages, and so on. Some issues are still outstanding, such as #1084 and #2451.

Now that we have the package orchestrator, config sync, and multiple repos and syncs in config sync (i.e., not just a monorepo), we should reconsider whether we want nested subpackages. Nested subpackages are not yet supported in porch (#3241), and we may not want to support them in porch.

Obvious alternatives to static subpackages are:

I view sets of variants of the same package as a specific pattern that deserves a more specific solution (package sets, as mentioned in https://github.com/GoogleContainerTools/kpt/issues/3121#issuecomment-1172774033) and #3347.

Some of the challenges with related packages would still exist, such as managing inputs to the package functions, but flat packages seems simpler.

cc @justinsb @mortent @droot

justinsb commented 2 years ago

I share your suspicion that it is unneeded.

I propose we continue with our app-based dogfooding and wait until we need it ourselves.

If we find that a bunch of things aren't needed, or (for example) we want to change the default update behaviour, then we declare a v2.

bgrant0607 commented 2 years ago

@justinsb One case where nested subpackages has come up without is Config Connector: #3344

yuwenma commented 2 years ago

To capture what we discussed today for https://github.com/GoogleContainerTools/kpt/pull/3398.

The nested Ghost package may actually be desired.

(context: The ghost package has two nested packages: Ghost host and MariaDB.)

Pros:

Cons: