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.
- kubectl is installed.
- Configure a Container Storage Interface (CSI) for persistent data.
- Have at least three worker nodes or three untainted control plane nodes.
- Cert Manager v1.11.0 or greater installed in the Kubernetes cluster. Use the official Cert Manager installation guide for additional guidance.
- 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.
- Access to the Palette Helm Chart. Contact support@spectrocloud.com to gain access to the Helm Chart.
- For AWS EKS, ensure you have the AWS CLI and the kubectl CLI installed.
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.
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.
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
Extract the values.yaml from the Helm Chart with the following command:
tar xzvf /path/to/chart.tgz spectro-mgmt-plane/values.yaml
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.
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
Monitor the deployment using the command below. Palette is ready when the deployments in namespaces
cp-system
,hubble-system
,jet-system
, andui-system
reach the Ready state.kubectl get pods --all-namespaces --watchCreate 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
To upgrade Palette with a new Helm release, use the following steps.
- Download the new version of the Helm Chart.
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
- 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.
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
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.
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.