Enterprise Not open source: This functionality is only available commercially.

VespaSet CRD

The VespaSet is the Custom Resource Definition (CRD) used to declare a Vespa deployment on Kubernetes. The Vespa Kubernetes Operator watches VespaSet resources and reconciles the cluster state to match the declared specification. This page is a reference for the fields available under spec.

Pod-level customization is done through podTemplate overrides, which accept a standard Kubernetes PodTemplateSpec. For the full details on override targets and merge policies, see Configure Custom Overrides.

apiVersion: k8s.ai.vespa/v1
kind: VespaSet
metadata:
  name: my-vespa-cluster
  namespace: vespa
spec:
  version: 8.752.24
  configServer:
    image: "images.example.com/vespa/configserver"
    storageClass: "standard"
    generateRbac: true
  application:
    image: "images.example.com/vespa/application"
  ingress:
    endpointType: "LOAD_BALANCER"
  profiles:
    default:
      storageClass: "local-storage"

version

TypeRequired
stringNo

The Vespa version to deploy, e.g. 8.752.24. The version is used as the image tag for the images provided in configServer.image and application.image — e.g. an image of images.example.com/vespa/configserver with version 8.752.24 resolves to images.example.com/vespa/configserver:8.752.24. Changing this field triggers a rolling upgrade of the deployment — see Upgrade Vespa on Kubernetes.

configServer

Configuration that applies to the ConfigServer pods.

FieldTypeDescription
image string The container image to use for ConfigServer pods. The version field is appended as the image tag.
storageClass string A string matching the name of a StorageClass resource in your cluster, used for the ConfigServer persistent volumes. Storage performance is less critical for ConfigServers, so a cost-efficient network-attached storage class is generally an appropriate tradeoff — see Configure Local Storage Type.
serviceAccount string The name of an existing Kubernetes ServiceAccount to run the ConfigServer pods as. Use this when RBAC resources are managed externally instead of by the operator.
generateRbac boolean When true, the operator automatically generates the RBAC resources (ServiceAccount, Role, and RoleBinding) required by the ConfigServer pods — see Permissions.

application

Configuration that applies to the application (container and content) pods.

FieldTypeDescription
image string The container image to use for application pods. The version field is appended as the image tag.
storageClass string A string matching the name of a StorageClass resource in your cluster, used for the persistent volumes of the application pods. For content clusters, we recommend node-local storage to maximize performance — see Configure Local Storage Type.
podTemplate object A standard Kubernetes PodTemplateSpec overlay applied to application pods by default. If a cluster names a profile, the profiles podTemplate takes precedence for the pods of that cluster — see Configure Custom Overrides.

ingress

Configuration for the external access layer — see Configure External Access Layer.

FieldTypeDescription
endpointType string The type of Kubernetes Service endpoint to expose for Vespa traffic. One of:
  • NONE — no load balancer endpoint is created.
  • CLUSTER_IP — a ClusterIP Service, reachable only from within the cluster.
  • LOAD_BALANCER — a LoadBalancer Service, provisioning an external load balancer.

profiles

A map of profile names to per-cluster configuration. A profile maps a cluster id as defined in services.xml to configuration for the pods of that Vespa cluster, allowing different settings for different cluster types within the same VespaSet. An arbitrary number of profiles can be defined — see Configure Custom Overrides.

FieldTypeDescription
<name>.storageClass string A string matching the name of a StorageClass resource in your cluster, used for the persistent volumes of the pods in this profile. For content clusters, we recommend node-local storage to maximize performance — see Configure Local Storage Type.
<name>.podTemplate object A standard Kubernetes PodTemplateSpec overlay applied to the pods in this profile — see Configure Custom Overrides.
spec:
  profiles:
    default:
      storageClass: "standard"
    music:
      storageClass: "local-storage"