This document contains instructions for releasing Linkerd2.
Determine the commit SHA of the linkerd2-proxy
repo to be included in the
release. If
proxy-version
is already at the desired SHA, skip to step 2.
If updating to linkerd-proxy
HEAD, note the commit SHA at
latest.txt (Look for
linkerd2-proxy-<linkerd2-proxy-sha>.tar.gz
).
Create a new branch in the linkerd2
repo, username/proxy-version-bump
.
Then run:
bin/git-commit-proxy-version <linkerd2-proxy-sha>
The script will update the .proxy-version
file. Submit a PR to obtain reviews
and approval.
If the linkerd2/proxy-init
or linkerd2/cni-plugin
projects have a new
release (which is rare), the following updates are needed:
-
pkg/version/version.go
(this also implies changes in unit test fixtures)var ProxyInitVersion = "v2.3.0" var LinkerdCNIVersion = "v1.4.0"
-
charts/linkerd-control-plane/values.yaml
Upgrade the version in
global.proxyInit.image.version
-
charts/linkerd2-cni/values.yaml
Upgrade the version in
image.version
Create a new branch in the linkerd2
repo,
username/proxy-init-version-bump
.
Open a pull request that includes the changes.
To facilitate testing you might want to publish the docker images to your private repo.
First tag the release:
git tag edge-2024.3.1
Do not push this tag just yet, to avoid triggering the actual public release.
Make sure you're logged into your Github docker registry:
echo "$GH_PAT" | docker login ghcr.io -u $GH_USERNAME --password-stdin
Where $GH_USERNAME
is your Github username and $GH_PAT
is a personal access
token with enough permissions for creating Github packages.
Then this will build the images and also push them to your personal Github docker registry (note this implies you've already set docker buildx in your machine, if not follow these instructions):
DOCKER_REGISTRY=ghcr.io/$GH_USERNAME DOCKER_MULTIARCH=1 DOCKER_PUSH=1 bin/docker-build
If this is the first time you push those images into your personal registry,
you'll need to go to https://github.com/$GH_USERNAME?tab=packages
and access
the settings for each image in order to make them public.
After having successfully pushed those images, delete the tag so you can create it again and push it for good as explained in the following step.
Now testers can pull the CLI binaries through this:
DOCKER_REGISTRY=ghcr.io/$GH_USERNAME bin/docker-pull-binaries edge-2024.3.1
which will dump them under the target/release
directory.
Besides using those particular binaries to install Linkerd, they'll also need to
point to your registry using the --registry
flag.
target/release/linkerd2-cli-edge-2024.3.1-darwin install --registry ghcr.io/$GH_USERNAME -f ~/tmp/linkerd-overrides.yml
- Checkout the
main
branch - Tag, e.g.
edge-24.3.1
- Push the tag
That will kick off a CI Release workflow run that will:
- Build and push the docker images for the tag that was created
- Run the k3d integration tests in the Github actions VMs themselves
- Run a k3d integration test on a separate ARM64 host
- Create a release in Github, and upload the CLI binaries with their checksums
- Dispatch an event caught by the website repo that triggers a website rebuild which will update the edge version in the website
- Retrieve the installation script from run.linkerd.io and verify it installs the current version being released
- Deploy the updated helm charts
You can locate the CI run here.
Go to the release page in Github and check that the notes are properly formatted and the files are there. Download the file for your system along with its checksum, verify the checksum matches, and do a basic sanity check:
linkerd version
linkerd install | kubectl apply -f -
linkerd check
linkerd viz install | kubectl apply -f -
linkerd viz check
linkerd dashboard
Send an email to [email protected], [email protected], and [email protected], announcing the release.
Subscribe to these mailing lists if you aren't on them:
Make sure to include the install instructions.
To install the CLI for this edge release, run:
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | sh
And please check the upgrade instructions for detailed steps on how to upgrade your cluster using either the CLI or Helm.
Aftewards, include the full release notes. Liberally apply emoji. ⭐
Ensure that you send a brief summary of the release in Linkerd Slack's #announcement channel.