Artifacts associated with this release: OVAs and container images.



Bottlerocket vends its VMware variant OVAs using a secure distribution tool called tuftool. Please follow instructions down below to download Bottlerocket OVA.

  1. Install Rust and Cargo
curl -sSf | sh
  1. Install tuftool using Cargo
CARGO_NET_GIT_FETCH_WITH_CLI=true cargo install --force tuftool
  1. Download the root role tuftool will use to download the OVA
curl -O ""
sha512sum -c <<<"e9b1ea5f9b4f95c9b55edada4238bf00b12845aa98bdd2d3edb63ff82a03ada19444546337ec6d6806cbf329027cf49f7fde31f54d551c5e02acbed7efe75785  root.json"
  1. Export the desired Kubernetes Version. EKS Anywhere currently supports 1.22, 1.21 and 1.20
export KUBEVERSION="1.22"
  1. Download the OVA
tuftool download . --target-name "${OVA}" \
   --root ./root.json \
   --metadata-url "${KUBEVERSION}/x86_64/" \
   --targets-url ""

Bottlerocket Tags

OS Family - os:bottlerocket

EKS-D Release

1.22 - eksdRelease:kubernetes-1-22-eks-6

1.21 - eksdRelease:kubernetes-1-21-eks-13

1.20 - eksdRelease:kubernetes-1-20-eks-15

Ubuntu with Kubernetes 1.22

Ubuntu with Kubernetes 1.21

Ubuntu with Kubernetes 1.20

Building your own Ubuntu OVA

The EKS Anywhere project OVA building process leverages upstream image-builder repository. If you want to build an OVA with a custom Ubuntu base image to use for an EKS Anywhere cluster, please follow the instructions below.

Having access to a vSphere environment and docker running locally are prerequisites for building your own images.

Required vSphere Permissions

Virtual machine


  • Create new


  • Change configuration
  • Add new disk
  • Add or remove device
  • Change memory
  • Change settings
  • Set annotation


  • Power on
  • Power off
  • Console interaction
  • Configure CD media
  • Device connection

Snapshot management:

  • Create snapshot


  • Mark as template

Resource Pool

  • Assign vm to resource pool


  • Allocate space
  • Browse data
  • Low level file operations


  • Assign network to vm

Steps to build an OVA

  1. Spin up a builder-base docker container and exec into it. Please use the most recent tag for the image on its repository here
docker exec -it bash
  1. Clone the eks-anywhere-build-tooling repo.
git clone
  1. Navigate to the image-builder directory.
cd eks-anywhere-build-tooling/projects/kubernetes-sigs/image-builder
  1. Get the vSphere connection details and create a json file named vsphere.json with the following template.
    "cluster": "<vSphere cluster name>",
    "datacenter": "<datacenter name on vSphere>",
    "datastore": "<datastore to be used on vSphere>",
    "folder": "<folder path to use for building ova>",
    "network": "<dhcp enabled network name>",
    "resource_pool": "<vSphere resource pool to use>",
    "vcenter_server": "<vSphere server URL>",
    "username": "<vSphere username>",
    "password": "<vSphere password>",
    "template": "",
    "insecure_connection": "false",
    "linked_clone": "false",
    "convert_to_template": "false",
    "create_snapshot": "true"

  1. Export the vSphere connection data file, escaping all the quotes
export VSPHERE_CONNECTION_DATA=\"$(cat vsphere.json | jq -c . | sed 's/"/\\"/g')\"
  1. Download the most recent release bundle manifest and get the latest URLs for etcdadm and crictl for the intended Kubernetes version.
  1. Export the CRICTL_URL and ETCADM_HTTP_SOURCE environment variables with the URLs from previous step.
export CRICTL_URL=<crictl url>
export ETCDADM_HTTP_SOURCE=<etcdadm url>
  1. Create a library on vSphere for image-builder.
govc library.create "CodeBuild"
  1. Update the Ubuntu configuration file with the new custom ISO URL and its checksum at image-builder/images/capi/packer/ova/ubuntu-2004.json
  2. Setup image-builder and run the OVA build for the Kubernetes version.
RELEASE_BRANCH=1-22 make release-ova-ubuntu-2004


The various images for EKS Anywhere can be found in the EKS Anywhere ECR repository . The various images for EKS Distro can be found in the EKS Distro ECR repository .