Skip to content

objectstore-plugin: storage settings come from ate-storage-config - #3197

Draft
SamPriyadarshi wants to merge 1 commit into
agent-substrate:mainfrom
SamPriyadarshi:storage-config-envfrom
Draft

SamPriyadarshi wants to merge 1 commit into
agent-substrate:mainfrom
SamPriyadarshi:storage-config-envfrom

Conversation

@SamPriyadarshi

Copy link
Copy Markdown

The object storage settings of the two objectstore-plugin sidecars were copied into four places (ate-api-server.yaml, atelet.yaml and both kind overlays), and nothing kept them in sync. This is part 1 of #2378, split as agreed on the issue: a static ate-storage-config ConfigMap (GCS in the base, rustfs on kind) and an optional ate-storage-credentials Secret (kind only), read via envFrom by the sidecars only. Rendering them from ate-setup settings for non-kind S3 installs is the follow-up.

Part of #2378

There is no digest annotation, so editing ate-storage-config restarts nothing, as with ate-otel-config. The file says to restart both workloads after a change. #2382 removes the existing ate.dev/env-hash digest. I can add a storage digest here if you want one.

requireGCS in the snapshotcredentials suite now reads the backend from the ConfigMap.

Tested on kind (gVisor lane only; no KVM here):

  • Installed main, then upgraded with deploy ate-system from this branch. Server-side apply removed the old inline env, and both sidecars ran with the same settings, read from the ConfigMap and Secret.
  • deploy apiserver and deploy atelet with no change rolled nothing. With the ConfigMap and Secret deleted, each of them recreated both.
  • deploy ate-system --fake-data-plane and back: fake-atelet got the S3 settings.
  • Fresh install from this branch.
  • Full gVisor e2e lane on the upgraded cluster and on the fresh install.
  • The effective env of every container is unchanged in all rendered bundles and single-component manifests, including the fake data plane.

Not run on GKE. The rendered GCS env there is unchanged too.

Upgrade note: storage env that was added to a sidecar by hand with kubectl still overrides the ConfigMap, because server-side apply only removes what ate-setup applied.

AI use: AI-assisted (code, tests and test runs). I reviewed and tested it.

  • Tests pass
  • Docs updated

The two objectstore-plugin sidecars had their storage settings copied
inline in ate-api-server.yaml, atelet.yaml and both kind overlays. Nothing
kept the copies in sync, and sidecars that disagree on the store lose
snapshots: ate-api-server's sidecar copies and deletes what atelet's
uploads.

Both sidecars now read the ate-storage-config ConfigMap via envFrom, plus
an optional ate-storage-credentials Secret, which kind uses for rustfs's
static keys. ate-setup applies the environment's copy before the
workloads, as it does ate-otel-config, including on the single-component
redeploys. fake-atelet takes the sidecar's envFrom along with its env.

The rustfs bucket-init Job keeps its values inline, because a Job's pod
template is immutable. A test checks that they match.
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