Upgrade PaletteAI
Use this page to upgrade PaletteAI. Choose the workflow that matches your installation method:
-
If you installed PaletteAI with Helm charts, use Upgrade with Flux. Use Upgrade Manually only as a fallback if you are not using Flux.
-
If you installed PaletteAI with the appliance method, skip to Upgrade Appliance. Appliance upgrades use a content bundle downloaded from Artifact Studio.
For Helm-based deployments, PaletteAI consists of two Helm charts that must be upgraded in the following order:
-
First, upgrade
mural-crds, which contains the Custom Resource Definitions (CRDs). -
Second, upgrade
mural, which contains the main application.
For production environments, we recommend using Flux to manage the PaletteAI Helm chart lifecycle and CRD upgrades.
Prerequisites
-
PaletteAI installed.
-
Set the
KUBECONFIGenvironment variable to the path of the PaletteAI hub clusterkubeconfigfile.export KUBECONFIG=<kubeconfig-location>
Upgrade with Flux
Use Flux to manage your PaletteAI installation, upgrades, and CRD lifecycle. Flux monitors the OCI registry and upgrades the Helm releases when new chart versions are available.
Enablement
-
Create
mural-crds-oci-repository.yamlfor themural-crdschart.cat << EOF > mural-crds-oci-repository.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
name: mural-crds
namespace: mural-system
spec:
interval: 10m
ref:
semver: "0.7.0-hotfix.4"
url: oci://public.ecr.aws/mural/mural-crds
EOF -
Create
mural-oci-repository.yamlfor themuralchart.cat << EOF > mural-oci-repository.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
name: mural
namespace: mural-system
spec:
interval: 10m
ref:
semver: "1.0.7"
url: oci://public.ecr.aws/mural/mural
EOF -
Apply both
OCIRepositoryresources to your cluster.kubectl apply --filename mural-crds-oci-repository.yaml
kubectl apply --filename mural-oci-repository.yaml -
Create
mural-crds-helm-release.yamlfor themural-crdschart.cat <<'EOF' > mural-crds-helm-release.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: mural-crds
namespace: mural-system
spec:
interval: 10m
chartRef:
kind: OCIRepository
name: mural-crds
namespace: mural-system
install:
crds: Create
upgrade:
crds: CreateReplace
EOF -
Create
mural-helm-release.yamlfor themuralchart. ThedependsOnfield ensures that Flux upgradesmural-crdsbeforemural.cat <<'EOF' > mural-helm-release.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: mural
namespace: mural-system
spec:
interval: 10m
chartRef:
kind: OCIRepository
name: mural
namespace: mural-system
dependsOn:
- name: mural-crds
values:
# Paste the contents of your values.yaml file here.
EOF -
Open
mural-helm-release.yamland replace the placeholder comment underspec.valueswith the contents of thevalues.yamlfile for your environment. Keep the inserted YAML indented underspec.values. -
Apply both
HelmReleaseresources to your cluster.kubectl apply --filename mural-crds-helm-release.yaml
kubectl apply --filename mural-helm-release.yaml
Validate
-
Confirm that both
OCIRepositoryresources were created and are ready.kubectl get ocirepository --namespace mural-systemExample OutputNAME URL READY STATUS AGE
mural-crds oci://public.ecr.aws/mural/mural-crds True stored artifact for digest ... 10s
mural oci://public.ecr.aws/mural/mural True stored artifact for digest ... 10s -
Confirm that both
HelmReleaseresources were created.kubectl get helmrelease --namespace mural-systemExample OutputNAME READY STATUS AGE
mural-crds True Helm upgrade succeeded for release mural-system/mural... 5m
mural True Helm upgrade succeeded for release mural-system/mural... 5m -
Ensure that all PaletteAI pods are in a
Runningstate.kubectl get pods --namespace mural-system
Upgrade Manually
Use the following steps to manage upgrades manually.
If you do not use Flux, manage the mural-crds chart separately from the mural chart. Apply or upgrade Custom Resource Definitions (CRDs) out of band before you install or upgrade the mural chart. For the manual Helm workflow, refer to Upgrade Manually.
Upgrade mural-crds before mural. If you reverse the order, deployment failures or undefined behavior can occur.
Prerequisites
-
Helm is installed and available in your
$PATH. -
kubectl installed and available in your
$PATH. -
The
KUBECONFIGenvironment variable set to the path of the PaletteAI hub cluster'skubeconfigfileexport KUBECONFIG=<kubeconfig-location> -
You have access to the PaletteAI
values.yamlfile configured for your environment.
Enablement
-
Apply the CRDs from the target
mural-crdschart version.helm template mural-crds oci://public.ecr.aws/mural/mural-crds --version 0.7.0-hotfix.4 --include-crds | kubectl apply --server-side --force-conflicts -f -Example OutputPulled: public.ecr.aws/mural/mural-crds:0.5.0
Digest: sha256:406eff86daf9ebdd38a17794390628a353374b6e1a5b856a5f89a702d45dfc79
customresourcedefinition.apiextensions.k8s.io/clustermanagementaddons.addon.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/managedclusters.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/managedclustersets.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/managedclusteraddons.addon.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/managedclustersetbindings.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/addondeploymentconfigs.addon.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/clusterclaims.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/placements.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/addontemplates.addon.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/placementdecisions.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/addonplacementscores.cluster.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/hubs.fleetconfig.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/spokes.fleetconfig.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/artifactgenerators.source.extensions.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/buckets.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/externalartifacts.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/gitrepositories.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/helmcharts.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/helmreleases.helm.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/helmrepositories.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/kustomizations.kustomize.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/ocirepositories.source.toolkit.fluxcd.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/fluxcdconfigs.fluxcd.open-cluster-management.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/aiworkloads.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/componentdefinitions.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/computeconfigs.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/computepoolevaluations.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/computepools.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/computes.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/definitionrevisions.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/environments.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/policydefinitions.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/profilebundles.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/projects.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/scalingpolicies.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/settings.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/tenants.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/traitdefinitions.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/variablesets.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/workloaddeployments.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/workloadprofiles.spectrocloud.com serverside-applied
customresourcedefinition.apiextensions.k8s.io/workloads.spectrocloud.com serverside-applied -
Upgrade the
muralchart. The--waitflag ensures that Helm waits for all resources to be ready before it marks the release as successful.helm upgrade mural oci://public.ecr.aws/mural/mural --version 1.0.7 \
--namespace mural-system --values values.yaml --waitExample OutputPulled: public.ecr.aws/mural/mural:0.7.0
Digest: sha256:406eff86daf9ebdd38a17794390628a353374b6e1a5b856a5f89a702d45dfc79
Release "mural" has been upgraded. Happy Helming!
NAME: mural
LAST DEPLOYED: Wed Feb 18 21:19:03 2026
NAMESPACE: mural-system
STATUS: deployed
REVISION: 2
TEST SUITE: None
Validate
-
Check the
muralHelm release status.helm status mural --namespace mural-systemThe output should show
STATUS: deployedand the latest revision number. -
Confirm that all CRDs are present.
kubectl get crds | grep --extended-regexp "(spectrocloud.com|fluxcd.io|open-cluster-management.io)"Example Outputaddondeploymentconfigs.addon.open-cluster-management.io 2026-01-22T19:41:58Z
addonplacementscores.cluster.open-cluster-management.io 2026-01-22T19:41:58Z
addontemplates.addon.open-cluster-management.io 2026-01-22T19:41:58Z
aiworkloads.spectrocloud.com 2026-01-14T18:10:36Z
appliedmanifestworks.work.open-cluster-management.io 2026-01-14T18:18:10Z
artifactgenerators.source.extensions.fluxcd.io 2026-01-20T23:11:13Z
awscloudconfigs.cluster.spectrocloud.com 2026-01-14T18:05:25Z
# ... output omitted for readability -
Ensure that all PaletteAI pods are in a
Runningstate.kubectl get pods --namespace mural-system
Upgrade Appliance
Follow these steps to upgrade the PaletteAI Management Appliance by using a content bundle downloaded from Artifact Studio. Use this workflow only for appliance-based deployments. If you installed PaletteAI with Helm charts, use Upgrade with Flux or Upgrade Manually.
For additional background, refer to the Palette Management Appliance Upgrade guide.
This workflow causes downtime for the PaletteAI management cluster, but workload clusters remain operational.
Prerequisites
-
A healthy PaletteAI management cluster with access to the Local UI of the leader node.
-
Access to Artifact Studio to download the installation assets for PaletteAI.
-
The content bundle for the target PaletteAI version.
Enablement
-
Sign in to Artifact Studio.
If you do not have access to Artifact Studio, contact your Spectro Cloud representative or open a support ticket.
-
On the Artifact Studio landing page, select the PaletteAI card that matches your deployment.
- Select Install PaletteAI Enterprise for standard PaletteAI appliance deployments.
- Select Install PaletteAI VerteX for PaletteAI VerteX deployments.
-
Use the version drop-down to select the target PaletteAI version.
-
In the download modal, download the Content Bundle asset for the target version.
tipFor appliance upgrades, download only the Content Bundle asset, not the ISO, Helm chart, or MON Key.
-
Log in to the Local UI of the leader node at
https://<node-ip>:5080. -
From the left main menu, select Content. Then select Actions > Upload Content and upload the downloaded content bundle. Wait for the upload and sync to complete.
-
From the left main menu, select Cluster and select the Configuration tab.
-
Select the Update drop-down menu and select Review Changes. Review the proposed changes carefully.
warningEnsure the configured Zot password matches the password used during the initial PaletteAI installation. Some upgrade paths may also require you to re-enter configuration values from the original installation.
-
Select Confirm Changes, then select Update to start the upgrade.
-
After the appliance upgrade completes, update the Flux resources on the management cluster to match the new version.
Update the
spec.ref.semverfield on themural-crdsandmuralOCIRepositoryresources.kubectl patch ocirepository mural-crds --namespace mural-system \
--type merge --patch '{"spec":{"ref":{"semver":"0.7.0-hotfix.4"}}}'kubectl patch ocirepository mural --namespace mural-system \
--type merge --patch '{"spec":{"ref":{"semver":"1.0.7"}}}'Review and update any changed values in the
muralHelmRelease.kubectl edit helmrelease mural --namespace mural-system
Validate
-
Log in to the Local UI at
https://<node-ip>:5080. -
From the left main menu, select Cluster. Confirm that the
palette-aipack displays the upgraded version and is in a Running status. -
Check that both
HelmReleaseresources have reconciled successfully.kubectl get helmrelease --namespace mural-systemBoth
mural-crdsandmuralshould showREADY: True.
Next Steps
- If you upgraded the appliance, confirm that spoke clusters are healthy and reconciling correctly. For spoke architecture and management guidance, refer to the Hub and Spoke Model and your platform-specific installation guide, such as EKS or GKE.