Repository navigation
feat(substrate): provision the snapshot store on CAPA through the chart — Crossplane S3 bucket + IRSA role, the snapshot location derived, the role annotation on atelet and ate-api-server - #412
Merged
Conversation
…rt — Crossplane S3 bucket + IRSA role, kagent.harness.snapshotLocation derived, the role annotation on atelet and ate-api-server (#411)
Published Helm chart
|
| Chart | agent-platform |
| Version | 4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593a |
| OCI reference | oci://gsoci.azurecr.io/charts/giantswarm/agent-platform:4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593a |
| Digest | sha256:a12e51cb3699a0ec943e06efaffc8ca9c4487cb4e27df8c8237082bae646213d |
| Registry | public — gsoci.azurecr.io |
| Git catalog | giantswarm-test-catalog (index) |
Pull this chart
helm pull oci://gsoci.azurecr.io/charts/giantswarm/agent-platform --version 4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593aPosted by architect-orb · build 6745 · commit ebd593a · updated in place on every push
Published Helm chart
|
| Chart | agent-platform-connectivity |
| Version | 4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593a |
| OCI reference | oci://gsoci.azurecr.io/charts/giantswarm/agent-platform-connectivity:4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593a |
| Digest | sha256:d859d14bb66990d44f6b19344979a1cb63063927abce6da37538d7ec66972c1b |
| Registry | public — gsoci.azurecr.io |
| Git catalog | giantswarm-test-catalog (index) |
Pull this chart
helm pull oci://gsoci.azurecr.io/charts/giantswarm/agent-platform-connectivity --version 4.8.2-dev.feat-substr--crossplane.2026-09-12.22-49-14.hebd593aPosted by architect-orb · build 6744 · commit ebd593a · updated in place on every push
This was referenced Sep 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #411 (epic giantswarm/giantswarm#37705, wave 1e; the live proof is the first CAPA installation's cut-over).
What
kagent.harness.snapshotStore.crossplaneprovisions Agent Substrate's snapshot store on CAPA the waypostgres.backup.crossplaneprovisions the kagent-pg backup bucket:templates/substrate/crossplane-aws.yaml): the CrossplaneBucket(lifecycle expirationaws.lifecycleDays, 30 days by default — an actor whose snapshot expired boots cold from the golden image again, nothing else is lost; public-access block; TLS-only policy; no Delete management policy,helm.sh/resource-policy: keep) and the IAMRole(aws.roleName, the bucket name by default) trusted through the installation's IRSA OIDC provider forsystem:serviceaccount:ate-system:ateletand…:ate-api-server, with a list/get/put/delete inline policy on the bucket.agent-platform.crossplane.{managementPolicies,managementPoliciesNoDelete,awsPartition,tags}) and the bucket quartet, the trust statement and the S3 policy become shared partials (templates/_crossplane-aws.tpl); the postgres template renders on them byte-identically (all 22 connectivityci/*.yamlrenders diffed before/after: identical).kagent.harness.snapshotLocation=s3://<aws.bucketName>/<prefix>(prefixkagentby default; no prefix →s3://<bucket>) for the kagent release — an explicit value that disagrees fails the render naming both keys; forwards the role's ARN aseks.amazonaws.com/role-arnon the substrate release'satelet.serviceAccount.annotationsandateApiServer.serviceAccount.annotations(an installation's own annotations stay next to it, a differing explicit role fails the render); holds the block back from the kagent chart —components.kagent.omitKeysnow takes dotted paths (agent-platform.omitPath, top-level entries unchanged).providerConfigRef,region,aws.{bucketName,accountId,oidcProvider}required when on;accountIdmust be the quoted 12-digit id (a bare number would print as a float in the ARN).components.substrate/substrate-crds→>=0.0.27-gs.8 <0.0.28-0(helm: ServiceAccount annotations for atelet and ate-api-server, extraEnv for ate-api-server substrate#27, releasedv0.0.27-gs.8:atelet.serviceAccount.annotations,ateApiServer.serviceAccount.annotations,ateApiServer.extraEnv);examples/customer-bom.yamlandtests/verify-components.pyfollow.Verification
make verify-substrate-store(new; in.circleci/custom.yml): off by default nothing renders and nothing is derived; on, the bucket quartet + role with both trust statements, the China partition,observeOnly,roleName; the meta chart's derived location, the held-back block, the annotation on both ServiceAccounts next to an operator's own; every guard.make verify-postgres verify-postgres-kagent-v2 verify-kagent-harness verify-components verify-meta verify-auto verify-kyverno: green.helm/agent-platform-connectivity/ci/*.yamlrender is unchanged. The meta chart'sci/*.yamlrenders differ only by the new default keys reaching the connectivity release's values (itskagentblock is open, so a live connectivity chart that predates this release accepts them — the fleet's transition window).ci/test-substrate-store-aws-values.yaml(the on shape) for the chart's ATS.Lab (agentlab,
platform.chartPathon this checkout)agentlab (cluster
agentlab, meta 4.8.0, connectivity 4.8.1 live) withplatform.chartPathon this checkout, the block off (the lab's store is the bundled RustFS,s3://ate-snapshots/kagent):agentlab platform: "Installing the local chart at …/helm/agent-platform" — exit 0 in 1m04s; the meta release went to revision 4 (agent-platform-1.1.35, the checkout's placeholder version); 16/16 HelmReleases Ready.agentlab platform-test: 9/9 PASS, exit 0.harness.snapshotLocation: s3://ate-snapshots/kagentand carries nosnapshotStorekey (held back); the substrate HelmRelease'satelet/ateApiServervalues and the two ServiceAccounts are unchanged (no role annotation derived with the block off).kagent.harness.snapshotStoreblock in its values —Ready: True, Helm upgrade succeeded: a connectivity chart that predates this release accepts the new keys, which is the fleet's transition window between the meta chart's roll-out and the connectivity OCIRepository re-resolving.platform.chartPathremoved,agentlab platformon 4.8.0 (revision 5, 13s),platform-testexit 0, 16/16 Ready.The connectivity chart's own changes are not installed by
chartPath(a component release from its OCIRepository range); they are verified by render (make verify-substrate-store, the 22 byte-identicalci/*.yamlrenders) and by the chart's ATS on this PR.Not lab-verified
Crossplane and IRSA: the lab has no upbound provider and no AWS account. The Crossplane objects are asserted by render (
verify-substrate-store); the live proof is the first CAPA installation's cut-over on the kagent API v2 line (the fleet template renders this block).Checklist
values.yamlandvalues.schema.jsonare valid (thekagentblock is open in both schemas; helm-docs regenerated).