Skip to main content
Weaviate Docs (migrated from docs.weaviate.io) Docs

Search documentation

Type to search this documentation.

On this pageOverview

Kubernetes: Getting to production

Are you ready to deploy and test Weaviate on a self-managed K8s (Kubernetes) cluster? This guide shows how to validate Weaviate’s capabilities in your enterprise environment.

At the end of this guide, expect to have:

  • A configured Helm-based deployment and networking setup
  • Basic scaling, persistent storage, and resource management
  • TLS, RBAC, and security best practices implemented
  • Monitoring, logging, and backup strategies enabled

Before beginning, ensure that you have the following:

  • Basic Kubernetes and containerization conceptual knowledge
  • Basic experience with Helm and kubectl
  • A running Kubernetes cluster with Weaviate installed
  • kubectl installed
  • Helm installed
  helm repo add weaviate https://weaviate.github.io/weaviate-helm
  helm install my-weaviate weaviate/weaviate
  • Customize the values to fit your enterprise requirements (e.g., resource allocation, storage settings).
  • Deploy the chart and verify pod health.
  • Configure an ingress controller to securely expose Weaviate.
  • Enable TLS with a certificate manager and enforce TLS encryption for all client-server communication.
  • Assign a domain name for external access.
  • Implement RBAC or admin lists to restrict user access.
An example of RBAC enabled on your Helm chart
YAML
authorization:
  rbac:
    enabled: true
    root_users:
      - admin_user1
      - admin_user2
An example of admin lists implemented on your Helm chart (if not using RBAC)
YAML
admin_list:
  enabled: true
  users:
    - admin_user1
    - admin_user2
    - api-key-user-admin
  read_only_users:
    - readonly_user1
    - readonly_user2
    - api-key-user-readOnly

Admin List Configuration

  • Implement horizontal scaling to ensure high availability:
YAML
replicaCount: 3
  • Define CPU/memory limits and requests to optimize pod efficiency.
An example of defining CPU and memory limits and cores
YAML
resources:
  requests:
    cpu: "500m"
    memory: "1Gi"
  limits:
    cpu: "2"
    memory: "4Gi"
  • Use Prometheus and Grafana to collect and analyze performance metrics.
  • Implement alerting for issue resolution.
An example of enabling service monitoring
YAML
serviceMonitor:
  enabled: true
  interval: 30s
  scrapeTimeout: 10s
  • Use the rolling update strategy used by Helm to minimize downtime.
An example of configuring the rolling update strategy.
YAML
updateStrategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 1
    maxUnavailable: 0
  • Test new Weaviate versions before deploying into production.
  • Implement disaster recovery procedures to ensure that data is restored quickly.

Voila! You now have a deployment that is somewhat ready for production. Your next step will be to complete the self-assessment and identify any gaps.

Have a question or feedback? Here's how to reach us.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu