You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For a quick start with Helm, refer to the [Helm Quickstart Guide](https://helm.sh/docs/intro/quickstart/#initialize-a-helm-chart-repository).
25
-
26
22
:::info Deployment Architecture
27
-
The Spice.ai Helm chart deploys the application as a stateless Kubernetes Deployment by default. This configuration does not persist data between pod restarts. For workloads requiring data persistence, such as file-based acceleration, the chart supports deploying Spice.ai as a StatefulSet with persistent volume claims by enabling and configuring the `stateful` section in the values file.
23
+
By default, the Spice.ai Helm chart deploys the application as a stateless Kubernetes Deployment. To persist data between restarts (e.g., for file-based acceleration), enable and configure the `stateful` section in the values file. Refer to the [Stateful Configuration](#stateful-configuration) section for details.
28
24
:::
29
25
30
-
## Values
26
+
## What are Kubernetes and Helm?
27
+
28
+
**Kubernetes** is an open-source platform for automating deployment, scaling, and management of containerized applications.
29
+
**Helm** is a package manager for Kubernetes that simplifies the installation and configuration of applications using reusable templates called charts.
30
+
31
+
Spice publishes a Helm chart that simplifies the deployment of Spice.ai OSS on Kubernetes.
32
+
33
+
## Deploy Spice using Helm in Kubernetes
31
34
32
-
The following table lists the configurable parameters of the Spice.ai chart and their [default values](https://github.com/spiceai/spiceai/blob/trunk/deploy/chart/values.yaml). Override the default values by creating a `values.yaml` file ([example](#example-valuesyaml)).
35
+
### Prerequisites
36
+
37
+
- Access to a Kubernetes cluster.
38
+
- For local testing, try running a local Kubernetes cluster using [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/).
39
+
-`kubectl` CLI installed and configured to interact with the target Kubernetes cluster. Visit the [Kubernetes docs](https://kubernetes.io/docs/tasks/tools/#kubectl) for installation instructions.
40
+
- Helm CLI installed. Visit the [Helm docs](https://helm.sh/docs/intro/install/) for installation instructions.
41
+
42
+
### Add the Spice Helm repository
43
+
44
+
A Helm repository (Helm repo) is a storage location where Helm charts are hosted and can be accessed for deployment in Kubernetes clusters. Add the Spice Helm repository to your local Helm client and update the index to get the latest charts:
Spice can be installed multiple times in the same cluster by specifying a different release name for each installation.
39
74
40
-
Define a [Spicepod](https://spiceai.org/docs/getting-started/spicepods) to be loaded by the Spice.ai runtime by overriding the `spicepod` value in the `values.yaml` file.
75
+
#### Command Breakdown
76
+
77
+
-`helm install`: Installs a new Helm chart. To upgrade an existing release, use `helm upgrade`. Combine both upgrade and install by specifying `helm upgrade --install`.
78
+
-`spiceai`: The name of the release. This name is customizable and can be set to any preferred value, e.g., `spiceai-my-app-v1` and `spiceai-my-app-v2` are valid release names. Each Helm release is a distinct installation of the same chart.
79
+
-`spiceai/spiceai`: The chart to install. The first `spiceai` is the repository name added earlier, and the second `spiceai` is the name of the chart to install. While the repository name is customizable, the chart name is not.
80
+
-`--namespace default`: The Kubernetes namespace to install the chart into. This is optional and defaults to `default`.
81
+
82
+
Another valid command to install the chart is (assuming the repository name is `my-spiceai-repo`):
On occasion, you may need to roll back a Spice Helm release to a previous version. To do so, use the `helm rollback` command. This will notify Kubernetes to redeploy Spice back to a previous version of the Helm release:
To uninstall a Helm release, use the `helm uninstall` command. This will cause Kubernetes to remove the Spice deployment entirely. Note that any data stored in volumes created by configuring the `stateful` parameter will be preserved and must be manually deleted if desired:
By default, the Helm release installs a minimal Spice.ai setup with an empty Spicepod. To add a Spicepod and adjust other settings, customize the release as needed by creating a `values.yaml` file or by using the `--set` flag.
133
+
134
+
:::note
135
+
`values.yaml` is the configuration file used in Helm to define the user-configurable parameters of a Helm chart. The `--set` flag is used to specify individual values on the command line. Visit the [Helm docs](https://helm.sh/docs/chart_template_guide/values_files/#helm) for more information.
136
+
:::
137
+
138
+
Create a `values.yaml` file and override the default values as needed.
139
+
The full list of configurable parameters and their defaults are specified in the [values.yaml file](https://github.com/spiceai/spiceai/blob/trunk/deploy/chart/values.yaml) in the `spiceai/spiceai` repository.
140
+
The [Common Parameters](#common-parameters) section below lists the most commonly used configurable parameters and their descriptions.
141
+
142
+
### Spicepod
143
+
144
+
To customize the Spicepod that the Spice.ai runtime will load, define a [Spicepod](https://spiceai.org/docs/getting-started/spicepods) in a new `values.yaml` file.
| `additionalLabels` | Additional labels to add to all resources. | `{}` |
63
-
| `image.repository` | The repository of the Docker image. | `spiceai` |
64
-
| `image.tag` | Replace with a specific version of Spice.ai to run. | `1.0.5` |
65
-
| `replicaCount` | Number of Spice.ai replicas to run. | `1` |
66
-
| `service.type` | Kubernetes service type. Can be null, ClusterIP, NodePort, or LoadBalancer. | `null` |
67
-
| `monitoring.podMonitor.enabled` | Enable Prometheus metrics collection for the Spice pods. Requires the [Prometheus Operator](https://prometheus-operator.dev/docs/operator/api/#monitoring.coreos.com/v1.PodMonitor) CRDs. | `false` |
68
-
| `image.pullSecrets` | Specify Docker registry secret names as an array. | `[]` |
69
-
| `tolerations` | List of node taints to tolerate. | `[]` |
70
-
| `resources` | Resource requests and limits for the Spice.ai container. See [Container resource examples](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#example-1). | `{}` |
71
-
| `additionalEnv` | Additional environment variables to set in the Spice.ai container. | `[]` |
72
-
| `stateful.enabled` | Use a StatefulSet with a PVC for the data volume. | `false` |
73
-
| `stateful.storageClass` | Storage class for the volume claim template in the StatefulSet. | `standard` |
74
-
| `stateful.size` | Size of each PV in the StatefulSet. | `1Gi` |
75
-
| `stateful.mountPath` | Mount path in container for the persistent volume. | `/data` |
76
-
| `serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `false` |
|`additionalEnv`| Additional environment variables to set in the Spice.ai container. |`[]`|
174
+
|`additionalLabels`| Additional labels to add to all resources. |`{}`|
175
+
|`image.pullSecrets`| Specify Docker registry secret names as an array. |`[]`|
176
+
|`image.repository`| The repository of the Docker image. |`spiceai`|
177
+
|`image.tag`| Replace with a specific version of Spice.ai to run. |`1.3.0`|
178
+
|`monitoring.podMonitor.enabled`| Enable Prometheus metrics collection for the Spice pods. Requires the [Prometheus Operator](https://prometheus-operator.dev/docs/operator/api/#monitoring.coreos.com/v1.PodMonitor) CRDs. |`false`|
179
+
|`replicaCount`| Number of Spice.ai replicas to run. |`1`|
180
+
|`resources`| Resource requests and limits for the Spice.ai container. See [Container resource examples](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#example-1). |`{}`|
181
+
|`service.type`| Kubernetes service type. Can be null, ClusterIP, NodePort, or LoadBalancer. |`null`|
182
+
|`serviceAccount.create`| Specifies whether a ServiceAccount should be created. |`false`|
183
+
|`spicepod`| Define the [Spicepod](https://spiceai.org/docs/getting-started/spicepods) to be loaded by the Spice.ai runtime. |`{}`|
184
+
|`stateful.enabled`| Use a StatefulSet with a PVC (Persistent Volume Claim) for the data volume. |`false`|
185
+
|`stateful.mountPath`| Mount path in container for the persistent volume. |`/data`|
186
+
|`stateful.size`| Size of each PV in the StatefulSet. |`1Gi`|
187
+
|`stateful.storageClass`| Storage class for the volume claim template in the StatefulSet. |`standard`|
188
+
|`tolerations`| List of node taints to tolerate. |`[]`|
77
189
78
190
## Environment Variables and Secrets
79
191
@@ -82,7 +194,7 @@ Add extra environment variables using the `additionalEnv` property. This can be
82
194
```yaml
83
195
additionalEnv:
84
196
- name: SPICED_LOG
85
-
value: "DEBUG"
197
+
value: 'DEBUG'
86
198
- name: SPICE_SECRET_SPICEAI_KEY
87
199
valueFrom:
88
200
secretKeyRef:
@@ -131,7 +243,7 @@ Once the monitoring is enabled, import the [Spice Grafana dashboard](../../clien
131
243
132
244
### Health and Readiness
133
245
134
-
Spice provides two HTTP endpoints for monitoring the runtime state: `/health`and `/v1/ready`. These endpoints are used for Kubernetes health and readiness probes in the Spice deployment.
246
+
Spice provides two HTTP endpoints for monitoring the runtime state: `/health` and `/v1/ready`. These endpoints are used for Kubernetes health and readiness probes in the Spice deployment. The Spice Helm chart automatically configures these probes.
135
247
136
248
#### Health Probe
137
249
@@ -227,7 +339,7 @@ Enabling the StatefulSet architecture requires configuration of the `stateful` s
0 commit comments