Kubernetes installation

If you want to deploy the Varnish Virtual Registry on a Kubernetes cluster, you can use our official Helm Chart.

The Helm Chart has a whole range of configurable settings that are listed on the chart’s README.md file on GitHub.

You can simply run helm install varnish-virtual-registry oci://docker.io/varnish/orca-chart to deploy Varnish Virtual Registry to your Kubernetes cluster using Helm. However, it makes sense to configure your Kubernetes deployment by overriding some settings in values.yaml.

Step 1: Create a values.yaml file

Create a values.yaml file that contains the configuration settings you want to override. The orca section of the values.yaml file reflects the configuration specification of the Varnish Virtual Registry.

The following code block illustrates how you can override values.yaml to configure the supported registries of your Virtual Registry deployment:

orca:
  virtual_registry:
    registries:
    - name: dockerhub
      default: true
      remotes:
      - url: https://docker.io
    - name: quay
      remotes:
      - url: https://quay.io
    - name: ghcr
      remotes:
      - url: https://ghcr.io
    - name: k8s
      remotes:
      - url: https://registry.k8s.io
    - name: npmjs
      remotes:
      - url: https://registry.npmjs.org
    - name: go
      remotes:
      - url: https://proxy.golang.org
    - name: github
      remotes:
      - url: https://github.com
    - name: gitlab
      remotes:
      - url: https://gitlab.com

We have tutorials that teaches you how to enable TLS and register a custom license using the Helm Chart:

Step 2: Install the Helm Chart

Run the following command to install the Helm Chart and deploy the Virtual Registry to your Kubernetes cluster:

helm install -f values.yaml varnish-virtual-registry oci://docker.io/varnish/orca-chart

This command uses the custom values.yaml file to override the standard configuration. The name of the Helm deployment in this case is varnish-virtual-registry.

You can run helm status varnish-virtual-registry to check the status of the Helm deployment, and you can run kubectl get all -A -l "app.kubernetes.io/name=orca-chart,app.kubernetes.io/instance=varnish-virtual-registry" to check the status of the deployment in Kubernetes.

Check that Varnish Virtual Registry is accepting traffic

Varnish Virtual Registry has a health-check endpoint at /healthz, and will respond with a 200 OK to all requests on that path regardless of Host.

Kubernetes offers different ways to reach a container from the outside world: through a cluster IP address, using a port on a node, using ingress or gateway access.

For the sake of simplicity, we’ll do a simple test by setting up temporary port forwarding. Simply run the following command to link port 80 of your Varnish Virtual Registry container on the Kubernetes cluster to port 8080 on your local machine:

kubectl port-forward -n default svc/varnish-virtual-registry-orca-chart 8080:80

The default configuration has the Virtual Registry listening for HTTP traffic on port 80. If you have changed this to a different port, make sure to adjust your kubectl port-forward command.

Once the port forwarding is set up, you can access http://localhost:8080/healthz as shown below:

curl http://localhost:8080/healthz -I

HTTP/1.1 200 OK
Date: Wed, 29 Oct 2025 16:17:17 GMT
Content-Length: 0
Accept-Ranges: bytes
Connection: keep-alive

®Varnish Software, Wallingatan 12, 111 60 Stockholm, Organization nr. 556805-6203