feat: curate from a local fleet checkout (-fleet-dir) - #93
paurosello wants to merge 1 commit into
Conversation
…inference through agentgateway (platform.llmRouting) The lab could not test an unreleased chart change at all. Every hop of the delivery chain consumes a released artifact: agent-platform-connectivity is published to gsoci, agent-platform-standalone generates its whole chart from that release, and this lab vendors agent-platform-standalone from git at platform.apsRef. So the platform change most worth testing — the one not yet shipped — was the one change the lab could not install. platform.apsPath closes the last hop: it installs a local agent-platform-standalone checkout instead of the pinned commit, skipping the fetch and only building the chart's dependencies. The checkout is read, never written (helm fills its gitignored charts/). apsRepo/apsRef are ignored while it is set and the boot says which chart it used. `agentlab configure --defaults --aps-path <dir>` sets it, `--aps-path ""` clears it. The standalone side of the same gap is `hack/curate.sh -fleet-dir` (giantswarm/agent-platform-standalone#93); together they are the loop: curate there, install here. The first thing tested through that loop is platform.llmRouting: agent inference stops leaving the agent pods for api.anthropic.com and goes through the platform's own agentgateway, so the data plane emits GenAI metrics for every model call. One toggle renders both halves — the cluster-internal `llm` listener on the edge Gateway, and the base URL kagent's default ModelConfig dials — because a listener nothing uses and agents pointed at a closed port are both broken labs. The port is one constant, written into the listener and into that URL, so the pair cannot drift; it has nothing to do with platform.agentsPort, the HOST port for the kagent UI. Off by default: the chart change is unreleased, and the released umbrella's values.schema.json rejects an undeclared top-level key outright, so a block emitted by default would fail every install (HACKS.md U13). It needs platform.agents, since the cutover is a kagent ModelConfig. Verified on the lab: the listener answers a real completion, and after one agent turn the lab Prometheus serves agentgateway_gen_ai_client_token_usage_sum and agentgateway_gen_ai_client_cost_usd_total keyed by agent="<serviceaccount>", agent_namespace="kagent", with agentgateway_cost_catalog_lookups_total{status="Exact"} growing.
fleet.version is a released pin, so a change to agent-platform or agent-platform-connectivity reaches this chart only after it is published. That makes an unreleased fleet change untestable end to end: the standalone chart cannot carry it, and agentplatform-kind installs the standalone chart. -fleet-dir reads both source charts from a local checkout of giantswarm/agentic-platform instead. `helm pull --untar` and a checkout name the directory after the chart alike, so the two paths differ only in where the charts come from and the curated output is byte-identical for the same sources. The pin is not consulted in that mode and the run says so on stderr. CI's --check always pulls the pin, so output curated from a checkout is never what the committed files are compared against.
aee8d0b to
90ea25d
Compare
|
This repository retires with roadmap#4348: the Agent Platform ships as one chart, What this PR is for has a home in the one chart: testing an unreleased fleet change end to end is agentlab's |
|
Closing unmerged: this chart is retired under giantswarm/roadmap#4348 and the platform now ships as the single chart |
fleet.versionis a released pin, so a change toagent-platformoragent-platform-connectivityreaches this chart only after it is published.That makes an unreleased fleet change untestable end to end: this chart cannot
carry it, and
agentplatform-kindinstalls this chart.hack/curate.sh -fleet-dir <dir>reads both source charts from a localcheckout of
giantswarm/agentic-platforminstead:$ hack/curate.sh -fleet-dir ~/workspace/agentic-platform/helmhelm pull --untarand a checkout name the directory after the chart alike,so the two paths differ only in where the charts come from — the test asserts
the same sources curate byte-identically either way, with
Pulldisabled sothe checkout is provably the only source read.
fleet.versionis not consulted in that mode and the run says so on stderr.CI's
--checkalways pulls the pin, so output curated from a checkout isnever what the committed files are compared against, and the README says not
to commit it.
The transform stays deny-unknown: a new top-level values key still needs its
keys:rule (and, for an open map, anannotations:entry) before the runsucceeds. Writing that rule against a local branch and committing it with the
fleet.versionbump that makes it real is the intended flow, and the READMEdocuments it.
Proof
Used to curate
giantswarm/agent-platform#254(LLM routing) into this chartand install it on a kind lab through
platform.apsPath(giantswarm/agentlab#52). The
templates/llm/*files, theagent-platform-standalone.llmRoutinghelper rename and thellmRoutingvalues block all survived curation intact, and the running gateway served a
real completion. That run is also what caught a routing bug in #254 — which
is the point of being able to install an unreleased chart.
hack/curate.sh --checkagainst the pinned 3.2.4 still passes unchanged.