Skip to content

Latest commit

 

History

History
168 lines (116 loc) · 5.36 KB

RELEASE.md

File metadata and controls

168 lines (116 loc) · 5.36 KB

Linkerd2 Release

This document contains instructions for releasing Linkerd2.

1. Bump the proxy version

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.

2. Bump the proxy-init or CNI plugin version

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.

3. Optional: push images

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

4. Tag the release

  • 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.

5. Do a walkthrough verification of the release

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

6. Send the announcement email

Send an email to cncf-linkerd-dev@lists.cncf.io, cncf-linkerd-users@lists.cncf.io, and cncf-linkerd-announce@lists.cncf.io, 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. ⭐

7. Send an announcement to Linkerd Slack's #announcements channel

Ensure that you send a brief summary of the release in Linkerd Slack's #announcement channel.