Skip to main content
Version: main branch

Install Quickwit on Google GKE

This guide will help you set up a Quickwit cluster with the correct GCS permissions.

Set up

Before installing Quickwit with Helm, let's create a namespace for our playground.

export NS=quickwit-tutorial
kubectl create ns ${NS}

Quickwit stores its index on an object storage. We will use GCS, which is natively supported since the 0.7 version (for versions < 0.7, you should use an S3 interoperability key).

The following steps create a GCP and a GKE service account and bind them together. We are going to create them, set the right permissions and bind them.

export PROJECT_ID={your-project-id}
export GCP_SERVICE_ACCOUNT=quickwit-tutorial
export GKE_SERVICE_ACCOUNT=quickwit-sa
export BUCKET=your-bucket

kubectl create serviceaccount ${GKE_SERVICE_ACCOUNT} -n ${NS}

gcloud iam service-accounts create ${GCP_SERVICE_ACCOUNT} --project=${PROJECT_ID}

gcloud storage buckets add-iam-policy-binding gs://${BUCKET} \
--member "serviceAccount:${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/storage.objectAdmin"

# Notice that the member is related to a namespace.
gcloud iam service-accounts add-iam-policy-binding ${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${PROJECT_ID}.svc.id.goog[${NS}/${GKE_SERVICE_ACCOUNT}]"

# Now we can annotate our service account!
kubectl annotate serviceaccount ${GKE_SERVICE_ACCOUNT} \
iam.gke.io/gcp-service-account=${GCP_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com \
-n ${NS}

Install Quickwit using Helm

We are now ready to install Quickwit on GKE. If you'd like to know more about Helm, consult our comprehensive guide for installing Quickwit on Kubernetes.

helm repo add quickwit https://helm.quickwit.io
helm repo update quickwit

Let's set Quickwit values.yaml:

# We use the edge version here as we recently fixed
# a bug which prevents the metastore from running on GCS.
image:
repository: quickwit/quickwit
pullPolicy: Always
tag: edge

serviceAccount:
create: false
name: quickwit-sa

config:
default_index_root_uri: gs://{BUCKET}/qw-indexes
metastore_uri: gs://{BUCKET}/qw-indexes

We're ready to deploy:

helm install <deployment name> quickwit/quickwit -f values.yaml

Check that Quickwit is running

It should take a few seconds for the cluster to start. During the startup process, individual pods might restart themselves several times.

To access the UI, you can run the following command and then open your browser at http://localhost:7280:

kubectl port-forward svc/release-name-quickwit-searcher 7280:7280

Uninstall the deployment

Run the following Helm command to uninstall the deployment

helm uninstall <deployment name>

And don't forget to clean your bucket, Quickwit should have stored 3 files in gs://{BUCKET}/qw-indexes.