diff --git a/docs/user-guides/upgrade-cluster.md b/docs/user-guides/upgrade-cluster.md new file mode 100644 index 0000000000..694a213213 --- /dev/null +++ b/docs/user-guides/upgrade-cluster.md @@ -0,0 +1,151 @@ +# Upgrade Vald cluster + +Before this document, we recommend reading [the configuration document](../user-guides/configuration.md) first. + +## Update Configuration + +When you'd like to update the configuration for the Vald cluster, you need to edit your configuration file and apply it according to your deployment method. +Please refer to one of the sections below according to your deployment method. + +
+If each Vald Agent already has the indexes and uses the backup feature, please DO NOT edit the dimension and the distance type to avoid initContainer error.
+(Each Vald Agent will restore from backup data when performing a rolling update) +
+ +
+The indexes will be clear when performing a rolling update if each Vald Agent already has the indexes and the backup feature disabled. +
+ +### Using Helm for deployment + +The configuration file is `values.yaml`. ([Helm Values](https://helm.sh/docs/chart_template_guide/values_files/)) + +You can edit your `values.yaml` and update your Vald cluster by following steps: + +1. Edit `values.yaml`. +1. Update with Helm command. + + ```bash + helm upgrade vald/vald --values + # e.g., helm upgrade vald vald/vald --values valeus.yaml + ``` + +### Using vald-helm-operator + +There are two configuration files: + +- `vhor.yaml` for vald-helm-operator +- `vr.yaml` for the Vald cluster + +If you don't need to update the `vald-helm-operator`, please skip step.1 and step.2. +The Vald cluster will be updated by the following steps: + +1. Edit `vhor.yaml`. +1. Apply `vhor.yaml`. + + ```bash + kubectl apply -f + # e.g., kubectl apply -f vhor.yaml + ``` + +1. Edit `vr.yaml`. +1. Apply `vr.yaml`. + + ```bash + kubectl apply -f + # e.g., kubectl apply -f vr.yaml + ``` + +## Upgrade Vald version + +We recommend using the latest Vald version. + +If your Vald cluster uses an old version and you'd like to upgrade the Vald version, you can upgrade by the following sections. +Please refer to one of the sections below according to your deployment method. + +
+When the upgrade request is applied, Kubernetes will perform a rolling update. +If your Vald cluster does not apply backup, the index will be cleared by a rolling update.
+In addition, if each Vald Agent already has the indexes and the backup feature enabled, please DO NOT edit the dimension and the distance type to avoid initContainer error. +(Each Vald Agent will restore from backup data when backup when performing a rolling update) +
+ +### Using Helm for deployment + +Using the `Helm` command for the deployment of the Vald cluster, the upgrading steps are below. + +
+Before upgrading, please confirm your Vald cluster version.
+If there is major or minor upgrading, the chart structure may have changed. +
+ +1. Verify vald repo in your helm repo + + ```bash + helm repo list + ``` + +1. Update Helm repo + + ```bash + helm repo update + # e.g., helm repo update vald + ``` + +1. Edit `values.yaml` + + - We recommend setting a specific version as an image tag. + + ```yaml + defaults: + --- + image: + tag: v1.5.6 # set a new version + ``` + +1. Apply `values.yaml` + + ```bash + helm upgrade vald/vald --values + # e.g., helm upgrade vald vald/vald --values valeus.yaml + ``` + +### Using vald-helm-operator + +The upgrading steps are below if you use `vald-helm-operator` for the deployment. + +1. Upgrade CRDs + + ```bash + kubectl replace -f https://raw.githubusercontent.com/vdaas/vald//charts/vald-helm-operator/crds/valdrelease.yaml + kubectl replace -f https://raw.githubusercontent.com/vdaas/vald//charts/vald-helm-operator/crds/valdhelmoperatorrelease.yaml + ``` + +1. Update `vhor` + + ```bash + kubectl patch vhor vhor-release -p '{"spec":{"image":{"tag":""}}}' + ``` + + - Also, you can upgrade manually by editing `vhor.yaml` and applying it. + +1. Edit `vr.yaml` + + - We recommend setting a specific version as an image tag. + + ```yaml + ... + spec: + defaults: + ... + image: + tag: v1.5.6 # set a new version + ... + ``` + +1. Apply `vr.yaml` + + ```bash + kubectl apply -f + # e.g., kubectl apply -f vr.yaml + ```