diff --git a/docs/book/.gitbook/assets/cloud_architecture_scenario_1.png b/docs/book/.gitbook/assets/cloud_architecture_scenario_1.png
index 01f51d3388d..170c6900a45 100644
Binary files a/docs/book/.gitbook/assets/cloud_architecture_scenario_1.png and b/docs/book/.gitbook/assets/cloud_architecture_scenario_1.png differ
diff --git a/docs/book/.gitbook/assets/cloud_architecture_scenario_2.png b/docs/book/.gitbook/assets/cloud_architecture_scenario_2.png
index eda040d58a5..c798094a083 100644
Binary files a/docs/book/.gitbook/assets/cloud_architecture_scenario_2.png and b/docs/book/.gitbook/assets/cloud_architecture_scenario_2.png differ
diff --git a/docs/book/.gitbook/assets/cloud_architecture_scenario_3.png b/docs/book/.gitbook/assets/cloud_architecture_scenario_3.png
deleted file mode 100644
index 7bb1ea7a715..00000000000
Binary files a/docs/book/.gitbook/assets/cloud_architecture_scenario_3.png and /dev/null differ
diff --git a/docs/book/.gitbook/assets/cloud_architecture_scenario_4.png b/docs/book/.gitbook/assets/cloud_architecture_scenario_4.png
deleted file mode 100644
index 09af87e0431..00000000000
Binary files a/docs/book/.gitbook/assets/cloud_architecture_scenario_4.png and /dev/null differ
diff --git a/docs/book/.gitbook/assets/cloud_architecture_scenario_5.png b/docs/book/.gitbook/assets/cloud_architecture_scenario_5.png
deleted file mode 100644
index 09af87e0431..00000000000
Binary files a/docs/book/.gitbook/assets/cloud_architecture_scenario_5.png and /dev/null differ
diff --git a/docs/book/getting-started/core-concepts.md b/docs/book/getting-started/core-concepts.md
index aef09668d83..e7366a891aa 100644
--- a/docs/book/getting-started/core-concepts.md
+++ b/docs/book/getting-started/core-concepts.md
@@ -133,7 +133,7 @@ To use _stack components_ that are running remotely on a cloud infrastructure, y
#### Server Deployment
-In order to benefit from the advantages of using a deployed ZenML server, you can either choose to use the [**ZenML Pro SaaS offering**](zenml-pro/zenml-pro.md) which provides a control plane for you to create managed instances of ZenML servers, or [deploy it in your self-hosted environment](deploying-zenml/README.md).
+In order to benefit from the advantages of using a deployed ZenML server, you can either choose to use the [**ZenML Pro SaaS offering**](zenml-pro.md) which provides a control plane for you to create managed instances of ZenML servers, or [deploy it in your self-hosted environment](deploying-zenml/README.md).
#### Metadata Tracking
diff --git a/docs/book/getting-started/deploying-zenml/README.md b/docs/book/getting-started/deploying-zenml.md
similarity index 67%
rename from docs/book/getting-started/deploying-zenml/README.md
rename to docs/book/getting-started/deploying-zenml.md
index 27f29f62c43..a03e16a36fb 100644
--- a/docs/book/getting-started/deploying-zenml/README.md
+++ b/docs/book/getting-started/deploying-zenml.md
@@ -10,32 +10,61 @@ Moving your ZenML Server to a production environment offers several benefits ove
2. **Reliability**: Production-grade infrastructure ensures high availability and fault tolerance, minimizing downtime and ensuring consistent performance.
3. **Collaboration**: A shared production environment enables seamless collaboration between team members, making it easier to iterate on models and share insights.
-Despite these advantages, transitioning to production can be challenging due to the complexities involved in setting up the needed infrastructure.
+Despite these advantages, transitioning to production can be challenging due to
+the complexities involved in setting up the needed infrastructure.
+
+## Components
### ZenML Server
-When you first get started with ZenML, it relies with the following architecture on your machine.
+When you first get started with ZenML, you have the following architecture on your machine.
-![ZenML default local configuration](../../.gitbook/assets/Scenario1.png)
+![ZenML default local configuration](../.gitbook/assets/Scenario1.png)
-The SQLite database that you can see in this diagram is used to store information about pipelines, pipeline runs, stacks, and other configurations. Users can run the `zenml up` command to spin up a local REST server to serve the dashboard. The diagram for this looks as follows:
+The SQLite database that you can see in this diagram is used to store
+information about pipelines, pipeline runs, stacks, and other configurations.
+This default setup allows you to get started and try out the core features but
+you won't be able to use cloud-based components like serverless orchestrators
+and so on.
-![ZenML with a local REST Server](../../.gitbook/assets/Scenario2.png)
+Users can run the `zenml up` command to spin up a local REST server to serve the
+dashboard. For the local REST server option, the `zenml up` command implicitly connects the client to the server. The diagram for this looks as follows:
-{% hint style="info" %}
-For the local REST server option, the `zenml up` command implicitly connects the client to the server.
-{% endhint %}
+![ZenML with a local REST Server](../.gitbook/assets/Scenario2.png)
{% hint style="warning" %}
-Currently the ZenML server supports a legacy and a brand-new version of the dashboard. To use the legacy version simply use the
-following command `zenml up --legacy`
+Currently the ZenML server supports two versions of the dashboard: a legacy view
+and a brand-new view. To use the legacy version simply use the following
+command: `zenml up --legacy`.
{% endhint %}
In order to move into production, the ZenML server needs to be deployed somewhere centrally so that the different cloud stack components can read from and write to the server. Additionally, this also allows all your team members to connect to it and share stacks and pipelines.
-![Deployed ZenML Server](../../.gitbook/assets/Scenario3.2.png)
+![Deployed ZenML Server](../.gitbook/assets/Scenario3.2.png)
+
+You connect to your deployed ZenML server using the `zenml connect` command and
+then you have the full benefits and power of ZenML. You can use all the
+cloud-based components, your metadata will be stored and synchronized across all
+the users of the server and you can leverage features like centralized logs
+storage and pipeline artifact visualization.
+
+### ZenML Client
+
+The ZenML client is a Python package that you can install on your machine. It
+is used to interact with the ZenML server. You can install it using the `pip`
+command. This Python package gives you [the `zenml` command-line interface](https://sdkdocs.zenml.io/latest/cli/) which
+you can use to interact with the ZenML server for common tasks like managing
+stacks, setting up secrets, and so on.
+
+If you want to have more fine-grained control and access to the metadata that
+ZenML manages, you can use the Python SDK to access the API. This allows you to
+create your own custom automations and scripts and is the most common way teams
+access the metadata stored in the ZenML server. Our full documentation for the
+Python SDK can be found [here](https://sdkdocs.zenml.io/latest/). Our full HTTP
+API documentation can also be found by adding the `/doc` suffix to the URL when
+accessing your deployed ZenML server.
-### Deploying a ZenML Server
+## Deploying a ZenML Server
Deploying the ZenML Server is a crucial step towards transitioning to a production-grade environment for your machine learning projects. By setting up a deployed ZenML Server instance, you gain access to powerful features, allowing you to use stacks with remote components, centrally track progress, collaborate effectively, and achieve reproducible results.
@@ -50,7 +79,7 @@ Currently the ZenML server supports a legacy and a brand-new version of the dash
Both options offer distinct advantages, allowing you to choose the deployment approach that best aligns with your organization's needs and infrastructure preferences. Whichever path you select, ZenML facilitates a seamless and efficient way to take advantage of the ZenML Server and enhance your machine learning workflows for production-level success.
-## How to deploy ZenML
+### How to deploy ZenML
Documentation for the various deployment strategies can be found in the following pages below (in our 'how-to' guides):
diff --git a/docs/book/getting-started/zenml-pro/system-architectures.md b/docs/book/getting-started/system-architectures.md
similarity index 71%
rename from docs/book/getting-started/zenml-pro/system-architectures.md
rename to docs/book/getting-started/system-architectures.md
index 2b36a76cf5c..9f3d4af634f 100644
--- a/docs/book/getting-started/zenml-pro/system-architectures.md
+++ b/docs/book/getting-started/system-architectures.md
@@ -16,7 +16,7 @@ productivity. No matter your specific needs, the hosting options for ZenML Pro
range from easy SaaS integration to completely airgapped deployments on your own
infrastructure.
-A ZenML Pro deployment consists of the following moving pieces for both the SaaS
+A [ZenML Pro deployment](./zenml-pro.md) consists of the following moving pieces for both the SaaS
product as well as the self-hosted version.:
* **ZenML Pro Control Plane**: This is a centralized MLOps control plane that includes a
@@ -35,12 +35,14 @@ product as well as the self-hosted version.:
ML metadata such as tracking and versioning information about pipelines and
models.
+## Deployment Scenarios
+
The above four interact with other MLOps stack components, secrets, and data in
-varying scenarios described below.
+the two scenarios described below.
-## Scenario 1: Full SaaS
+### Scenario 1: Full SaaS
-![Scenario 1: Full SaaS deployment](../../.gitbook/assets/cloud_architecture_scenario_1.png)
+![Scenario 1: Full SaaS deployment](../.gitbook/assets/cloud_architecture_scenario_1.png)
In this scenario, all services are hosted on infrastructure hosted by the ZenML Team,
@@ -53,7 +55,7 @@ model tracking and versioning information) is stored. All the actual ML data
artifacts (e.g. data produced or consumed by pipeline steps, logs and
visualizations, models) are stored on the customer cloud. This can be set up
quite easily by configuring
-an [artifact store](../../component-guide/artifact-stores/artifact-stores.md)
+an [artifact store](../component-guide/artifact-stores/artifact-stores.md)
with your MLOps stack.
Your tenant only needs permissions to read from this data to display artifacts
@@ -66,12 +68,9 @@ This scenario is meant for customers who want to quickly get started with ZenML
and can to a certain extent allow ingress connections into their infrastructure
from an external SaaS provider.
-## Scenario 2: Hybrid SaaS with Customer Secret Store managed by ZenML
-
-![Scenario 2: Hybrid SaaS with Customer Secret Store managed by ZenML](../../.gitbook/assets/cloud_architecture_scenario_2.png)
-
-This scenario is a version of Scenario 1. modified to store all sensitive
-information on the customer side. In this case, the customer connects their own
+{% hint style="info" %}
+We also offer a hybrid SaaS option where customer secrets are stored on the
+customer side. In this case, the customer connects their own
secret store directly to the ZenML server that is managed by us. All ZenML
secrets used by running pipelines to access infrastructure services and
resources are stored in the customer secret store. This allows users to
@@ -80,23 +79,11 @@ and the [secrets API](../../how-to/interact-with-secrets.md) to authenticate
ZenML pipelines and the ZenML Pro to 3rd party services and infrastructure
while ensuring that credentials are always stored on the customer side.
-Even though they are stored customer side, access to ZenML secrets is fully
-managed by ZenML Pro. The individually deployed ZenML Servers can also allowed to use some of those
-credentials to connect directly to customer infrastructure services to implement
-control plane features such as artifact visualization or triggering pipelines.
-This implies that the secret values are allowed to leave the customer
-environment to allow their access to be managed centrally by the ZenML Pro and
-to enforce access control policies, but the ZenML users and pipelines never have
-direct access to the secret store.
-
-All access to customer secrets is, of course, regulated through authentication
-and RBAC, so that only authorized users can access the secrets. This deployment
-scenario is meant for customers who want to use the ZenML Pro but want to keep
-their secrets on their own infrastructure.
+{% endhint %}
-## Scenario 3: Fully On-prem
+### Scenario 2: Fully On-prem
-![Scenario 3: Fully on-premises deployment](../../.gitbook/assets/cloud_architecture_scenario_5.png)
+![Scenario 2: Fully on-premises deployment](../.gitbook/assets/cloud_architecture_scenario_2.png)
In this scenario, all services, data, and secrets are deployed on the customer
cloud. This is the opposite of Scenario 1, and is meant for customers who
@@ -106,4 +93,10 @@ require completely airgapped deployments, for the tightest security standards.
Are you interested in ZenML Pro? [Sign up](https://cloud.zenml.io/?utm\_source=docs\&utm\_medium=referral\_link\&utm\_campaign=cloud\_promotion\&utm\_content=signup\_link)
and get access to Scenario 1. with a free 14 day trial now!
+## ZenML Pro vs ZenML Open Source
+
+TODO: add diagram + feature differences
+also more on architectural distinctions
+
+
diff --git a/docs/book/getting-started/zenml-pro.md b/docs/book/getting-started/zenml-pro.md
new file mode 100644
index 00000000000..b38059b18e7
--- /dev/null
+++ b/docs/book/getting-started/zenml-pro.md
@@ -0,0 +1,84 @@
+# ☁️ ZenML Pro
+
+The Pro version of ZenML comes with a number of features that expand the
+functionality of the Open Source product
+
+### Role-based access control and permissions
+
+Utilizing ZenML Pro provides you with access to a robust control plane that
+unifies user management and optimizes your workflows. Efficiently manage access
+and permissions through centralized user administration. Create fine-grained
+permissions for resources such as stacks, pipelines, models, etc.
+
+See the section on [user management](../how-to/use-zenml-pro/user-management.md) to learn more.
+
+### A brand-new, modern MLOps experience
+
+![Walkthrough of ZenML Model Control Plane](../.gitbook/assets/mcp_walkthrough.gif)
+
+We have built the ZenML Pro experience from the ground-up. With ZenML Pro, you get
+access to a new dashboard, with a better experience. The new dashboard features
+more functionality such as
+the [Model Control Plane](../user-guide/starter-guide/track-ml-models.md)
+and [Artifact Control Plane](../user-guide/starter-guide/manage-artifacts.md).
+
+### Run templates for running your pipelines from the dashboard or the API
+
+ZenML Pro enables you to [create and run templates](../how-to/trigger-pipelines/README.md#run-templates).
+This way, you can use the dashboard or our Client/REST API to run a pipeline with updated configuration
+which allows you to iterate quickly with minimal friction.
+
+### Triggers, CI/CD, Reports and more
+
+Additionally, ZenML Pro users get exclusive access to an array of
+cloud-specific features, such as triggers, integrating with your code
+repository CI/CD system, generating usage reports and more.
+
+### Managed ZenML Server (Multi-tenancy)
+
+ZenML Pro (SaaS solution) simplifies your machine learning workflows, enabling you to deploy a
+managed instance of ZenML servers with just one click. This eradicates the need
+to handle infrastructure complexities, making the set-up and management of your
+machine learning pipelines a breeze. We handle all pertinent system updates and
+backups, thus ensuring your system stays current and robust, allowing you to
+zero in on your essential MLOps tasks. As a ZenML Pro user, you'll also have
+priority support, giving you the necessary aid to fully utilize the platform.
+
+### Maximum data security
+
+At ZenML Pro, your data security and privacy are our top priority. The
+platform enables a secure connection to your infrastructure, tracking only
+metadata via an encrypted connection to maintain the confidentiality of your
+sensitive information. ZenML Pro integrates smoothly with your cloud services
+via service connectors, allowing a straightforward connection with various cloud
+resources without sacrificing data security. We hold your confidential
+information in a secure and isolated environment, offering an extra degree of
+protection. If desired, you can
+even [supply your own secret store](../how-to/interact-with-secrets/use-a-custom-secret-store.md).
+
+Learn more about ZenML Pro on the [ZenML Website](https://zenml.io/pro).
+
+## Managed ZenML (SaaS)
+
+One of the most straightforward paths to start with a deployed ZenML server is
+to use [ZenML Pro](https://zenml.io/pro). The ZenML Pro offering eliminates the need
+for you to dedicate time and resources to deploy and manage a ZenML server,
+allowing you to focus primarily on your MLOps workflows.
+
+
+
+
+
+
+
+{% hint style="info" %}
+If you're interested in assessing ZenML Pro, you can simply create
+a [free account](https://cloud.zenml.io/?utm\_source=docs\&utm\_medium=referral\_link\&utm\_campaign=cloud\_promotion\&utm\_content=signup\_link).
+Learn more about ZenML Pro on the [ZenML Website](https://zenml.io/pro).
+{% endhint %}
+
+Click [here](./system-architectures.md) to understand about the ZenML Pro system
+architecture.
+
+
+
diff --git a/docs/book/getting-started/zenml-pro/README.md b/docs/book/getting-started/zenml-pro/README.md
deleted file mode 100644
index f5f542681eb..00000000000
--- a/docs/book/getting-started/zenml-pro/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# ☁️ ZenML Pro
-
-The Pro version of ZenML comes with a number of features that expand the
-functionality of the Open Source product
-
-### Role-based access control and permissions
-
-Utilizing ZenML Pro provides you with access to a robust control plane that
-unifies user management and optimizes your workflows. Efficiently manage access
-and permissions through centralized user administration. Create fine-grained
-permissions for resources such as stacks, pipelines, models, etc.
-
-See the section on [user management](./user-management.md) to learn more.
-
-### A brand-new, modern MLOps experience
-
-![Walkthrough of ZenML Model Control Plane](../../.gitbook/assets/mcp_walkthrough.gif)
-
-We have built the ZenML Pro experience from the ground-up. With ZenML Pro, you get
-access to a new dashboard, with a better experience. The new dashboard features
-more functionality such as
-the [Model Control Plane](../../user-guide/starter-guide/track-ml-models.md)
-and [Artifact Control Plane](../../user-guide/starter-guide/manage-artifacts.md).
-
-### Run templates for running your pipelines from the dashboard or the API
-
-ZenML Pro enables you to [create and run templates](../../how-to/trigger-pipelines/README.md#run-templates).
-This way, you can use the dashboard or our Client/REST API to run a pipeline with updated configuration
-which allows you to iterate quickly with minimal friction.
-
-### Triggers, CI/CD, Reports and more
-
-Additionally, ZenML Pro users get exclusive access to an array of
-cloud-specific features, such as triggers, integrating with your code
-repository CI/CD system, generating usage reports and more.
-
-Learn more about ZenML Pro on the [ZenML Website](https://zenml.io/pro).
-
-
-
diff --git a/docs/book/getting-started/zenml-pro/zenml-pro.md b/docs/book/getting-started/zenml-pro/zenml-pro.md
deleted file mode 100644
index 9b7e84b5f79..00000000000
--- a/docs/book/getting-started/zenml-pro/zenml-pro.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-description: Your one-stop MLOps control plane.
----
-
-# ZenML SaaS
-
-One of the most straightforward paths to start with a deployed ZenML server is
-to use [ZenML Pro](https://zenml.io/pro). The ZenML Pro offering eliminates the need
-for you to dedicate time and resources to deploy and manage a ZenML server,
-allowing you to focus primarily on your MLOps workflows.
-
-
-
-
-
-
-
-{% hint style="info" %}
-If you're interested in assessing ZenML Pro, you can simply create
-a [free account](https://cloud.zenml.io/?utm\_source=docs\&utm\_medium=referral\_link\&utm\_campaign=cloud\_promotion\&utm\_content=signup\_link).
-Learn more about ZenML Pro on the [ZenML Website](https://zenml.io/pro).
-{% endhint %}
-
-## Key features
-
-ZenML Pro comes as a Software-as-a-Service (SaaS) platform that enhances the
-functionalities of the open-source ZenML product. It equips you with a
-centralized interface to seamlessly launch and manage ZenML server instances.
-While it remains rooted in the robust open-source offering, ZenML Pro offers
-extra features designed to optimize your machine learning workflow.
-
-### Managed ZenML Server (Multi-tenancy)
-
-ZenML Pro simplifies your machine learning workflows, enabling you to deploy a
-managed instance of ZenML servers with just one click. This eradicates the need
-to handle infrastructure complexities, making the set-up and management of your
-machine learning pipelines a breeze. We handle all pertinent system updates and
-backups, thus ensuring your system stays current and robust, allowing you to
-zero in on your essential MLOps tasks. As a ZenML Pro user, you'll also have
-priority support, giving you the necessary aid to fully utilize the platform.
-
-### Maximum data security
-
-At ZenML Pro, your data security and privacy are our top priority. The
-platform enables a secure connection to your infrastructure, tracking only
-metadata via an encrypted connection to maintain the confidentiality of your
-sensitive information. ZenML Pro integrates smoothly with your cloud services
-via service connectors, allowing a straightforward connection with various cloud
-resources without sacrificing data security. We hold your confidential
-information in a secure and isolated environment, offering an extra degree of
-protection. If desired, you can
-even [supply your own secret store](../deploying-zenml/manage-the-deployed-services/custom-secret-stores.md).
-
-Click [here](./system-architectures.md) to understand about the ZenML Pro system
-architecture.
-
-
diff --git a/docs/book/how-to/deploy-zenml/README.md b/docs/book/how-to/deploy-zenml/README.md
new file mode 100644
index 00000000000..3d7288f1dfa
--- /dev/null
+++ b/docs/book/how-to/deploy-zenml/README.md
@@ -0,0 +1,18 @@
+---
+description: How to deploy ZenML.
+---
+
+# 🚀 Deploy ZenML
+
+There are various ways to deploy ZenML. You can [deploy it on
+Docker](deploy-with-docker.md) or [Hugging Face
+Spaces](./deploy-with-hugging-face-spaces.md) or [Kubernetes with
+Helm](./deploy-with-helm.md) or some other cloud provider.
+
+For more general information about the deployment options and overall
+architecture of a ZenML deployment, see [our overview
+page](../../getting-started/deploying-zenml.md) in the getting started guide
+section.
+
+
+
diff --git a/docs/book/getting-started/deploying-zenml/deploy-with-custom-image.md b/docs/book/how-to/deploy-zenml/deploy-with-custom-images.md
similarity index 92%
rename from docs/book/getting-started/deploying-zenml/deploy-with-custom-image.md
rename to docs/book/how-to/deploy-zenml/deploy-with-custom-images.md
index 0c54ba5eaa8..5106f614d98 100644
--- a/docs/book/getting-started/deploying-zenml/deploy-with-custom-image.md
+++ b/docs/book/how-to/deploy-zenml/deploy-with-custom-images.md
@@ -6,7 +6,7 @@ description: Deploying ZenML with custom Docker images.
In most cases, deploying ZenML with the default `zenmlhub/zenml-server` Docker image should work just fine. However, there are some scenarios when you might need to deploy ZenML with a custom Docker image:
-* You have implemented a custom artifact store for which you want to enable [artifact visualizations](../../how-to/handle-data-artifacts/visualize-artifacts.md) or [step logs](../../how-to/setting-up-a-project-repository/best-practices.md#logging) in your dashboard.
+* You have implemented a custom artifact store for which you want to enable [artifact visualizations](../handle-data-artifacts/visualize-artifacts.md) or [step logs](../setting-up-a-project-repository/best-practices.md#logging) in your dashboard.
* You have forked the ZenML repository and want to deploy a ZenML server based on your own fork because you made changes to the server / database logic.
{% hint style="warning" %}
@@ -49,7 +49,7 @@ Here is how you can build a custom ZenML server Docker image:
```
{% hint style="info" %}
-If you want to verify your custom image locally, you can follow the [Deploy a custom ZenML image via Docker](deploy-with-custom-image.md#deploy-a-custom-zenml-image-via-docker) section below to deploy the ZenML server locally first.
+If you want to verify your custom image locally, you can follow the [Deploy a custom ZenML image via Docker](#deploy-a-custom-zenml-image-via-docker) section below to deploy the ZenML server locally first.
{% endhint %}
### Deploy ZenML with your custom image
diff --git a/docs/book/getting-started/deploying-zenml/deploy-with-docker.md b/docs/book/how-to/deploy-zenml/deploy-with-docker.md
similarity index 93%
rename from docs/book/getting-started/deploying-zenml/deploy-with-docker.md
rename to docs/book/how-to/deploy-zenml/deploy-with-docker.md
index 0eaab273acf..530370d0d33 100644
--- a/docs/book/getting-started/deploying-zenml/deploy-with-docker.md
+++ b/docs/book/how-to/deploy-zenml/deploy-with-docker.md
@@ -40,7 +40,7 @@ The following environment variables can be passed to the container:
* **ZENML\_STORE\_SSL\_KEY**: This can be set to a client SSL private key required to connect to the MySQL database service. Only valid when `ZENML_STORE_URL` points to a MySQL database that uses SSL-secured connections and requires client SSL certificates. The variable can be set either to the path where the certificate file is mounted inside the container or to the certificate contents themselves. This variable also requires `ZENML_STORE_SSL_CERT` to be set.
* **ZENML\_STORE\_SSL\_VERIFY\_SERVER\_CERT**: This boolean variable controls whether the SSL certificate in use by the MySQL server is verified. Only valid when `ZENML_STORE_URL` points to a MySQL database that uses SSL-secured connections. Defaults to `False`.
* **ZENML\_LOGGING\_VERBOSITY**: Use this variable to control the verbosity of logs inside the container. It can be set to one of the following values: `NOTSET`, `ERROR`, `WARN`, `INFO` (default), `DEBUG` or `CRITICAL`.
-* **ZENML\_STORE\_BACKUP\_STRATEGY**: This variable controls the database backup strategy used by the ZenML server. See the [Database backup and recovery](deploy-with-docker.md#database-backup-and-recovery) section for more details about this feature and other related environment variables. Defaults to `in-memory`.
+* **ZENML\_STORE\_BACKUP\_STRATEGY**: This variable controls the database backup strategy used by the ZenML server. See the [Database backup and recovery](#database-backup-and-recovery) section for more details about this feature and other related environment variables. Defaults to `in-memory`.
* **ZENML\_SERVER\_RATE\_LIMIT\_ENABLED**: This variable controls the rate limiting for ZenML API (currently only for the `LOGIN` endpoint). It is disabled by default, so set it to `1` only if you need to enable rate limiting. To determine unique users a `X_FORWARDED_FOR` header or `request.client.host` is used, so before enabling this make sure that your network configuration is associating proper information with your clients in order to avoid disruptions for legitimate requests.
* **ZENML\_SERVER\_LOGIN\_RATE\_LIMIT\_MINUTE**: If rate limiting is enabled, this variable controls how many requests will be allowed to query the login endpoint in a one minute interval. Set it to a desired integer value; defaults to `5`.
* **ZENML\_SERVER\_LOGIN\_RATE\_LIMIT\_DAY**: If rate limiting is enabled, this variable controls how many requests will be allowed to query the login endpoint in an interval of day interval. Set it to a desired integer value; defaults to `1000`.
@@ -49,9 +49,9 @@ If none of the `ZENML_STORE_*` variables are set, the container will default to
### Secret store environment variables
-Unless explicitly disabled or configured otherwise, the ZenML server will use the SQL database as [a secrets store backend](secret-management.md) where secret values are stored. If you want to use an external secrets management service like the AWS Secrets Manager, GCP Secrets Manager, Azure Key Vault, HashiCorp Vault or even your custom Secrets Store back-end implementation instead, you need to configure it explicitly using Docker environment variables. Depending on where you deploy your ZenML server and how your Kubernetes cluster is configured, you will also need to provide the credentials needed to access the secrets management service API.
+Unless explicitly disabled or configured otherwise, the ZenML server will use the SQL database as [a secrets store backend](../interact-with-secrets/configure-secrets-storage.md) where secret values are stored. If you want to use an external secrets management service like the AWS Secrets Manager, GCP Secrets Manager, Azure Key Vault, HashiCorp Vault or even your custom Secrets Store back-end implementation instead, you need to configure it explicitly using Docker environment variables. Depending on where you deploy your ZenML server and how your Kubernetes cluster is configured, you will also need to provide the credentials needed to access the secrets management service API.
-> **Important:** If you are updating the configuration of your ZenML Server container to use a different secrets store back-end or location, you should follow [the documented secrets migration strategy](secret-management.md#secrets-migration-strategy) to minimize downtime and to ensure that existing secrets are also properly migrated.
+> **Important:** If you are updating the configuration of your ZenML Server container to use a different secrets store back-end or location, you should follow [the documented secrets migration strategy](../interact-with-secrets/configure-secrets-storage.md#secrets-migration-strategy) to minimize downtime and to ensure that existing secrets are also properly migrated.
{% tabs %}
{% tab title="Default" %}
@@ -81,7 +81,7 @@ These configuration options are only relevant if you're using the AWS Secrets Ma
* **ZENML\_SECRETS\_STORE\_TYPE:** Set this to `aws` in order to set this type of secret store.
-The AWS Secrets Store uses the ZenML AWS Service Connector under the hood to authenticate with the AWS Secrets Manager API. This means that you can use any of the [authentication methods supported by the AWS Service Connector](../../how-to/auth-management/aws-service-connector.md#authentication-methods) to authenticate with the AWS Secrets Manager API.
+The AWS Secrets Store uses the ZenML AWS Service Connector under the hood to authenticate with the AWS Secrets Manager API. This means that you can use any of the [authentication methods supported by the AWS Service Connector](../auth-management/aws-service-connector.md#authentication-methods) to authenticate with the AWS Secrets Manager API.
The minimum set of permissions that must be attached to the implicit or configured AWS credentials are: `secretsmanager:CreateSecret`, `secretsmanager:GetSecretValue`, `secretsmanager:DescribeSecret`, `secretsmanager:PutSecretValue`, `secretsmanager:TagResource` and `secretsmanager:DeleteSecret` and they must be associated with secrets that have a name starting with `zenml/` in the target region and account. The following IAM policy example can be used as a starting point:
@@ -123,7 +123,7 @@ These configuration options are only relevant if you're using the GCP Secrets Ma
* **ZENML\_SECRETS\_STORE\_TYPE:** Set this to `gcp` in order to set this type of secret store.
-The GCP Secrets Store uses the ZenML GCP Service Connector under the hood to authenticate with the GCP Secrets Manager API. This means that you can use any of the [authentication methods supported by the GCP Service Connector](../../how-to/auth-management/gcp-service-connector.md#authentication-methods) to authenticate with the GCP Secrets Manager API.
+The GCP Secrets Store uses the ZenML GCP Service Connector under the hood to authenticate with the GCP Secrets Manager API. This means that you can use any of the [authentication methods supported by the GCP Service Connector](../auth-management/gcp-service-connector.md#authentication-methods) to authenticate with the GCP Secrets Manager API.
The minimum set of permissions that must be attached to the implicit or configured GCP credentials are as follows:
@@ -176,7 +176,7 @@ These configuration options are only relevant if you're using Azure Key Vault as
* **ZENML\_SECRETS\_STORE\_TYPE:** Set this to `azure` in order to set this type of secret store.
* **ZENML\_SECRETS\_STORE\_KEY\_VAULT\_NAME**: The name of the Azure Key Vault. This must be set to point to the Azure Key Vault instance that you want to use.
-The Azure Secrets Store uses the ZenML Azure Service Connector under the hood to authenticate with the Azure Key Vault API. This means that you can use any of the [authentication methods supported by the Azure Service Connector](../../how-to/auth-management/azure-service-connector.md#authentication-methods) to authenticate with the Azure Key Vault API. The following configuration options are supported:
+The Azure Secrets Store uses the ZenML Azure Service Connector under the hood to authenticate with the Azure Key Vault API. This means that you can use any of the [authentication methods supported by the Azure Service Connector](../auth-management/azure-service-connector.md#authentication-methods) to authenticate with the Azure Key Vault API. The following configuration options are supported:
* **ZENML\_SECRETS\_STORE\_AUTH\_METHOD**: The Azure Service Connector authentication method to use (e.g. `service-account`).
* **ZENML\_SECRETS\_STORE\_AUTH\_CONFIG**: The Azure Service Connector configuration, in JSON format (e.g. `{"tenant_id":"my-tenant-id","client_id":"my-client-id","client_secret": "my-client-secret"}`).
@@ -199,7 +199,7 @@ These configuration options are only relevant if you're using Hashicorp Vault as
{% endtab %}
{% tab title="Custom" %}
-These configuration options are only relevant if you're using a custom secrets store backend implementation. For this to work, you must have [a custom implementation of the secrets store API](manage-the-deployed-services/custom-secret-stores.md) in the form of a class derived from `zenml.zen_stores.secrets_stores.base_secrets_store.BaseSecretsStore`. This class must be importable from within the ZenML server container, which means you most likely need to mount the directory containing the class into the container or build a custom container image that contains the class.
+These configuration options are only relevant if you're using a custom secrets store backend implementation. For this to work, you must have [a custom implementation of the secrets store API](../interact-with-secrets/use-a-custom-secret-store.md) in the form of a class derived from `zenml.zen_stores.secrets_stores.base_secrets_store.BaseSecretsStore`. This class must be importable from within the ZenML server container, which means you most likely need to mount the directory containing the class into the container or build a custom container image that contains the class.
The following configuration option is required:
@@ -218,7 +218,7 @@ If your custom secrets store implementation requires additional configuration op
#### Backup secrets store
-[A backup secrets store](secret-management.md#backup-secrets-store) back-end may be configured for high-availability and backup purposes. or as an intermediate step in the process of [migrating secrets to a different external location or secrets manager provider](secret-management.md#secrets-migration-strategy).
+[A backup secrets store](../interact-with-secrets/configure-secrets-storage.md#backup-secrets-store) back-end may be configured for high-availability and backup purposes. or as an intermediate step in the process of [migrating secrets to a different external location or secrets manager provider](../interact-with-secrets/configure-secrets-storage.md#secrets-migration-strategy).
To configure a backup secrets store in the Docker container, use the same approach and instructions documented for the primary secrets store, but set the `**ZENML\_BACKUP\_SECRETS\_STORE\***` environment variables instead of `**ZENML\_SECRETS\_STORE\***`, e.g.:
@@ -308,7 +308,7 @@ You can manage the container with the usual Docker commands:
* `docker start zenml` to start the server again
* `docker rm zenml` to remove the container
-If you are looking for a customized ZenML server Docker deployment, you can configure one or more of [the supported environment variables](deploy-with-docker.md#zenml-server-configuration-options) and then pass them to the container using the `docker run` `--env` or `--env-file` arguments (see the [Docker documentation](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file) for more details). For example:
+If you are looking for a customized ZenML server Docker deployment, you can configure one or more of [the supported environment variables](#zenml-server-configuration-options) and then pass them to the container using the `docker run` `--env` or `--env-file` arguments (see the [Docker documentation](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file) for more details). For example:
```shell
docker run -it -d -p 8080:8080 --name zenml \
@@ -316,7 +316,7 @@ docker run -it -d -p 8080:8080 --name zenml \
zenmldocker/zenml-server
```
-If you're looking for a quick way to run both the ZenML server and a MySQL database with Docker, you can [deploy the ZenML server with Docker Compose](deploy-with-docker.md#zenml-server-with-docker-compose).
+If you're looking for a quick way to run both the ZenML server and a MySQL database with Docker, you can [deploy the ZenML server with Docker Compose](#zenml-server-with-docker-compose).
The rest of this guide covers various advanced use cases for running the ZenML server with Docker.
diff --git a/docs/book/getting-started/deploying-zenml/deploy-with-helm.md b/docs/book/how-to/deploy-zenml/deploy-with-helm.md
similarity index 92%
rename from docs/book/getting-started/deploying-zenml/deploy-with-helm.md
rename to docs/book/how-to/deploy-zenml/deploy-with-helm.md
index c41c6ce7deb..082a0a8d0bc 100644
--- a/docs/book/getting-started/deploying-zenml/deploy-with-helm.md
+++ b/docs/book/how-to/deploy-zenml/deploy-with-helm.md
@@ -22,9 +22,9 @@ You'll need the following:
You can start by taking a look at the [`values.yaml` file](https://artifacthub.io/packages/helm/zenml/zenml?modal=values) and familiarize yourself with some of the configuration settings that you can customize for your ZenML deployment.
-In addition to tools and infrastructure, you will also need to collect and [prepare information related to your database](deploy-with-helm.md#collect-information-from-your-sql-database-service) and [information related to your external secrets management service](deploy-with-helm.md#collect-information-from-your-secrets-management-service) to be used for the Helm chart configuration and you may also want to install additional [optional services in your cluster](deploy-with-helm.md#optional-cluster-services).
+In addition to tools and infrastructure, you will also need to collect and [prepare information related to your database](#collect-information-from-your-sql-database-service) and [information related to your external secrets management service](#collect-information-from-your-secrets-management-service) to be used for the Helm chart configuration and you may also want to install additional [optional services in your cluster](#optional-cluster-services).
-When you are ready, you can proceed to the [installation](deploy-with-helm.md#zenml-helm-installation) section.
+When you are ready, you can proceed to the [installation](#zenml-helm-installation) section.
### Collect information from your SQL database service
@@ -287,9 +287,9 @@ This method requires you to configure a DNS service like AWS Route 53 or Google
### Secret Store configuration
-Unless explicitly disabled or configured otherwise, the ZenML server will use the SQL database as [a secrets store backend](secret-management.md) where secret values are stored. If you want to use an external secrets management service like the AWS Secrets Manager, GCP Secrets Manager, Azure Key Vault, HashiCorp Vault or even your custom Secrets Store back-end implementation instead, you need to configure it in the Helm values. Depending on where you deploy your ZenML server and how your Kubernetes cluster is configured, you will also need to provide the credentials needed to access the secrets management service API.
+Unless explicitly disabled or configured otherwise, the ZenML server will use the SQL database as [a secrets store backend](../interact-with-secrets/configure-secrets-storage.md) where secret values are stored. If you want to use an external secrets management service like the AWS Secrets Manager, GCP Secrets Manager, Azure Key Vault, HashiCorp Vault or even your custom Secrets Store back-end implementation instead, you need to configure it in the Helm values. Depending on where you deploy your ZenML server and how your Kubernetes cluster is configured, you will also need to provide the credentials needed to access the secrets management service API.
-> **Important:** If you are updating the configuration of your ZenML Server deployment to use a different secrets store back-end or location, you should follow [the documented secrets migration strategy](secret-management.md#secrets-migration-strategy) to minimize downtime and to ensure that existing secrets are also properly migrated.
+> **Important:** If you are updating the configuration of your ZenML Server deployment to use a different secrets store back-end or location, you should follow [the documented secrets migration strategy](../interact-with-secrets/configure-secrets-storage.md#secrets-migration-strategy) to minimize downtime and to ensure that existing secrets are also properly migrated.
{% tabs %}
{% tab title="AWS" %}
@@ -336,7 +336,7 @@ openssl rand -hex 32
{% tab title="AWS" %}
**Using the AWS Secrets Manager as a secrets store backend**
-The AWS Secrets Store uses the ZenML AWS Service Connector under the hood to authenticate with the AWS Secrets Manager API. This means that you can use any of the [authentication methods supported by the AWS Service Connector](../../how-to/auth-management/aws-service-connector.md#authentication-methods) to authenticate with the AWS Secrets Manager API.
+The AWS Secrets Store uses the ZenML AWS Service Connector under the hood to authenticate with the AWS Secrets Manager API. This means that you can use any of the [authentication methods supported by the AWS Service Connector](../auth-management/aws-service-connector.md#authentication-methods) to authenticate with the AWS Secrets Manager API.
The minimum set of permissions that must be attached to the implicit or configured AWS credentials are: `secretsmanager:CreateSecret`, `secretsmanager:GetSecretValue`, `secretsmanager:DescribeSecret`, `secretsmanager:PutSecretValue`, `secretsmanager:TagResource` and `secretsmanager:DeleteSecret` and they must be associated with secrets that have a name starting with `zenml/` in the target region and account. The following IAM policy example can be used as a starting point:
@@ -398,7 +398,7 @@ Example configuration for the AWS Secrets Store:
{% tab title="GCP" %}
**Using the GCP Secrets Manager as a secrets store backend**
-The GCP Secrets Store uses the ZenML GCP Service Connector under the hood to authenticate with the GCP Secrets Manager API. This means that you can use any of the [authentication methods supported by the GCP Service Connector](../../how-to/auth-management/gcp-service-connector.md#authentication-methods) to authenticate with the GCP Secrets Manager API.
+The GCP Secrets Store uses the ZenML GCP Service Connector under the hood to authenticate with the GCP Secrets Manager API. This means that you can use any of the [authentication methods supported by the GCP Service Connector](../auth-management/gcp-service-connector.md#authentication-methods) to authenticate with the GCP Secrets Manager API.
The minimum set of permissions that must be attached to the implicit or configured GCP credentials are as follows:
@@ -492,7 +492,7 @@ Example configuration for the GCP Secrets Store:
{% tab title="Azure" %}
**Using the Azure Key Vault as a secrets store backend**
-The Azure Secrets Store uses the ZenML Azure Service Connector under the hood to authenticate with the Azure Key Vault API. This means that you can use any of the [authentication methods supported by the Azure Service Connector](../../how-to/auth-management/azure-service-connector.md#authentication-methods) to authenticate with the Azure Key Vault API.
+The Azure Secrets Store uses the ZenML Azure Service Connector under the hood to authenticate with the Azure Key Vault API. This means that you can use any of the [authentication methods supported by the Azure Service Connector](../auth-management/azure-service-connector.md#authentication-methods) to authenticate with the Azure Key Vault API.
Example configuration for the Azure Key Vault Secrets Store:
@@ -565,7 +565,7 @@ To use the HashiCorp Vault service as a Secrets Store back-end, it must be confi
{% tab title="Custom" %}
**Using a custom secrets store backend implementation**
-You have the option of using [a custom implementation of the secrets store API](secret-management.md) as your secrets store back-end. This must come in the form of a class derived from `zenml.zen_stores.secrets_stores.base_secrets_store.BaseSecretsStore`. This class must be importable from within the ZenML server container, which means you most likely need to build a custom container image that contains the class. Then, you can configure the Helm values to use your custom secrets store as follows:
+You have the option of using [a custom implementation of the secrets store API](../interact-with-secrets/configure-secrets-storage.md) as your secrets store back-end. This must come in the form of a class derived from `zenml.zen_stores.secrets_stores.base_secrets_store.BaseSecretsStore`. This class must be importable from within the ZenML server container, which means you most likely need to build a custom container image that contains the class. Then, you can configure the Helm values to use your custom secrets store as follows:
```yaml
zenml:
@@ -607,7 +607,7 @@ You have the option of using [a custom implementation of the secrets store API](
#### Backup secrets store
-[A backup secrets store](secret-management.md#backup-secrets-store) back-end may be configured for high-availability and backup purposes. or as an intermediate step in the process of [migrating secrets to a different external location or secrets manager provider](secret-management.md#secrets-migration-strategy).
+[A backup secrets store](../interact-with-secrets/configure-secrets-storage.md#backup-secrets-store) back-end may be configured for high-availability and backup purposes. or as an intermediate step in the process of [migrating secrets to a different external location or secrets manager provider](../interact-with-secrets/configure-secrets-storage.md#secrets-migration-strategy).
To configure a backup secrets store in the Helm chart, use the same approach and instructions documented for the primary secrets store, but using the `backupSecretsStore` configuration section instead of `secretsStore`, e.g.:
diff --git a/docs/book/getting-started/deploying-zenml/deploy-using-huggingface-spaces.md b/docs/book/how-to/deploy-zenml/deploy-with-hugging-face-spaces.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/deploy-using-huggingface-spaces.md
rename to docs/book/how-to/deploy-zenml/deploy-with-hugging-face-spaces.md
diff --git a/docs/book/getting-started/deploying-zenml/deploy-with-zenml-cli.md b/docs/book/how-to/deploy-zenml/deploy-with-zenml-cli.md
similarity index 97%
rename from docs/book/getting-started/deploying-zenml/deploy-with-zenml-cli.md
rename to docs/book/how-to/deploy-zenml/deploy-with-zenml-cli.md
index 2efb7656baf..b52f3077855 100644
--- a/docs/book/getting-started/deploying-zenml/deploy-with-zenml-cli.md
+++ b/docs/book/how-to/deploy-zenml/deploy-with-zenml-cli.md
@@ -4,9 +4,9 @@ description: Deploying ZenML on cloud using the ZenML CLI.
# Deploy with ZenML CLI
-The easiest and fastest way to get running on the cloud is by using the `deploy` CLI command. It currently only supports deploying to Kubernetes on managed cloud services. You can check the [overview page](./README.md#deploying-a-zenml-server) to learn about other options that you have.
+The easiest and fastest way to get running on the cloud is by using the `deploy` CLI command. It currently only supports deploying to Kubernetes on managed cloud services. You can check the [overview page](../../getting-started/deploying-zenml.md) to learn about other options that you have.
-Before we begin, it will help to understand the [architecture](./README.md) around the ZenML server and the database that it uses. Now, depending on your setup, you may find one of the following scenarios relevant.
+Before we begin, it will help to understand the [architecture](../../getting-started/zenml-pro/system-architectures.md) around the ZenML server and the database that it uses. Now, depending on your setup, you may find one of the following scenarios relevant.
## Option 1: Starting from scratch
diff --git a/docs/book/getting-started/deploying-zenml/manage-the-deployed-services/README.md b/docs/book/how-to/deploy-zenml/manage-deployed-services.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/manage-the-deployed-services/README.md
rename to docs/book/how-to/deploy-zenml/manage-deployed-services.md
diff --git a/docs/book/getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-stack-components.md b/docs/book/how-to/deploy-zenml/troubleshoot-stack-components.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-stack-components.md
rename to docs/book/how-to/deploy-zenml/troubleshoot-stack-components.md
diff --git a/docs/book/getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-your-deployed-server.md b/docs/book/how-to/deploy-zenml/troubleshoot-the-deployed-server.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-your-deployed-server.md
rename to docs/book/how-to/deploy-zenml/troubleshoot-the-deployed-server.md
diff --git a/docs/book/getting-started/deploying-zenml/manage-the-deployed-services/upgrade-the-version-of-the-zenml-server.md b/docs/book/how-to/deploy-zenml/upgrade-the-version-of-the-server.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/manage-the-deployed-services/upgrade-the-version-of-the-zenml-server.md
rename to docs/book/how-to/deploy-zenml/upgrade-the-version-of-the-server.md
diff --git a/docs/book/how-to/interact-with-secrets.md b/docs/book/how-to/interact-with-secrets/README.md
similarity index 100%
rename from docs/book/how-to/interact-with-secrets.md
rename to docs/book/how-to/interact-with-secrets/README.md
diff --git a/docs/book/getting-started/deploying-zenml/secret-management.md b/docs/book/how-to/interact-with-secrets/configure-secrets-storage.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/secret-management.md
rename to docs/book/how-to/interact-with-secrets/configure-secrets-storage.md
diff --git a/docs/book/getting-started/deploying-zenml/manage-the-deployed-services/custom-secret-stores.md b/docs/book/how-to/interact-with-secrets/use-a-custom-secret-store.md
similarity index 100%
rename from docs/book/getting-started/deploying-zenml/manage-the-deployed-services/custom-secret-stores.md
rename to docs/book/how-to/interact-with-secrets/use-a-custom-secret-store.md
diff --git a/docs/book/getting-started/zenml-pro/user-management.md b/docs/book/how-to/use-zenml-pro/user-management.md
similarity index 100%
rename from docs/book/getting-started/zenml-pro/user-management.md
rename to docs/book/how-to/use-zenml-pro/user-management.md
diff --git a/docs/book/introduction.md b/docs/book/introduction.md
index b996c3c06a8..a6518db0d89 100644
--- a/docs/book/introduction.md
+++ b/docs/book/introduction.md
@@ -12,7 +12,7 @@ description: Welcome to ZenML!
{% tab title="For MLOps Platform Engineers" %}
ZenML enables MLOps infrastructure experts to define, deploy, and manage sophisticated production environments that are easy to share with colleagues.
-* **ZenML Pro****:** [ZenML Pro](getting-started/zenml-pro/zenml-pro.md) provides a control plane that allows you to deploy a managed ZenML instance and get access to exciting new features such as CI/CD, Model Control Plane, and RBAC.
+* **ZenML Pro****:** [ZenML Pro](getting-started/zenml-pro.md) provides a control plane that allows you to deploy a managed ZenML instance and get access to exciting new features such as CI/CD, Model Control Plane, and RBAC.
* **Self-hosted deployment:** ZenML can be deployed on any cloud provider and provides many Terraform-based utility functions to deploy other MLOps tools or even entire MLOps stacks:
diff --git a/docs/book/toc.md b/docs/book/toc.md
index 1aa3c16105a..a8c7a3d1010 100644
--- a/docs/book/toc.md
+++ b/docs/book/toc.md
@@ -5,22 +5,9 @@
* [⭐ Introduction](introduction.md)
* [🧙 Installation](getting-started/installation.md)
* [🪄 Core concepts](getting-started/core-concepts.md)
-* [🤔 Deploying ZenML](getting-started/deploying-zenml/README.md)
- * [Deploy with ZenML CLI](getting-started/deploying-zenml/deploy-with-zenml-cli.md)
- * [Deploy with Docker](getting-started/deploying-zenml/deploy-with-docker.md)
- * [Deploy with Helm](getting-started/deploying-zenml/deploy-with-helm.md)
- * [Deploy using HuggingFace Spaces](getting-started/deploying-zenml/deploy-using-huggingface-spaces.md)
- * [Deploy with custom images](getting-started/deploying-zenml/deploy-with-custom-image.md)
- * [Manage deployed services](getting-started/deploying-zenml/manage-the-deployed-services/README.md)
- * [Upgrade the version of the ZenML server](getting-started/deploying-zenml/manage-the-deployed-services/upgrade-the-version-of-the-zenml-server.md)
- * [Troubleshoot the deployed server](getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-your-deployed-server.md)
- * [Troubleshoot stack components](getting-started/deploying-zenml/manage-the-deployed-services/troubleshoot-stack-components.md)
- * [Custom secret stores](getting-started/deploying-zenml/manage-the-deployed-services/custom-secret-stores.md)
- * [Secret management](getting-started/deploying-zenml/secret-management.md)
-* [☁️ ZenML Pro](getting-started/zenml-pro/README.md)
- * [System Architectures](getting-started/zenml-pro/system-architectures.md)
- * [ZenML SaaS](getting-started/zenml-pro/zenml-pro.md)
- * [User Management](getting-started/zenml-pro/user-management.md)
+* [🤔 Deploying ZenML](getting-started/deploying-zenml.md)
+ * [System Architectures](getting-started/system-architectures.md)
+* [☁️ ZenML Pro](getting-started/zenml-pro.md)
## User Guide
@@ -177,13 +164,27 @@
* [GCP Service Connector](how-to/auth-management/gcp-service-connector.md)
* [Azure Service Connector](how-to/auth-management/azure-service-connector.md)
* [HyperAI Service Connector](how-to/auth-management/hyperai-service-connector.md)
+* [☁️ Deploy ZenML](how-to/deploy-zenml/README.md)
+ * [Deploy with ZenML CLI](how-to/deploy-zenml/deploy-with-zenml-cli.md)
+ * [Deploy with Docker](how-to/deploy-zenml/deploy-with-docker.md)
+ * [Deploy with Helm](how-to/deploy-zenml/deploy-with-helm.md)
+ * [Deploy with Hugging Face Spaces](how-to/deploy-zenml/deploy-with-hugging-face-spaces.md)
+ * [Deploy with custom images](how-to/deploy-zenml/deploy-with-custom-images.md)
+ * [Manage deployed services](how-to/deploy-zenml/manage-deployed-services.md)
+ * [Upgrade the version of the server](how-to/deploy-zenml/upgrade-the-version-of-the-server.md)
+ * [Troubleshoot the deployed server](how-to/deploy-zenml/troubleshoot-the-deployed-server.md)
+ * [Troubleshoot stack components](how-to/deploy-zenml/troubleshoot-stack-components.md)
+* [⭐️ Use ZenML Pro](how-to/use-zenml-pro/README.md)
+ * [User Management](how-to/use-zenml-pro/user-management.md)
* [🐍 Configure Python environments](how-to/configure-python-environments/README.md)
* [Handling dependencies](how-to/configure-python-environments/handling-dependencies.md)
* [Configure the server environment](how-to/configure-python-environments/configure-the-server-environment.md)
* [🔌 Connect to a server](how-to/connecting-to-zenml/README.md)
* [Connect in with your User (interactive)](how-to/connecting-to-zenml/connect-in-with-your-user-interactive.md)
* [Connect with a Service Account](how-to/connecting-to-zenml/connect-with-a-service-account.md)
-* [🔐 Interact with secrets](how-to/interact-with-secrets.md)
+* [🔐 Interact with secrets](how-to/interact-with-secrets/README.md)
+ * [Configure secrets storage](how-to/interact-with-secrets/configure-secrets-storage.md)
+ * [Use a custom secret store](how-to/interact-with-secrets/use-a-custom-secret-store.md)
* [🐞 Debug and solve issues](how-to/debug-and-solve-issues.md)
## Stack Components
diff --git a/docs/book/user-guide/production-guide/deploying-zenml.md b/docs/book/user-guide/production-guide/deploying-zenml.md
index 450bbf119a5..a7f57aae269 100644
--- a/docs/book/user-guide/production-guide/deploying-zenml.md
+++ b/docs/book/user-guide/production-guide/deploying-zenml.md
@@ -66,4 +66,15 @@ This command will start a series of steps to validate the device from where you
You can always go back to the local zenml experience by using `zenml disconnect`
{% endhint %}
+## Further resources
+
+To learn more about deploying ZenML, check out the following resources:
+
+- [Deploying ZenML](../../getting-started/deploying-zenml.md): an overview of
+ the different options for deploying ZenML and the system architecture of a
+ deployed ZenML instance.
+- [Full how-to guides](../../how-to/deploy-zenml/README.md): guides on how to
+ deploy ZenML on Docker or Hugging Face Spaces or Kubernetes or some other cloud
+ provider.
+