Integrate ezbake as library for Carvel/Kubernetes tile support - #612
Merged
Conversation
Bring in changes from ezbake's yogesh/vks-tile-changes branch that make the carvel baker work with any k8s runtime (VKS, TKR) instead of being tied to the registry release. - Remove separate package-install job; consolidate into registry-data - Generate full K8s manifest templates (ServiceAccount, ClusterRole, ClusterRoleBinding, Secret, PackageInstall) per package install - Add BOSH link consumer (cluster/cluster-info) for namespace resolution - Switch runtime config from registry to tanzu-content release - Inject content-namespace from BOSH link into values context - Backfill tests for all new behaviors ai-assisted=yes Co-authored-by: Yogesh Katreddy Veera <yogesh.katreddy@broadcom.com> Co-authored-by: Praveen Rewar <praveen.rewar@broadcom.com> Made-with: Cursor
rizwanreza
force-pushed
the
carvel-kiln-integration-using-ezbake
branch
from
March 10, 2026 20:54
da7e134 to
9af3123
Compare
rizwanreza
marked this pull request as draft
March 10, 2026 21:17
rizwanreza
marked this pull request as ready for review
March 12, 2026 20:10
notrepo05
requested changes
Mar 17, 2026
| ) | ||
|
|
||
| type CarvelLockfile struct { | ||
| Release CarvelReleaseLock `yaml:"release"` |
Member
There was a problem hiding this comment.
I'd recommend that we rename this to releases or at least serialize it as such so that the Kilnfile.lock is consistent with non-Carvel tiles
- Git repo is assumed and not created - BOSH release is NOT uploaded on publish anymore, publish reuses the BOSH release from Kilnfile.lock
it's now in tas-ecosystem repo
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.
Embeds ezbake functionality into kiln as a Go library, adding full lifecycle support for baking, uploading, publishing, and reproducibly re-baking Carvel/Kubernetes tiles.
New commands
kiln carvel bake— Transforms an imgpkg bundle into a BOSH release and bakes it into a.pivotalfile. When aKilnfile.lockis present, downloads the cached BOSH release from Artifactory instead of regenerating locally.kiln carvel upload— Generates a BOSH release from Carvel tile source, uploads the tarball to Artifactory, and writesKilnfile.lockwith the remote location and checksum.kiln carvel publish— Bakes a final tile with version stamping and produces a JSON bake record for reproducible builds.kiln carvel re-bake— Reproduces a tile build from a bake record, verifying source revision matches the git checkout.New packages
internal/carvel— CoreBakerthat reads tile metadata (base.yml) and imgpkg bundles, generates a BOSH release viabosh create-release, creates a kiln-compatible structure in.ezbake/, and invokeskiln baketo produce the final.pivotalfile.internal/carvel/models— Data models for tile metadata, Carvel lockfiles, package installs, runtime configs, and jobs.Architecture
The
kiln carvelcommand group is registered inmain.goand delegates to subcommands viajhanda.CommandSet. Each subcommand uses the standardflags.Standardembedded struct to load Kilnfiles with variable interpolation (e.g., from~/.kiln/credentials.yml), keeping credential handling consistent with existing kiln commands. TheBakerinterface drives the imgpkg-to-BOSH transformation and tile assembly.Other changes
CarvelLockfilenow usesreleases(plural, as a slice) instead ofrelease(singular), matching the standardKilnfileLockformat inpkg/cargo.staticcheckandunusedfindings across the new files (capitalized error strings, redundant embedded field selectors, unnecessaryfmt.Sprintf, unused functions).BeforeEachblocks that rungit commitnow pass-c user.name/-c user.emailinline so they work on CI runners without global git config.Baker, and the Carvel model types.Usage
Test plan
go test ./internal/carvel/...— Baker and model unit testsgo test ./internal/commands/...— All carvel subcommand tests (bake, upload, publish, re-bake)go test ./internal/acceptance/carvel/...— Integration/acceptance testsgolangci-lint run ./...— Zero lint issues