Skip to content

deployment-phase-1 #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 45 commits into from
May 16, 2025
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e661da4
uncommented deploy section
DanielleWashington Mar 13, 2025
cbd6d79
added k8s poc doc, prod readiness doc, added k8s landing page, and co…
DanielleWashington Mar 16, 2025
72873cb
Add Danielle to the slack updates
sebawita Mar 17, 2025
b016af2
Merge branch 'main' into deployment-phase-1
sebawita Mar 17, 2025
8ee5f9a
fixed link issue
DanielleWashington Mar 17, 2025
1b623c7
updated per Sebastian's review and feedback
DanielleWashington Mar 17, 2025
5994c6d
updated per JP's review and feedback
DanielleWashington Mar 18, 2025
d809573
updating with edits
DanielleWashington Mar 18, 2025
6e32f70
adding front matter to change sidebar label
DanielleWashington Mar 18, 2025
8ca1f81
updating with edits
DanielleWashington Mar 18, 2025
60d4787
removed unsupported byoc integrations
DanielleWashington Mar 18, 2025
0d1dbef
Merge branch 'main' into deployment-phase-1
DanielleWashington Mar 18, 2025
7471adf
added additional questions
DanielleWashington Mar 20, 2025
ee628de
production section added and k8s prod docs moved
DanielleWashington Mar 22, 2025
a02e757
hiding k8s on secondary navbar
DanielleWashington Mar 22, 2025
57db8e0
migrating docker and k8s installation guides, adding cards to deploym…
DanielleWashington Mar 23, 2025
19ed67d
migrating aws and gcp installation guides
DanielleWashington Mar 24, 2025
a72c8e0
adding config guides
DanielleWashington Mar 24, 2025
5085b2f
adding monitoring, persistence and images
DanielleWashington Mar 24, 2025
226e672
Merge branch 'main' into deployment-phase-1
TheCyberMaven Apr 3, 2025
e2c7f1d
adding k8s cli doc
TheCyberMaven Apr 6, 2025
b2d5e3a
adding placeholders
DanielleWashington Apr 7, 2025
703a04e
Merge branch 'main' into deployment-phase-1
DanielleWashington Apr 7, 2025
4a5b877
making code blocks multi-line and removing duplicate on sidebar
TheCyberMaven Apr 10, 2025
077f7ef
adding the async replication env vars doc
TheCyberMaven Apr 11, 2025
895f987
updated per JP's review
TheCyberMaven Apr 14, 2025
e5c59cb
updating broken links
TheCyberMaven Apr 14, 2025
e409901
updated doc with further instructions
TheCyberMaven Apr 17, 2025
814f779
adding and updating docs
TheCyberMaven Apr 27, 2025
3c30e47
updating EKS doc, adding horizontal scaling doc and migrating docs fr…
TheCyberMaven May 9, 2025
72852f7
fixing broken link
TheCyberMaven May 9, 2025
e13a8ef
Merge branch 'main' into deployment-phase-1
TheCyberMaven May 9, 2025
bb6c046
fixing broken links
DanielleWashington May 9, 2025
6307881
more updates and doc migrations
DanielleWashington May 12, 2025
306b9bb
fixing sidebar links
DanielleWashington May 12, 2025
2d5e616
broken link fixes
DanielleWashington May 12, 2025
3059546
Merge branch 'main' into deployment-phase-1
DanielleWashington May 12, 2025
341c870
Update navigation modal
g-despot May 13, 2025
c507c9a
sidebar updates
DanielleWashington May 14, 2025
d5a1dcc
sidebar changes
DanielleWashington May 14, 2025
68b7297
broken link fixes
DanielleWashington May 15, 2025
16cab0d
broken link fixes
DanielleWashington May 16, 2025
2a8166d
final phase 1 edits
DanielleWashington May 16, 2025
30f33ad
updating metrics in the monitoring doc
DanielleWashington May 16, 2025
02cf4e7
final phase 1 changes
DanielleWashington May 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _build_scripts/slack-find-author.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ git_slack_map=(
["Charlie Harr"]="<@U044XTHRVFA>"
["Connor Shorten"]="<@U03FRH53SUT>"
["Daniel Madalitso Phiri"]="<@U060UJ41YBC>"
["DanielleWashington"]="<@U088SBVDCET>"
["Dirk Kulawiak"]="<@U03MWHK4KV3>"
["Duda Nogueira"]="<@U05K3K9M82F>"
["dyma solovei"]="<@U07NGR323JR>"
Expand Down
2 changes: 1 addition & 1 deletion docs/agents/transformation/tutorial-enrich-dataset.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Now, let's get started by setting up a Weaviate Cloud instance that we will use
1. Take note of the `REST Endpoint` and `Admin` API key to connect to your cluster. (for more info, check out the [quickstart](/docs/cloud/quickstart#22-connect-to-your-weaviate-cloud-instance))

:::tip
In this tutorial, we are using the [Weaviate Embeddings](../../weaviate/model-providers/weaviate) service as the vectorizer, so you do not have to provide any extra keys for external embedding providers. Weaviate Embeddings uses the `Snowflake/snowflake-arctic-embed-l-v2.0` as the default embedding model.<br/><br/>
In this tutorial, we are using the [Weaviate Embeddings](../../weaviate/model-providers/weaviate/index.md) service as the vectorizer, so you do not have to provide any extra keys for external embedding providers. Weaviate Embeddings uses the `Snowflake/snowflake-arctic-embed-l-v2.0` as the default embedding model.<br/><br/>
If you want to use another vectorizer, check out the list of supported [model providers](../../weaviate/model-providers/index.md).
:::

Expand Down
56 changes: 15 additions & 41 deletions docs/deploy/index.mdx
Original file line number Diff line number Diff line change
@@ -1,52 +1,26 @@
---
title: Deployment overview
title: Deployment Overview
description: Deployment overview page
sidebar_position: 0
---

# Tacetve a gemit quisquam praestat meruisse gradientis
# Deploying to Weaviate
Weaviate offers multiple deployment options to satisfy your specific use case in production.
Use this page to help you find all that you need to successfully deploy and optimize Weaviate in your environment.
In this section of the docs, you will find common deployment topics, including Kubernetes, cloud providers, and best practices, along with detailed tutorials and how-to guides.

## Nec sum vagatur nupta tantus
Weaviate is designed for:

Lorem markdownum pugnando ventoque et ducta et et adurat locus inde cervos
refeci Phaethon clivum linguaque Salmacis geras coeperat mollia. Leucothoen Ceyx
est viret nostraque; meum utque latens
quae, patrios plebe inpositum: torvum. **Stipite fluminaque videri**; ictu
duabus sua *condita monstrum*. Imo undis: aut niveo sidoniae; placato sorores
at, quae perque. *Candore dolore*, et secum rastra ceratis et sollicitat vincula
matri mei alios in rigore murmur foedataque, cum.
- **Scalability** – Handle billions of vector data points efficiently.
- **High-Performance Search** – Power AI applications with real-time vector retrieval.
- **Flexible Integrations** – Connect with various machine learning models and data sources.
- **Cloud & On-Prem Deployment** – Deploy on Weaviate Cloud, Kubernetes, or managed cloud services.

Et solvit ex comitante super luctus. Unda posse perque venitque quod algae
lymphis postquam optime.
## Deployment Options

## Flammis levi harena illi membra caudam
Choose the best deployment method based on your needs:

Ipse inducitur stridore Aiacem intonsum! Est arma, hausitque *tu* litora
aetasque, at fuit Aegea vides. Non laborum longi fortisque *putes bracchia*
umbras te fingit enim manum!
- **Serverless Cloud** - The easiest deployment setup to test out your Weaviate use case.
- **Enterprise Cloud -** Deploy on dedicated resources in a secure, highly available environment.
- **Bring Your Own Cloud (BYOC)** – Have a fully managed deployment within your own cloud environment.

Ingentia sive Idaeo serpere, dives inpia. Oculos in aras ergo bracchiaque vera,
omnis solutus vellet: et. Est et putat nec obvia unda
totidem amisit *coniurataeque sic arabat* mea. Caune
quodque **addita** truncis quid latebra: incubat pallorque turribus et ignarus
signum pectore quicquid Abantiades locus. **Ante** aliqua Aiacis deferre, ferunt
hunc omnia, et hic Aconteus nec.

Odit festas dixit et quas fidissima, *est umbrae matrona* palude. Ait et quod
pectora circa.

## Elegit sim ulla poteramus stridente cessit auras

Tanta *Elinque*. Mea quae cultum Palameden Aglauros si sacra miserere quam ego,
**e scires** imo sonitusque tumidarum fremit quae ictu? Tum est sub vate vasto,
Galanthida in potui huc et temptat Cenaeo praeterque septem caede.

> Suo ipse cubitique et vento in onerosa adunco, non. **In paelice Quirites**
> sunt stant sinebat superstes differt non per potentia illiusque nostris
> Hecateidos? Tempore haud imagine facta ora, uni quam fatorum.

Altis animalibus pampinus venit mirabilis busto: tamen hunc, **salutant**
Stheneleia vultibus pectore. Evocat posuere anxia.

Aper est; in tuum medius, responderat tamen: magis vix! Amor regno tamen tuli
remige facitote **reverentia**: loqui vade pignora.
4 changes: 4 additions & 0 deletions docs/deploy/k8s/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "k8s",
"position": 1
}
21 changes: 21 additions & 0 deletions docs/deploy/k8s/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Kubernetes and Weaviate

Weaviate leverages Kubernetes for scalable, resilient, and production-grade deployments.

## Deployment Options

Weaviate can use Kubernetes in a variety of deployments:

### Enterprise Cloud

- Amazon EKS (Elastic Kubernetes Service)
- Google Kubernetes Engine (GKE)
- Azure Kubernetes Service (AKS)

### Bring Your Own Cloud

- Amazon EKS (Elastic Kubernetes Service)
- Google Kubernetes Engine (GKE)
- Azure Kubernetes Service (AKS)

This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments.
130 changes: 130 additions & 0 deletions docs/deploy/k8s/k8s-poc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Building with Weaviate: Getting to Production

## Introduction

You are a developer who has already deployed Weaviate on a test cluster and want to take things a step further by deploying and testing 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 implements
- Monitoring, logging, and backup strategies enabled

## Prerequisites

Before beginning, ensure that you have the following:

### Technical Knowledge

- Basic Kubernetes and containerization conceptual knowledge
- Basic experience with Helm and `kubectl`

:::note

Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate.io/developers/academy/deployment/k8s) if you need assistance.

:::

### Required Tools

- A running Kubernetes cluster with Weaviate installed
- `kubectl` installed
- Helm installed

### Step 1: Configure your Helm Chart

- Use the official [Weaviate Helm chart](https://github.com/weaviate/weaviate-helm) for your installation.
- Customize the values to fit your enterprise requirements (e.g., resource allocation, storage settings).
- Deploy the chart and verify pod health.

### Step 2: Network Security

- 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 to restrict user access:

```yaml
authorization:
rbac:
enabled: true
# root_users:
# - admin_user1
# - admin_user2
```

[Configuring RBAC](/docs/weaviate/configuration/rbac/configuration.md)

- **Optional**: Implement admin lists (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
```
::: tip
Using an admin list will allow you to define your admin or read-only user/API-key pairs across all Weaviate resources. Whereas RBAC allows you more granular permissions by defining roles and assigning them to users either via API keys or OIDC.
:::

[Admin List Configuration](/docs/weaviate/configuration/authorization.md#admin-list-kubernetes)
### Step 3: Scaling

- Implement horizontal scaling to ensure high availability:

```yaml
replicaCount: 3
```

- Define CPU/memory limits and requests to optimize pod efficiency:

```yaml
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
```

### Step 4: Monitoring and Logging

- Use Prometheus and Grafana to collect and analyze performance metrics:

```yaml
serviceMonitor:
enabled: true
interval: 30s
scrapeTimeout: 10s
```

- Implement alerting for issue resolution.

### Step 5: Upgrades and Backups

- Use the rolling update strategy used by Helm to minimize downtime:

```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.

### Conclusion

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.

### Next Steps: [Production Readiness Self-Assessment](./production-readiness.md)
65 changes: 65 additions & 0 deletions docs/deploy/k8s/production-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Kubernetes Production Readiness Self-Assessment

Think you’re ready for production? Ensuring that your Weaviate cluster is production-ready requires careful planning, configuration, and ongoing maintenance. Ensuring that you have a stable, reliable deployment requires you to think of your *ending* at the *beginning.* This guide provides you with introspective questions to assess readiness and identify any potential gaps before moving your workloads into production.

### High Availability and Resilience

- [ ] Are your clusters deployed across multiple availability zones (AZs) or regions to prevent downtime?
- [ ] Are replicas deployed across multiple nodes for redundancy?
- [ ] Is your control plane highly available?
- [ ] Is your application fault-tolerant *without* your control plane?
- [ ] Are the worker nodes distributed across multiple zones to mitigate failures?
- [ ] Are there automatic node repair or self-healing mechanisms in place?
- [ ] Have failover scenarios been tested to validate resilience?
- [ ] Are you utilizing Weaviate’s backup capabilities for disaster recovery?
- [ ] How often are these mechanisms tested?
- [ ] Has the ability to recover from a node failure or database corruption been tested?
- [ ] Are rolling updates performed to avoid downtime?
- [ ] Are canary deployments implemented to safely test new releases?
- [ ] Do you have development or test environments to safely test changes?

### Resource Management

- [ ] Have you considered your data’s consumption pattern(s)?
- [ ] Has your memory allocation been right-sized to match workload demand?
- [ ] Has your storage/compute allocation also been right-sized to match workload demand?
- [ ] Is there a process to delete old or unused objects?
- [ ] Have multiple replicas been configured to balance read-heavy workloads?
- [ ] Has the proper storage class been selected for your needs?
- [ ] Does your storage class support volume expansion so that you can support growth over time?
- [ ] Is the data within your cluster properly backed up, including the persistent storage?

### Security

- [ ] Are the components of your cluster communicating via SSL/TLS and trusted certificates?
- [ ] Is the *“principle of least privilege”* being followed?
- [ ] Are your container security defaults set properly?
- [ ] Is access to your cluster strictly limited?
- [ ] Has RBAC been implemented to restrict access?
- [ ] Have network policies been implemented to limit pod-to-pod communication?
- [ ] Are secrets secured with K8s Secrets or a vault solution?
- [ ] Do you have a process for when secrets are exposed, when access is lost to a key or certificate, and when secrets need to be rotated?

### Monitoring and Observability

- [ ] Is logging implemented?
- [ ] Are the collected logs stored centrally?
- [ ] Is metric collection enabled using Prometheus (or Alloy, DataDog, or another monitoring platform)?
- [ ] Are health and performance metrics being visualized in Grafana?
- [ ] Are alerts configured for events?

Evaluate these key areas to build a highly available, resilient, and efficient deployment that will scale to meet your business needs. By ensuring that these self-assessment questions have been addressed, you can proactively identify potential risks and maximize the reliability of your deployment.

:::tip
If you *do* identify gaps within your deployment, be sure to reach out to your SE (sales engineer) who can help steer you on the path to production success!
:::

#### Additional Resources

- [Replication](/docs/weaviate/configuration/replication.md)
- [Horizontal Scaling](/docs/weaviate/concepts/cluster.md)
- [Storage](/docs/weaviate/concepts/storage.md)
- [RBAC](/docs/weaviate/configuration/rbac/index.mdx)
- [Backups](/docs/weaviate/configuration/backups.md)
- [Persistence](/docs/weaviate/configuration/persistence.md)
- [Monitoring](/docs/weaviate/configuration/monitoring.md)
7 changes: 4 additions & 3 deletions secondaryNavbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,19 @@ const secondaryNavbarItems = {
},
],
},
/*

deploy: {
title: "Deploy",
icon: "fa fa-database",
description: "Deploy, configure, and maintain Weaviate Core",
link: "/docs/deploy",
links: [
{ label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" },
{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },
{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },
/*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/
],
},
*/

agents: {
title: "Agents",
icon: "fa fa-robot",
Expand Down
8 changes: 7 additions & 1 deletion sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -409,11 +409,17 @@ const sidebars = {
"weaviate/more-resources/example-datasets",
],
deploySidebar: ["deploy/index"],
deployAwsSidebar: [
/*deployAwsSidebar: [
{
type: "autogenerated",
dirName: "deploy/aws",
},
],*/
deployK8sSidebar: [
{
type: "autogenerated",
dirName:"deploy/k8s",
},
],
agentsSidebar: [
{
Expand Down
15 changes: 15 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1857,6 +1857,21 @@
react-helmet-async "npm:@slorber/react-helmet-async@*"
react-loadable "npm:@docusaurus/react-loadable@6.0.0"

"@docusaurus/plugin-client-redirects@^3.7.0":
version "3.7.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.7.0.tgz#b5cf92529768c457c01ad350bfc50862c6149463"
integrity sha512-6B4XAtE5ZVKOyhPgpgMkb7LwCkN+Hgd4vOnlbwR8nCdTQhLjz8MHbGlwwvZ/cay2SPNRX5KssqKAlcHVZP2m8g==
dependencies:
"@docusaurus/core" "3.7.0"
"@docusaurus/logger" "3.7.0"
"@docusaurus/utils" "3.7.0"
"@docusaurus/utils-common" "3.7.0"
"@docusaurus/utils-validation" "3.7.0"
eta "^2.2.0"
fs-extra "^11.1.1"
lodash "^4.17.21"
tslib "^2.6.0"

"@docusaurus/plugin-content-blog@3.7.0":
version "3.7.0"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz#7bd69de87a1f3adb652e1473ef5b7ccc9468f47e"
Expand Down