Fix:[1852] Add TestK8APIEndpoints and run it across k8s v1.33-v1.37 in CI - #1851
Merged
sameerforge merged 1 commit intoSep 9, 2026
Conversation
sameerforge
force-pushed
the
topic/sameerkh/k8s-api-endpoints-test
branch
4 times, most recently
from
September 4, 2026 07:06
79da279 to
dff625b
Compare
himsngh
requested review from
praveenrewar
and removed request for
carvel-bot
September 7, 2026 11:22
himsngh
reviewed
Sep 7, 2026
himsngh
reviewed
Sep 7, 2026
sameerforge
force-pushed
the
topic/sameerkh/k8s-api-endpoints-test
branch
3 times, most recently
from
September 8, 2026 08:48
68e5eb4 to
7851822
Compare
Contributor
Author
|
Sample CI run for this workflow : |
sameerforge
force-pushed
the
topic/sameerkh/k8s-api-endpoints-test
branch
3 times, most recently
from
September 9, 2026 08:34
59ef6e4 to
78d2430
Compare
Adds an e2e test that verifies kapp-controller's CRD-based API groups (kappctrl.k14s.io/v1alpha1, packaging.carvel.dev/v1alpha1) and its aggregated APIService (data.packaging.carvel.dev/v1alpha1) are registered and discoverable after deploy. This runs on every PR via the existing "Kind Cluster E2E tests" run-tests job, alongside the rest of the e2e suite, against the default kind node image. Adds a new k8s-api-endpoints.yml workflow, on a daily schedule plus workflow_dispatch, that runs TestK8APIEndpoints across the range of k8s minor versions kapp-controller supports. The minors tested are the last 4 released ones plus the next, derived from the k8s.io/client-go version pinned in go.mod so the range shifts automatically as dependency-updater.yml bumps go.mod. The latest patch for each minor is resolved at run time from the kindest/node Docker Hub tags API, since kindest/node images are cut by the kind maintainers on their own cadence and don't map one-for-one to kubernetes/kubernetes release tags - the registry itself is the only accurate source for which node images actually exist. The job loops over the resolved versions sequentially, creating and tearing down one kind cluster per version; a failure on one version doesn't stop the others - the loop runs through every version regardless, reports each failing k8s version via ::error:: annotations, and only fails the job once all versions have been attempted. The kind CLI is pinned to v0.33.0 because the action's default (v0.31.0) can't parse the containerd config v4 format that newer kindest/node images ship, which was breaking `kind load docker-image` for k8s v1.34+. Signed-off-by: Sameer <sameer.khan@broadcom.com>
sameerforge
force-pushed
the
topic/sameerkh/k8s-api-endpoints-test
branch
from
September 9, 2026 11:05
78d2430 to
6b5d772
Compare
himsngh
approved these changes
Sep 9, 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.
What this PR does / why we need it:
Adds
TestK8APIEndpoints, an e2e test verifying that after deploying kapp-controller:v1alpha1.data.packaging.carvel.devbecomesAvailabledata.packaging.carvel.dev/v1alpha1discovery exposespackagesandpackagemetadataspackaging.carvel.devdiscovery exposespackageinstallsandpackagerepositorieskappctrl.k14s.iodiscovery exposesappsThis closes a gap where kapp-controller's CRD/aggregated-API registration had no dedicated test coverage, so a regression here (e.g. the aggregated APIService failing to become
Availableon a given apiserver version) could only be caught indirectly, if at all. This test runs on every PR via the existing "Kind Cluster E2E tests"run-testsjob, alongside the rest of the e2e suite, against the default kind node image.Adds a new
k8s-api-endpoints.ymlworkflow, on a daily schedule plusworkflow_dispatch, that runsTestK8APIEndpointsacross the range of k8s minor versions kapp-controller supports. Compatibility drift from new k8s releases isn't a per-diff regression concern, so this runs separately from PRs rather than adding checks to every one, following the same schedule +workflow_dispatchidiom astrivy-scan.yml/dependency-updater.yml. The minors tested are derived from thek8s.io/client-goversion pinned ingo.mod(the last 4 released minors plus the next one), so the range shifts automatically asdependency-updater.ymlbumpsgo.modinstead of being hand-maintained. The latest patch for each minor is resolved at run time fromkubernetes/kubernetes's tags (viagit ls-remote, avoiding GitHub REST API rate limits). The job then loops over the resolved versions sequentially in a single job, creating and tearing down one kind cluster per version. A failure on one version doesn't stop the others: the loop runs through every version regardless, reports each failing k8s version via::error::annotations, and only fails the job once all versions have been attempted.Sample CI run for this workflow :
https://github.com/sameerforge/kapp-controller/actions/runs/34329006415/job/102392900710
Which issue(s) this PR fixes:
Fixes #1852
Does this PR introduce a user-facing change?
Additional Notes for your reviewer:
k8s-api-endpointsjob installskind/kubectlonce viahelm/kind-action@v1(install_only: true, pinned tov0.33.0because the action's current default,v0.31.0, can't parse the containerd config v4 format that newerkindest/nodeimages ship — this was breakingkind load docker-imagefor k8s v1.34+), builds the kapp-controller image once, then loops:kind create cluster→kind load docker-image→kapp deploy→ runTestK8APIEndpoints→kind delete cluster, per resolved version.run-tests(full e2e suite) is untouched and keeps testing against the default/latest kind node image.Review Checklist:
a link to that PR
change
Additional documentation e.g., Proposal, usage docs, etc.: