Overview
Weaviate is an AI-native vector database designed for storing, indexing, and querying vector embeddings alongside structured object data. This template deploys a multi-node Weaviate 1.38 cluster using Raft consensus for schema and cluster state management, with optional AI module support for vectorization and generative search, and optional scheduled backups to AWS S3 or GCS.What Gets Created
- Stateful Weaviate Workload — A multi-replica cluster with one persistent volume per node for vector and object data.
- Volume Set — Persistent storage per replica with optional autoscaling.
- Cron Backup Workload (optional) — Triggers Weaviate’s built-in backup API on a schedule to write full snapshots to cloud storage.
- Identity & Policy — An identity bound to the workload with
revealaccess to credential secrets, and cloud storage access when backup is enabled. - Secrets — An opaque secret holding the API key, user, and all AI module API keys.
This template does not create a GVC. You must deploy it into an existing GVC.
Prerequisites
This template has no external prerequisites unless backup is enabled. To install, follow the instructions for your preferred method:UI
Browse, install, and manage templates visually
CLI
Manage templates from your terminal
Terraform
Declare templates in your Terraform configurations
Pulumi
Declare templates in your Pulumi programs
Configuration
The defaultvalues.yaml for this template:
Core Settings
replicas— Number of Weaviate nodes. A minimum of 3 is recommended for production — the Raft consensus layer requires a quorum (2 of 3) to elect a leader and process schema changes.clusterName— Internal cluster identifier used in Raft coordination.apiKey— Bearer token that controls all access to the Weaviate instance, including schema management and data. Change before deploying to production.apiUser— Username associated with the API key, used for authorization and the admin list.queryDefaultsLimit— Default result limit applied to queries that do not specify one.defaultVectorizerModule— The vectorizer Weaviate calls automatically on insert and query for new collections. Set tononeif you are providing your own vectors.cpu/memory— Resource limits applied to each Weaviate replica.
Storage
volumes.data.initialCapacity— Initial volume size in GiB per replica (minimum 10). Defaults to 20.volumes.data.autoscaling.maxCapacity— Maximum volume size in GiB when autoscaling is enabled.volumes.data.autoscaling.minFreePercentage— Percentage of free space that triggers a scale-up.volumes.data.autoscaling.scalingFactor— Multiplier applied to the current capacity when scaling up.
Multi-Zone
SetmultiZone.enabled: true to spread replicas across availability zones within the location. Verify your selected location supports multi-zone before enabling.
Firewall
internal_access.type— Controls which workloads can reach Weaviate:same-gvc— All workloads in the same GVC (default).same-org— All workloads in the org.workload-list— Only workloads listed ininternal_access.workloads.
AI Modules
Weaviate supports pluggable AI modules for automatic vectorization and generative search. Modules are disabled by default.Supported Modules
| Module | Type | Provider | API Key Field |
|---|---|---|---|
text2vec-openai | Vectorizer | OpenAI | modules.openai.apiKey |
text2vec-cohere | Vectorizer | Cohere | modules.cohere.apiKey |
text2vec-huggingface | Vectorizer | Hugging Face | modules.huggingface.apiKey |
generative-openai | Generative | OpenAI | modules.openai.apiKey |
generative-anthropic | Generative | Anthropic | modules.anthropic.apiKey |
generative-cohere | Generative | Cohere | modules.cohere.apiKey |
Example — Automatic Vectorization with OpenAI
Example — Generative Search with Anthropic
Connecting
Weaviate is accessible internally from any workload in the same GVC:| Access | Hostname | Port |
|---|---|---|
| Load-balanced (any replica) | {release-name}-weaviate.{gvc}.cpln.local | 8080 (REST), 50051 (gRPC) |
| Specific replica | {release-name}-weaviate-{n}.{gvc}.cpln.local | 8080 (REST), 50051 (gRPC) |
apiKey:
Backing Up
When enabled, a cron workload triggers Weaviate’s built-in backup API on schedule to write a full snapshot to cloud storage. Each backup is stored at{path}/{backup-id}/ and includes all collections and their data.
AWS S3
Set up a Cloud Account
If you do not have one, create a Cloud Account. Set
backup.aws.cloudAccountName to its name.GCS
Set up a Cloud Account
If you do not have one, create a Cloud Account. Set
backup.gcp.cloudAccountName to its name.Restoring a Backup
Exec into any Weaviate replica and POST to the restore endpoint. Replaces3 with gcs for GCP backups, and BACKUP_ID with the backup name from your bucket (e.g. weaviate-backup-20260610-020000):
Important Notes
- Minimum 3 replicas for production — Raft requires a quorum (2 of 3) to elect a leader and process schema changes. A 2-node cluster cannot reach quorum if one node fails.
- API key security — Change
apiKeybefore deploying to production. This key controls all access to the instance including schema management and data. - Modules must be declared — Adding an API key alone does not activate a module. Every module you intend to use must be listed in
modules.enabled. - Multi-zone — Verify your selected location supports multi-zone before enabling.
External References
Weaviate Documentation
Official Weaviate documentation
Weaviate REST API
REST API reference including backup and restore endpoints
Weaviate Modules
Documentation for vectorizer and generative AI modules
Weaviate GraphQL API
GraphQL API reference for querying vector and object data