Helm Chart Mode

You can use the Palette Helm Chart to install Palette in a multi-node Kubernetes cluster in your production environment.

This installation method is common in secure environments with restricted network access that prohibits using Palette SaaS. Review our architecture diagrams to ensure your Kubernetes cluster has the necessary network connectivity for Palette to operate successfully.


  • Configure a Container Storage Interface (CSI) for persistent data.
  • Have at least three worker nodes or three untainted control plane nodes.
  • Allocate a minimum of 4 CPUs and 12 GB of Memory per node.
  • A custom domain and the ability to update Domain Name System (DNS) records.

Palette cannot manage the cluster that it is installed onto due to component conflicts. Consider using a managed Kubernetes service to minimize management overhead. The Palette Helm Chart is not tied to any particular managed Kubernetes service.

Install Palette

Choose the installation steps for your target environment. The steps in the generic tab apply to all Kubernetes clusters. Steps in other tabs have instructions explicitly tailored to the target environment.

  1. Download the kubeconfig file for the Kubernetes cluster where you will deploy Palette. Ensure you can interact with the target cluster. You can validate by issuing a kubectl command.

    kubectl get pods -A
  1. Extract the values.yaml from the Helm Chart with the following command:

    tar xzvf /path/to/chart.tgz spectro-mgmt-plane/values.yaml
  1. Review the values.yaml . You must populate the env.rootDomain parameter to the domain you will use for the installation. All other parameter values are optional, and you can reset or change them with a Helm upgrade operation.

    Do not use a wildcard in the root domain value for the env.rootDomain parameter. Use a complete domain name when assigning a root domain name value.

  1. Install the Helm Chart using the following command. Replace the path in the command to match your local path of the Palette Helm Chart.

    helm install palette /path/to/chart.tgz -f /path/to/values.yaml
  1. Monitor the deployment using the command below. Palette is ready when the deployments in namespaces cp-system, hubble-system, jet-system , and ui-system reach the Ready state.

    kubectl get pods --all-namespaces --watch
  2. Create a DNS record that is mapped to the Palette ingress-nginx-controller load balancer. You can use the following command to retrieve the load balancer IP address.

    kubectl get service ingress-nginx-controller --namespace nginx --output jsonpath='{.status.loadBalancer.ingress[0].hostname}'

You now have a self-hosted instance of Palette installed in a Kubernetes cluster. Make sure you retain the values.yaml file as you will need it for future upgrades.


You can validate that the installation of Palette is successful by visiting the custom domain you assigned to the env.rootDomain parameter in the values.yaml.

If you notice that the pods in the hubble-system namespace are not initializing as expected, it might be due to a delay in adding the DNS records for the rootDomain. The workaround is to terminate all pods except the pods related to mongo-db in the hubble-system namespace to trigger a redeployment of the pods.

kubectl delete pods --namespace hubble-system --selector=role!=mongo

Upgrade Palette

To upgrade Palette with a new Helm release, use the following steps.

  1. Download the new version of the Helm Chart.
  1. Extract the new values.yaml file from the Helm Chart with the following command:

    tar xzvf /path/to/chart.tgz spectro-mgmt-plane/values.yaml
  1. Compare the new values.yaml against the original values.yaml you used for the initial Palette installation. Address any new parameters added to the values file.
  1. Issue the following command to upgrade Palette. Use the same values.yaml file you used for the Palette installation.

    helm upgrade palette /path/to/chart.tgz --file /path/to/orginal_values.yaml

Post-Install Configuration Values

The values you specified in the values.yaml file all fall under the parameter section values.config and are stored in the configserver-cm ConfigMap.

After the installation, if you need to change any configuration values under values.config in the values.yaml file, you must use the Palette API. When you use the helm upgrade command, internal system configurations stored in the Kubernetes ConfigMap configserver-cm will display as updated, but Palette will not apply the new values. Palette only accepts changes to these configuration values if they are submitted via API.

If you find yourself in this scenario, contact our support team by emailing us at support@spectrocloud.com for additional guidance.

Next Steps

Start exploring the Palette system dashboard so that you become familiar with the available actions you can take as an administrator. Check out the System Console Dashboard resource to learn more.