Skip to content

kubectl-ate: per-operation installer options and exported steps - #154

Merged
EItanya merged 2 commits into
installer-object-storefrom
installer-cluster-access
Nov 8, 2026
Merged

EItanya merged 2 commits into
installer-object-storefrom
installer-cluster-access

Conversation

@EItanya

@EItanya EItanya commented Nov 8, 2026 •

Copy link
Copy Markdown

Step 4 of making the installer a library kagent can import. Stacked on #153.

kagent sets up its own database after the certificate controller and before Substrate, so it needs to add steps to an install.

  • Step, Run and InstallSteps are exported. Install runs InstallSteps. With postgres.type: external, a caller inserts its steps before the one named StepCheckDatabase.
  • Upgrade takes UpgradeOptions (DryRun, Out) and Uninstall takes UninstallOptions (IncludeCRDs, Purge, Confirm). Options keeps the cluster, charts and config.
  • Options.Charts (an fs.FS) replaces ChartDir. Nil still uses the embedded charts.

Tested with unit tests, plus status, upgrade --dry-run, and an unconfirmed uninstall --include-crds --purge against a kind cluster.

I wrote this with Claude Code and reviewed the diff.

@EItanya
EItanya force-pushed the installer-cluster-access branch from 330737f to 10c6309 Compare November 8, 2026 13:25
@EItanya EItanya changed the title kubectl-ate: take cluster access and charts from the caller kubectl-ate: take install charts as an fs.FS Nov 8, 2026
@EItanya
EItanya added this pull request to stack #155 November 8, 2026 13:25
@EItanya EItanya changed the title kubectl-ate: take install charts as an fs.FS kubectl-ate: per-operation installer options and exported steps Nov 8, 2026
A program that embeds the installer can pass charts it ships itself
instead of writing them to a directory.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Upgrade and Uninstall take their own options, so Options holds only the
cluster, charts and config. Step, Run and InstallSteps are exported so a
caller can add steps to an install, such as setting up its own database
before StepCheckDatabase.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
@EItanya
EItanya force-pushed the installer-cluster-access branch from 5eb8053 to 9d1eaad Compare November 8, 2026 16:07
@EItanya
EItanya merged commit d006b3b into main Nov 8, 2026
6 checks passed
EItanya added a commit that referenced this pull request Nov 8, 2026
…roviders (#159)

* docs: list substrate-atelet among the published charts (#151)

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
(cherry picked from commit 19cc8d5)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* charts: let egress use other credential providers (#152)

* charts: let egress use other credential providers

credentialProvider.enabled turns off the bundled Kubernetes Secret
provider and its k8s.io route. credentialProvider.extraProviders points
the egress gateway at providers deployed outside the chart, matching
the ate-setup --credential-provider options.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* charts: move extra credential providers under atenetEgress

credentialProvider configures the bundled provider. The extra providers
configure the egress gateway.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

---------

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
(cherry picked from commit 40c2eaa)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* kubectl-ate: typed postgres and objectStore config for install (#153)

* kubectl-ate: add typed objectStore config to install

objectStore now takes a bucket and s3 or gcs settings, and the installer
fills the atelet and substrate chart values from them. The substrate
release's object store plugin now gets the S3 region, endpoint, path
style and credentials too. Before, it had only the backend name.

The bare objectStore: s3 form still works, and so do the raw chart values.
The wizard asks for these settings instead of a values file.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* kubectl-ate: configure postgres and objectStore the same way

postgres is now a struct with a type, like objectStore, and both still
accept the type alone. The installer's RustFS is now objectStore type
bundled, matching postgres. Configs that say rustfs still work.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* kubectl-ate: don't name the system namespace in install help

TestNoNewHardcodedInstallLayoutInGo rejects ate-system literals.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

---------

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
(cherry picked from commit dda7ca9)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* kubectl-ate: per-operation installer options and exported steps (#154)

* kubectl-ate: take install charts as an fs.FS

A program that embeds the installer can pass charts it ships itself
instead of writing them to a directory.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* kubectl-ate: split installer options per operation and export steps

Upgrade and Uninstall take their own options, so Options holds only the
cluster, charts and config. Step, Run and InstallSteps are exported so a
caller can add steps to an install, such as setting up its own database
before StepCheckDatabase.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

---------

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
(cherry picked from commit d006b3b)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

* Move the installer to pkg/kagent/install (#157)

kagent imports the installer, so it can't stay under cmd/kubectl-ate/internal.
microvmassets moves with it. Fork-only packages live under pkg/kagent so
upstream can't add a package at the same path.

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
(cherry picked from commit 471cd0c)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>

---------

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant