Repository navigation
chore(chart): release 0.8.0 with Edge v3.8.0 and routing kinds enabled - #24
Conversation
Bump the chart version to 0.8.0 and appVersion / default image tag to v3.8.0 (Chart.yaml, values.yaml, examples/production-values.yaml, manifests.yaml). Enable ingressclasses, Gateway API (gatewayclasses, gateways, httproutes, grpcroutes, tlsroutes, tcproutes, udproutes, referencegrants) and Traefik (ingressroutes, ingressroutetcps, ingressrouteudps, traefikservices) by default in config.kube.resources now that the chart defaults to Edge v3.8.0, which probes discovery at startup and skips any CRD not installed in the cluster. Refs NOFireAI/engineering#1954 Signed-off-by: Alexandros Touloupis <atouloupis@gmail.com>
|
@claude-fleet review |
|
Review task queued. Task: 649c4d2b-1290-4b63-b578-87bcff522dfe |
There was a problem hiding this comment.
Approve: no blocking or should_fix finding. Two nits, both about documentation and test coverage of the new defaults.
Findings:
- nit, values.yaml:12 — new default kinds require Edge >= v3.8.0, not stated next to the pinnable
image.tag - nit, tests/configmap_test.yaml:16 — 8 of the 13 new kinds are asserted nowhere
Verified:
- All 13 routing kinds appear exactly once each in
values.yaml(lines 208-220),examples/production-values.yaml(lines 70-82) andmanifests.yaml(lines 174-186), with names identical to the ClusterRole resources in templates/rbac.yaml:33-37 and manifests.yaml:106-111 — no typo, no kind watched without RBAC. manifests.yamlembedded config.json is valid JSON, 28 kinds, no duplicates, still noservices— so the check.sh comment ("its list differs from the chart default, which has services") still holds; chart default is the same set plusservices(29).- The ClusterRole grants get/list/watch on
gateway.networking.k8s.ioandtraefik.io/traefik.containo.usin both the template and manifests.yaml, so the "ClusterRole already grants" claim in values.yaml:223 is true for the enabled kinds as well as the opt-in ones. - The rewritten opt-in comment (values.yaml:223-229) matches what stayed commented: only cronjobs, priorityclasses, RBAC and the three calico* kinds — same for the production example comment at examples/production-values.yaml:52-53.
tag: "v3.8.0"andappVersion: "v3.8.0"agree, and manifests.yaml:22 usesnofireai/edge:v3.8.0, which is what check.sh:59 compares against Chart.yaml.- Chart.yaml 0.7.1 -> 0.8.0 is a minor bump for a default-behavior change; the RBAC grants (1a08413) are unreleased on main, so permissions and resource list ship in the same release — no upgrade window where the config watches kinds the role cannot read.
Checks run:
jqover the config.json embedded in manifests.yaml: valid, 28 entries, 0 duplicates,index("services")null- grep cross-check of each of the 13 kinds across values.yaml, examples/production-values.yaml, manifests.yaml and the three test files
Smaller things:
- The new assertions match a regex against the whole
data["config.json"]string rather than againstkube.resources, so they would also pass if a kind name appeared in some other field. Low risk today (none of these names occur elsewhere in the rendered config), buttests/render/cases/with anexpect.jqlike.kube.resources | index("httproutes")would pin it exactly, and that harness already exists. tests/e2e/kind.sh:86asserts only the endpoints informer in the startup log. The kind cluster has neither Gateway API nor Traefik CRDs, so it is the one place that would actually exercise the "skips the informer when the CRD is absent" claim — a! grep -qon a Gateway API informer error there would turn the claim into a test.
Not checked:
- Edge v3.8.0's discovery probing itself. The claim in the PR body and in values.yaml:226-229 ("the agent skips them otherwise ... when their CRDs are absent") is about code in NOFireAI/edge; no edge checkout is reachable here, so I could not confirm that a cluster without Gateway API or Traefik CRDs starts clean. Everything else in this release depends on that claim being true.
helm lint,helm unittest,tests/render/run.sh,tests/render/harness_test.shandtests/manifests/check.sh— helm, helm-unittest and yq are not installed in this environment. I read the new assertions and confirmed the strings they look for are present in the rendered sources, but I did not execute the suites. CI runs all of them except the e2e.
Not checked:
- NOFireAI/edge v3.8.0 discovery probing: no edge checkout reachable, so the 'skips Gateway API and Traefik informers when their CRDs are absent' claim in the PR body and values.yaml:226-229 is unverified
- helm lint, helm unittest, tests/render/run.sh, tests/render/harness_test.sh, tests/manifests/check.sh were not executed (helm, helm-unittest and yq are not installed in this environment)
Task 649c4d2b-1290-4b63-b578-87bcff522dfe on rp1, model claude-opus-5, effort medium.
| # Released tags carry the "v" prefix (nofireai/edge:v3.8.0); a bare "3.8.0" | ||
| # does not exist in the registry. | ||
| tag: "v3.7.1" | ||
| tag: "v3.8.0" |
There was a problem hiding this comment.
nit: The new default kube.resources entries depend on Edge v3.8.0's discovery probing, but nothing next to the pinnable image.tag says so. Failure: a user who upgrades the chart to 0.8.0 while keeping image.tag: "v3.7.1" in their own values file (the comment on lines 10-11 documents exactly this pinning style) gets a config listing 13 kinds that only v3.8.0 is claimed to skip when the CRDs are absent; the chart renders fine and the problem only shows at pod startup. Evidence: values.yaml:10-12 documents tag pinning with no minimum version; values.yaml:226-229 states the skipping behavior unconditionally, without naming the Edge version that implements it. Suggest adding "the routing kinds enabled by default need Edge >= v3.8.0" to the tag comment.
| path: data["config.json"] | ||
| - matchRegex: | ||
| path: data["config.json"] | ||
| pattern: '"ingressclasses"' |
There was a problem hiding this comment.
nit: Only 5 of the 13 newly enabled kinds are asserted anywhere; gatewayclasses, gateways, grpcroutes, tlsroutes, tcproutes, udproutes, ingressroutetcps and ingressrouteudps appear in no test. Failure: a typo or dropped entry in any of those 8 (in values.yaml, examples/production-values.yaml or manifests.yaml) ships with every suite green, and the kind is silently never watched. Evidence: tests/configmap_test.yaml:14-28 covers ingressclasses, httproutes, referencegrants, ingressroutes, traefikservices; tests/examples_test.yaml:12-23 covers three; tests/manifests/check.sh:24-29 covers five; grep for the other 8 across all three files returns nothing. One assertion on the full list (a count, or jq set equality in a tests/render case) would cover all 13 without 13 more asserts.
Summary
Release
nofire-edgechart0.8.0targeting Edgev3.8.0(NOFireAI/edge#164):Chart.yaml: Bumpversion: 0.8.0andappVersion: "v3.8.0".values.yaml/examples/production-values.yaml/manifests.yaml: Bumpimage.tagto"v3.8.0"(nofireai/edge:v3.8.0) and enable the 13 routing kinds (ingressclasses,gatewayclasses,gateways,httproutes,grpcroutes,tlsroutes,tcproutes,udproutes,referencegrants,ingressroutes,ingressroutetcps,ingressrouteudps,traefikservices) by default inconfig.kube.resources. Edgev3.8.0probes discovery at startup and skips Gateway API or Traefik informers when their CRDs are absent.tests/configmap_test.yaml/tests/examples_test.yaml/tests/manifests/check.sh: Assert that the defaultConfigMap, the production exampleConfigMap, andmanifests.yamlinclude the routing kinds inkube.resources.Testing
helm lint .helm unittest .(4 suites, 29 tests passed)EDGE_SRC=../edge tests/render/run.sh(66 cases passed, validated againstedgecheck)tests/render/harness_test.shtests/manifests/check.shAI assistance: Drafted and verified with Antigravity.
Refs NOFireAI/engineering#1954