Azure / Azure/fleet

[Feature] Track KubeFleet release-process changes downstream

Open
#1,303 0 comments 0 reactions 1 assignee Claimed by @ytimocin View on GitHub
enhancement
Dominant language
Go
Stars
226
Forks
44
Avg merge
11h 7m
Merged PRs (30d)
5

Description

**Is your feature request related to a problem? Please describe.**

KubeFleet is reworking its release process upstream ([kubefleet-dev/kubefleet#693](https://github.com/kubefleet-dev/kubefleet/issues/693)) — atomic orchestrator, cosign signing, multi-arch images, multi-minor upgrade tests, `release-metadata.json` published as a Release asset, etc.

Today, AzureFleet learns about new upstream releases manually. There is no automation to detect new tags, no verification of upstream lineage, no test pipeline that runs Azure-specific overlays against the bumped upstream code, and no provenance link from MCR images back to the upstream KubeFleet artifact.

**Describe the solution you'd like**

This epic tracks AzureFleet's downstream-side work — discovery, verification, and consumption of upstream releases, plus Azure-specific compatibility surface. Subtasks will be filed as separate issues from this epic as work begins.

### Pull-side automation

- [ ] Nightly cron workflow (`.github/workflows/upstream-poll.yml`): fetch latest upstream GA tag, skip pre-releases, deduplicate against `go.mod`
- [ ] Verify upstream lineage: `cosign verify` against image digest from `release-metadata.json`. Abort + alert on signature failure
- [ ] Auto-open bump PR (`bump/kubefleet-vX.Y.Z`): bump `go.mod`, `go mod tidy`, regenerate manifests
- [ ] Post breaking-change + CRD-change list as PR comment, sourced from `release-metadata.json`

### CI overlay on bump PRs

- [ ] Consume upstream's reusable upgrade-test workflow (`uses: kubefleet-dev/kubefleet/.github/workflows/upgrade.yml@`) once it lands upstream
- [ ] Layer Azure overlay tests on bump PRs: Arc chart compat, Deployment + ManagedResource webhook tests, ManagedResource VAP, `cmd/crdinstaller` upgrade path

### Compatibility documentation

- [ ] AzureFleet `VERSIONING.md`: Azure-specific compat axes (Arc chart, Deployment + ManagedResource webhooks, `cmd/crdinstaller`) + version-map table to upstream
- [ ] Document AzureFleet support window (may differ from upstream — call out explicitly)

### MCR pipeline provenance

- [ ] Capture upstream tag + Rekor URI from `release-metadata.json` at bump time; pass through the build pipeline
- [ ] MCR build attestation references upstream Rekor entry — preserves verifiable lineage from KubeFleet tag → MCR image
- [ ] Document verification path (Microsoft signature → upstream Rekor → KubeFleet tag) in README / SECURITY.md

### Coordination with upstream

- [ ] Decide `cmd/crdinstaller/` ownership with upstream maintainers — resolve before KubeFleet ships its standalone CRD tarball
- [ ] Add `CONTRIBUTING.md` rule: core changes go upstream first; Azure-specific code uses existing extension points (`pkg/propertyprovider/azure`, `types_azure.go` pattern)

**Describe alternatives you've considered**

1. **Status quo (manual bumps)** — fragile, no upstream signature verification, doesn't scale.
2. **`repository_dispatch` from upstream** — rejected: couples a CNCF sandbox project to a specific commercial consumer; pull-based is the open-source norm and avoids credential lifecycle on the upstream side.
3. **GitHub release-publish webhook subscription** — viable alternative to cron polling. Cron preferred today for simplicity; can revisit if cadence tightens.

**Additional context**

Pairs with upstream tracking issue [kubefleet-dev/kubefleet#693](https://github.com/kubefleet-dev/kubefleet/issues/693). The full downstream desired-state flow (detect → verify → propose → human gate → MCR build) is documented in the planning doc under "Downstream — nightly poll: detect, verify, propose."

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.