krel is the new golang based tool for managing releases.
The purpose of krel is to provide a toolkit for managing the different steps needed to create Kubernetes Releases. This includes manually executed tasks like generating the Release Notes during the release cycle and performing automated tasks like pushing the Kubernetes release artifacts to Google Cloud Storage.
Either download the latest version of krel by using the hack/get-krel script:
./hack/get-krelOr compile krel by running the compile-release-tools script from the root of this repo:
./compile-release-tools krelOr run the following command in the terminal:
go install k8s.io/release/cmd/krel@latestkrel has several subcommands that perform various tasks during the release lifecycle:
krel [subcommand]
| Subcommand | Description |
|---|---|
| announce | Build and announce Kubernetes releases |
| ci-build | Build Kubernetes in CI and push release artifacts to Google Cloud Storage (GCS) |
| cve | Add and edit CVE information |
| ff | Fast forward a Kubernetes release branch |
| history | Run history to build a list of commands that ran when cutting a specific Kubernetes release |
| push | Push Kubernetes release artifacts to Google Cloud Storage (GCS) |
| release | Release a staged Kubernetes version |
| release-notes | The subcommand of choice for the Release Notes subteam of SIG Release |
| stage | Stage a new Kubernetes version |
| testgridshot | Take a screenshot of the testgrid dashboards |
The krel announce send command sends release announcement emails via the
Gmail API using Google OAuth. No additional setup is required — a browser
window will open for authorization on each run.
In mock mode (default), emails are sent to
kubernetes-announce-test.
In production mode (--nomock), emails are sent to
kubernetes-announce and
dev@kubernetes.io.
# Mock run (sends to kubernetes-announce-test only):
krel announce send --tag v1.35.1
# Production run (sends to kubernetes-announce and dev):
krel announce send --tag v1.35.1 --nomock
# Print announcement content without sending:
krel announce send --tag v1.35.1 --print-onlyIf you are running krel in a headless environment (e.g. SSH session), use the
--no-browser flag:
krel announce send --tag v1.35.1 --no-browserThis prints the OAuth authorization URL to the terminal instead of opening a
browser. Open the URL in any browser (can be on another machine), authorize the
application, and the browser will redirect to http://localhost?code=.... Since
no local server is listening, the page will fail to load — this is expected.
Copy the full URL from the browser's address bar and paste it back into the
terminal to complete authentication.
The OAuth app is managed in the k8s-release Google Cloud project.
Some of the krel subcommands are under development and their usage may already differ from these docs.