Kubernetes with Helm

Deploy ZenML Pro Self-hosted on Kubernetes with Helm - complete self-hosted setup with no external dependencies.

This guide provides step-by-step instructions for deploying ZenML Pro on Kubernetes using Helm charts. All components run within your infrastructure with zero external dependencies.

Deployment Architecture

All components run entirely within your Kubernetes cluster and infrastructure:

ZenML Pro Self-hosted Architecture

Architecture Components

Client access includes browser-based access to the ZenML UI dashboard and connections from developer laptops or CI systems to workspaces.

The Kubernetes cluster provides the compute and services layer across several namespaces. The zenml-controlplane-namespace contains the UI Pod (hosting the ZenML Pro UI, connecting to the control plane and all workspaces) and the Control Plane Pod (API Server and User Management/RBAC). The zenml-workspace-namespace contains the Workspace Server Pod with the ZenML API Server, and Workload Manager that manages pipelines, stacks, and snapshots. The zenml-runners-namespace contains Runner Pods created on-demand for snapshots, and the orchestrator-namespace contains Orchestrator Pods for pipeline execution when using the Kubernetes orchestrator.

The data and storage layer includes a MySQL database for workspace and control plane metadata (TCP 3306), an optional secrets backend such as AWS Secrets Manager or Vault, an artifact store (S3, GCS, or Azure Blob) for models, datasets, and artifacts, and a container registry (AWS ECR, Google Artifact Registry, or Azure) for pipeline images.

Prerequisites

Before starting, make sure you go through the general prerequisites for self-hosted deployments and have collected the necessary artifacts and information. Particular requirements for Kubernetes with Helm deployments are listed below.

Infrastructure:

  • Kubernetes cluster (1.24+)

Network:

  • Load balancer, network gateway or Ingress controllers etc.

  • Internal DNS resolution

  • TLS certificates signed by your internal CA (or self-signed)

  • Network connectivity between cluster components

Tools (on a machine with internet access for initial setup):

  • Helm (3.0+)

Install the ZenML Pro Control Plane

Step 1: Create Kubernetes Secrets

If you are using an internal container registry, you may need to create a secret to allow the ZenML Pro control plane and workspace servers to pull the images. The following is an example of how to do this:

You'll use this secret in the next step when configuring the Helm values for the ZenML Pro control plane.

Step 2: Configure Helm Values for the Control Plane

The example below is a basic configuration for the ZenML Pro control plane Helm chart. For a full list of configurable values and documentation, see the ZenML Pro Helm chart referencearrow-up-right.

Minimum required settings:

  • the database credentials (zenml.database.external)

  • the URL (zenml.serverURL) where the ZenML Pro Control Plane API and UI will be reachable

In addition to the above, the following might also be relevant for you:

  • configure container registry credentials (imagePullSecrets)

  • injecting custom CA certificates (zenml.certificates), especially important if the TLS certificates used by the ZenML Pro services are signed by a custom Certificate Authority

  • configure HTTP proxy settings (zenml.proxy)

  • custom container image repository locations (zenml.image.api and zenml.image.dashboard)

  • the username and password used for the default admin account (zenml.auth.password)

  • SSO authentication settings (zenml.auth.sso) — see the Single Sign-On (SSO) guide for prerequisites and migration from password authentication

  • additional Ingress settings (zenml.ingress)

  • Kubernetes resources allocated to the pods (resources)

  • If you set up a common DNS prefix that you plan on using for all the ZenML Pro services, you may configure the domain of the HTTP cookies used by the ZenML Pro dashboard to match it by setting zenml.auth.authCookieDomain to the DNS prefix (e.g. .my.domain instead of zenml-pro.my-domain)

Step 3: Deploy the ZenML Pro Control Plane with Helm

Using the remote Helm chart, if you have access to the internet:

Using the local Helm chart, if you have downloaded the chart previously:

Verify deployment:

Wait for all pods to be running and healthy.

Step 4: Onboard the ZenML Pro Control Plane

The next step involves creating your first super-user user account.

circle-info

Super-user accounts are special user accounts that are granted additional privileges and are able to bypass RBAC restrictions and create and manage other user accounts, organizations and workspace resources for the entire ZenML Pro instance. Super-user privileges can later on be granted to other users or revoked if no longer needed.

You will use this account to log in to the ZenML Pro UI to perform the following tasks that are part of onboarding your ZenML Pro instance:

  1. Create one or more organizations

  2. Create user accounts and/or invite other users to join the organization(s)

  3. Assign roles and permissions to users or group them into teams

  4. Enroll workspaces in the organization(s)

Creating the initial super-user account is different depending on whether you are using SSO authentication or password authentication.

Option 1: Using SSO Authentication

If you are using SSO authentication, you can simply access the ZenML Pro UI and use the SSO login flow to authenticate with your identity provider.

circle-info

The first account that logs in with SSO authentication will be automatically granted super-user privileges.

Option 2: Using Password Authentication

If you only enabled password authentication, a reserved admin account is available that can be used to create the first local super-user account. Instructions on how to access the admin account are provided in the Helm chart output after deployment:

circle-exclamation

Creating and managing local user accounts is currently only supported through the ZenML Pro OpenAPI interface or programmatically accessing the ZenML Pro API. There is no support for this in the ZenML Pro UI yet.

To access the ZenML Pro OpenAPI interface, append the /api/v1 path to the ZenML Pro server URL in your browser. For example: https://zenml-pro.my.domain/api/v1. Then use the OpenAPI UI to authenticate with the admin username and password.

ZenML Pro OpenAPI Interface - Authentication

Using the OpenAPI interface, you can manage local user accounts by making requests to the /api/v1/users endpoint. For example, to create a new super-user account:

ZenML Pro OpenAPI Interface - Create Users

Step 5: Deploy and Enroll Workspaces

Now that the ZenML Pro control plane is onboarded, you can deploy and enroll one or more workspaces.

To deploy and enroll a workspace, you can use the process covered in the Deploying Workspaces sections. Make sure to use the ZenML Pro control plane URLs you used for the self-hosted deployment:

  • ZenML Pro control plane UI: https://zenml-pro.internal.mycompany.com

  • ZenML Pro control plane API: https://zenml-pro.internal.mycompany.com/api/v1s

Access the Workspaces from ZenML CLI

To login to a workspace with the ZenML CLI, you need to pass the custom ZenML Pro API URL:

Alternatively, you can set the ZENML_PRO_API_URL environment variable:

Day 2 Operations

For information on upgrading ZenML Pro components, see the Upgrades & Updates guide.

Support

For self-hosted deployments, contact ZenML Support:

Request from ZenML Support:

  • Pre-deployment architecture consultation

  • Offline support packages

  • Update bundles and release notes

  • Security documentation (SBOM, vulnerability reports)

Last updated

Was this helpful?