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"
| Type | Required |
|---|---|
| string | No |
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.
Configuration that applies to the ConfigServer pods.
| Field | Type | Description |
|---|---|---|
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.
|
Configuration that applies to the application (container and content) pods.
| Field | Type | Description |
|---|---|---|
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.
|
Configuration for the external access layer — see Configure External Access Layer.
| Field | Type | Description |
|---|---|---|
endpointType |
string |
The type of Kubernetes Service endpoint to expose for Vespa traffic. One of:
|
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.
| Field | Type | Description |
|---|---|---|
<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"