If you are here, it means that you have a Kubernetes cluster and helm setup.

Please consider reading our configuration guides to have a deeper knowledge about how to configure and customize Polyaxon to your need, we also made this interactive app to help you navigate the most important options to install Polyaxon.

If you are deploying Polyaxon in production mode, you should take some time to read about some best practices when deploying Polyaxon.

Please also check the helm reference for all default values.

Create a namespace for Polyaxon

Polyaxon installs and uses a namespace to run experiments independently of other applications running on your cluster, we recommend using polyaxon.

$ kubectl create namespace polyaxon

namespace "polyaxon" created

If you would like to use a different name, you must keep im mind to update the namespace value in your config.


This section will guide you through how you can create a configuration file to deploy Polyaxon. Polyaxon ships with default values, however and depending on your use case you might need to override some of these values. To do so, you need to create a configuration file and we recommend to save it somewhere safe so that you can reuse it in the future.

Create a config file config.yaml or polyaxon_config.yaml, and set up all information you want to override in the default config.

Example, disabling ingress and RBAC

  enabled: false

  enabled: false

serviceType: LoadBalancer

Example, adding database persistence

    enabled: true
    size: 5Gi

Example, updating the default user:

  username: "root"
  email: "[email protected]"
  password: "dummypassword"

Install Polyaxon

First of all, you need to add the Polyaxon helm repository to your helm, so you can install Polyaxon from it. This makes it easy to refer to the Polyaxon chart without having to use a long URL each time.

helm repo add polyaxon https://charts.polyaxon.com
helm repo update


You can validate that your deployment config.yml file is compatible with the version you are trying to deploy:

polyaxon deploy -f config.yml --check


Now you can install Polyaxon with your config.yml file

You can use Polyaxon CLI to manage the deployment

polyaxon deploy -f config.yml

Or you can use Helm to do the same:

helm install polyaxon/polyaxon \
    --name=<RELEASE_NAME> \
    --namespace=<NAMESPACE> \
    -f config.yml

--name is an identifier used by helm to refer to this deployment. You need it when you are changing the configuration of this install or deleting it. We recommend using RELEASE_NAME = polyaxon or RELEASE_NAME = plx.

--namespace should be the same value of the namespace you created in the first step, we again recommend using polyaxon to make it always easy to remember.

TIP: We recommend using polyaxon for both the --name and --namespace to avoid too much confusion. The same command with polyaxon as a value:

helm install polyaxon/polyaxon \
--name=polyaxon \
--namespace=polyaxon \
-f config.yml

NOTE: "Release name already exists error" If you get a release named <RELEASE_NAME> already exists error, then you should delete the release by running helm delete --purge <RELEASE_NAME>.

You can see the pods being created by entering in a different terminal:

kubectl --namespace=<NAMESPACE> get pod

When helm is done deploying Polyaxon, it will output some instructions NOTES, these note will be different depending on your configuration (the service type used and / or ingress);

Polyaxon is currently running:

1. Get the application URL by running these commands:

     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
           You can watch the status by running:
           'kubectl get --namespace polyaxon svc -w polyaxon-polyaxon-api'

  export POLYAXON_IP=$(kubectl get svc --namespace polyaxon polyaxon-polyaxon-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

  export POLYAXON_WS_PORT=80


2. Setup your cli by running theses commands:

  polyaxon config set --host=$POLYAXON_IP --http_port=$POLYAXON_HTTP_PORT  --ws_port=$POLYAXON_WS_PORT

3. Log in with superuser

  USER: root
  PASSWORD: Get login password with

    kubectl get secret --namespace polyaxon polyaxon-polyaxon-secret -o jsonpath="{.data.POLYAXON_ADMIN_PASSWORD}" | base64 --decode

These notes are important for setting the CLI, and getting access to the dashboard.

Next step you need the Polyaxon CLI installed, and you need to configure the host and the ports based on these notes.

Upgrade Polyaxon

To upgrade Polyaxon to a newer version, you can simply run the following command using Polyaxon CLI:

helm update
polyaxon deploy -f config.yml --upgrade

Or using Helm

helm update
helm upgrade polyaxon polyaxon/polyaxon -f polyaxon-config.yml

Applying configuration changes

The general method to modify your Kubernetes deployment is to:

  1. Make a change to the config.yml

  2. [Optional] run polyaxon deploy -f config.yml --check

  3. Run a polyaxon deploy -f config.yml --upgrade or helm upgrade:

    $ helm upgrade <RELEASE_NAME> polyaxon/polyaxon -f config.yml

    Where <RELEASE_NAME> is the parameter you passed to --name when installing Polyaxon with helm install.

    If you don’t remember it, you can probably find it by doing helm list.

    If you used the default values suggested in the docs, the <RELEASE_NAME> should be polyaxon

  4. Wait for the upgrade to finish, and make sure that when you do kubectl --namespace=<NAMESPACE> get pod the pods are in Ready state.

Your configuration change has been applied!

Turn off Polyaxon

When you are done with Polyaxon, you can turn off the deployment, and depending on your persistence configuration you can keep all your data saved for future deployments.

You can also decide to completely turn off Polyaxon and remove the namespace and computational resources.

polyaxon teardown


helm del --purge polyaxon

Stop/Delete running experiments/jobs

Polyaxon will by default stop all running jobs/experiments before a teardown, unless you prefer not to trigger the pre-delete hooks, in that case you should clean them on your own.

Delete Helm release

Delete the helm release. This deletes all resources that were created by helm during the deployment.

$ helm delete <RELEASE_NAME> --purge

If you used the default values, the command should be,

$ helm delete polyaxon --purge

If for some reason, your deployment did not succeed, you might need to delete Polyaxon with this command instead, to avoid triggering pre-delete hooks

$ helm delete polyaxon --purge --no-hooks

Delete the namespace

Delete the namespace Polyaxon was installed in. This deletes any disks that may have been created to store user’s logs|database, and any IP addresses that may have been provisioned.

$ kubectl delete namespace <your-namespace>

If you used the default values, the command should be,

$ kubectl delete namespace polyaxon