PaletteAI 1.3.0 Release Notes
Summary
PaletteAI 1.3.0 is the first stable release in the 1.3 line. It introduces network isolation across every scope, per-scope inference quotas and API keys, day-2 model deployment operations with usage metering and pricing, per-tenant identity isolation, and permission-driven navigation, on top of broad improvements to edge networking, single-node clusters, and deployment reliability.
- Network isolation - A new network isolation experience lets administrators govern connectivity and resource sharing at the system, tenant, compute pool, and project scopes, including a dedicated settings page, compute pool create and day-2 views, a tenant Projects view, and per-integration allow toggles that respect parent-scope governance. This feature is backed by a new
frisketcontroller, a subchart that is deployed by default on the hub (see Upgrade Notes and Component Versions). - Inference quotas and API keys - Administrators can manage inference quotas, limits, and API keys per scope. Quotas are created automatically when a scope is created, scope-total quotas are protected from deletion, model deployments select an inference quota, and workloads are flagged when a quota is out of policy or exhausted.
- Model deployment day-2 and pricing - Model deployments support day-2 changes with in-place saves and clearer save feedback, token usage metering, install-wide model pricing management, and price federation for model-as-a-service workloads.
- Per-tenant identity isolation - Tenants can be configured with their own identity connector references, with per-tenant identity connector isolation enforced so group-claim trust and inherited OIDC groups stay scoped to the correct tenant.
- Permission-gated navigation and access control - Sidebar navigation and routes are shown based on each user's resource view permissions, administrators can edit built-in personas and add custom ones, and create, update, and delete actions across compute pools, workloads, profile bundles, repositories, definitions, quotas, and projects are enforced against a user's permissions.
- Edge networking and single-node clusters - Multi-NIC edge hosts are handled more reliably with static and DHCP IP addresses, single-node control-plane clusters are better supported for day-1 and day-2 operations, and edge host tags are surfaced in compute status.
- Deployment and profile bundle reliability - Day-2 profile bundle saves are streamlined, infrastructure-only add-on variants are filtered out of bundles and workloads, expired sessions are redirected to the login page instead of showing opaque errors, and pushing large model image layers to the built-in mirror is more resilient.
For the complete list of changes in each component, refer to Full Component Release Notes.
Upgrade Notes
- You must upgrade the
mural-crdschart to 0.7.23 before upgrading themuralchart to 1.3.0. For detailed instructions on how to upgrade PaletteAI, refer to the PaletteAI upgrade guide. - This release deploys a new
frisketnetwork-isolation controller. Thefrisketsubchart is enabled by default (frisket.enabled: true) and runs on the hub cluster; it is disabled automatically on spoke installs. No action is required for a default upgrade, but if you manage a trimmed set of subcharts, account for the new workload. - The
curator.ocm.addon.managedClustersHelm value has been removed. If you previously overrode it (for example, a hub-as-spokemanagedClustersentry), remove that override before upgrading, as the option no longer exists.
Component Versions
The following component versions are pinned for this PaletteAI release. Alongside the four core components, 1.3.0 ships the new frisket network-isolation subchart (deployed by default).
| Component | Version |
|---|---|
| brush | 0.5.30 |
| canvas | 0.6.27 |
| frisket | 0.1.6 |
| hue | 0.12.35 |
| mural-crds | 0.7.23 |
Mural Helm values
The following diff lists changes to mural/charts/mural/values.yaml between PaletteAI 1.2.2 and 1.3.0. Review it before upgrading if you maintain custom Helm values.
values.yaml changes between 1.2.2 and 1.3.0
diff --git a/mural/charts/mural/values.yaml b/mural/charts/mural/values.yaml
index b2157125e..40db0a037 100644
--- a/mural/charts/mural/values.yaml
+++ b/mural/charts/mural/values.yaml
@@ -18,7 +18,7 @@
## @param global.kubernetesClusterDomain Kubernetes cluster domain
## @param global.kubernetesProvider Kubernetes provider of the cluster that mural will be installed on. Valid values are "Generic", "EKS", "GKE-Ingress"
## @param global.certManagerVersion The cert-manager version passed to sub charts - do NOT edit
-## @param global.muralVersion Umbrella chart version passed to sub charts - do NOT edit
+## @param global.muralVersion Umbrella chart version passed to sub charts - do NOT edit <!-- x-release-please-version -->
## @param global.dns.domain The primary domain to use for the deployment. For example, acme.internal.org.
## @param global.dns.rootIngress.enabled Whether to create a root ingress for the domain that routes to the primary application. For example, if you want the root domain to automatically route to `/mural`. Disable if traefik is not used.
## @param global.dns.rootIngress.ingressClassName The ingress class name for the root ingress
@@ -72,7 +72,7 @@ global:
# - use a custom FleetConfig controller image with the `gke-gcloud-auth-plugin` installed
kubernetesProvider: "Generic"
certManagerVersion: "v1.19.1"
- muralVersion: "1.2.2"
+ muralVersion: "1.3.0" # x-release-please-version
dns:
domain: "replace.with.your.domain"
rootIngress:
@@ -120,7 +120,7 @@ global:
username: ""
password: ""
basicAuthSecretName: ""
- muralCrdsVersion: "0.7.17-hotfix.2"
+ muralCrdsVersion: "0.7.23"
## @section certificates
## @param certificates.clusterIssuer.spec.selfSigned The spec for the ClusterIssuer used by cert-manager to issue the Mural root CA certificate.
@@ -1505,11 +1505,11 @@ brush:
## @param brush.replicaCount The number of replicas to use for the deployment
replicaCount: 1
## @param brush.image.repository The repository to use for the image
- ## @param brush.image.tag x-release-please-version
+ ## @param brush.image.tag The version to use for the image
## @param brush.image.pullPolicy The pull policy to use for the image
image:
repository: public.ecr.aws/mural/brush
- tag: v0.5.24-hotfix.2
+ tag: v0.5.30
pullPolicy: IfNotPresent
## @param brush.imagePullSecrets The pull secrets to use for the image
imagePullSecrets: []
@@ -1800,11 +1800,11 @@ canvas:
## @param canvas.imageRegistry Image registry
imageRegistry: ''
## @param canvas.image.repository canvas image repository
- ## @param canvas.image.tag canvas image tag x-release-please-version
+ ## @param canvas.image.tag canvas image version
## @param canvas.image.pullPolicy canvas image pull policy
image:
repository: public.ecr.aws/mural/canvas
- tag: v0.6.18-hotfix.2
+ tag: v0.6.27
pullPolicy: IfNotPresent
## @param canvas.imagePullSecrets Image pull secrets
imagePullSecrets: []
@@ -2034,21 +2034,16 @@ curator:
name: curator
## @param curator.ocm.addon.installNamespace Namespace on the managed cluster where the curator agent is installed.
installNamespace: mural-system
- ## @param curator.ocm.addon.managedClusters Managed clusters to enable the curator addon on.
- ## Each entry creates a ManagedClusterAddOn in the managed cluster namespace on the hub.
- managedClusters: []
- # - namespace: hub-as-spoke
- # installNamespace: mural-system
## @section curator agent parameters
## @param curator.replicaCount Number of curator replicas on each spoke cluster.
replicaCount: 1
## @param curator.image.repository Image repository for curator.
- ## @param curator.image.tag Image tag for curator.
+ ## @param curator.image.tag Image version for curator.
## @param curator.image.pullPolicy Image pull policy for curator.
image:
repository: public.ecr.aws/mural/curator
- tag: v0.0.2-hotfix.2
+ tag: v0.0.8
pullPolicy: IfNotPresent
## @param curator.imagePullSecrets Image pull secrets for curator.
imagePullSecrets: []
@@ -3302,6 +3297,65 @@ fluxcd-manager:
image: us-docker.pkg.dev/palette-images-fips/palette/spectro-flux-bcfips/source-controller
tag: v1.7.2
+## @section frisket
+frisket:
+ ## @param frisket.enabled Whether to enable the frisket chart. Default is true.
+ enabled: true
+ # Default values for the frisket operator chart.
+
+ ## @section frisket operator parameters
+
+ ## @param frisket.image.repository Image repository for frisket.
+ ## @param frisket.image.tag Image version for frisket.
+ ## @param frisket.image.pullPolicy Image pull policy for frisket.
+ image:
+ repository: public.ecr.aws/mural/frisket
+ tag: v0.1.6
+ pullPolicy: IfNotPresent
+ ## @param frisket.imagePullSecrets Secret names used to authenticate the private image registry (leave empty for public ECR).
+ imagePullSecrets: []
+ ## @param frisket.nameOverride Override for the chart name segment of resource names.
+ nameOverride: ""
+ ## @param frisket.fullnameOverride Override for the fully qualified app name.
+ fullnameOverride: "frisket"
+ ## @param frisket.replicaCount Number of manager replicas. Leader election guarantees only one is active at a time; >1 is only useful for HA.
+ replicaCount: 1
+ ## @param frisket.serviceAccount.create Whether to create the operator's ServiceAccount.
+ ## @param frisket.serviceAccount.annotations Annotations for the operator's ServiceAccount.
+ ## @param frisket.serviceAccount.name Name of the operator's ServiceAccount. Generated when empty.
+ serviceAccount:
+ create: true
+ annotations: {}
+ name: ""
+ ## @param frisket.resources.limits.cpu CPU limit for the frisket manager.
+ ## @param frisket.resources.limits.memory Memory limit for the frisket manager.
+ ## @param frisket.resources.requests.cpu CPU request for the frisket manager.
+ ## @param frisket.resources.requests.memory Memory request for the frisket manager.
+ resources:
+ limits:
+ cpu: 500m
+ memory: 256Mi
+ requests:
+ cpu: 100m
+ memory: 128Mi
+ ## @param frisket.leaderElection Whether to enable leader election for multi-replica coordination.
+ leaderElection: true
+ ## @param frisket.metrics.bindAddress Bind address for the metrics endpoint.
+ ## @param frisket.metrics.secure Whether to serve metrics over HTTPS.
+ metrics:
+ bindAddress: ":8443"
+ secure: true
+ ## @param frisket.podAnnotations Annotations for frisket manager pods.
+ podAnnotations: {}
+ ## @param frisket.podLabels Labels for frisket manager pods.
+ podLabels: {}
+ ## @param frisket.nodeSelector Node selector for frisket manager pods.
+ nodeSelector: {}
+ ## @param frisket.tolerations Tolerations for frisket manager pods.
+ tolerations: []
+ ## @param frisket.affinity Affinity rules for frisket manager pods.
+ affinity: {}
+
## @section hue
hue:
## @param hue.enabled Whether to enable the hue chart. Default is true.
@@ -3424,11 +3478,11 @@ hue:
## @param hue.imageRegistry Image registry
imageRegistry: ""
## @param hue.image.repository Image repository
- ## @param hue.image.tag x-release-please-version
+ ## @param hue.image.tag Image version
## @param hue.image.pullPolicy Image pull policy
image:
repository: public.ecr.aws/mural/hue
- tag: v0.12.28-hotfix.2
+ tag: v0.12.35
pullPolicy: IfNotPresent
## @param hue.resources.requests.cpu hue controller deployment's cpu request
## @param hue.resources.requests.memory hue controller deployment's memory request
@@ -3607,7 +3661,7 @@ hue:
enabled: true
image:
repository: public.ecr.aws/mural/hue-definitions
- tag: v0.12.28-hotfix.2
+ tag: v0.12.35
pullPolicy: IfNotPresent
pullSecrets: []
job:
Full Component Release Notes
The following table lists all changes made to core components in this PaletteAI release.
Per-component changes in 1.3.0
| Component | Tag | Notes |
|---|---|---|
| brush | brush/v0.5.24 | Bug Fixes
Performance
|
| brush | brush/v0.5.25 | Bug Fixes
|
| brush | brush/v0.5.26 | Other
Refactoring
|
| brush | brush/v0.5.27 | Bug Fixes
|
| brush | brush/v0.5.28 | Bug Fixes
Other
Refactoring
|
| brush | brush/v0.5.29 | Bug Fixes
|
| brush | brush/v0.5.30 | Dependency Updates
|
| canvas | canvas/v0.6.18 | Bug Fixes
|
| canvas | canvas/v0.6.19 | Features
Bug Fixes
Other
Refactoring
|
| canvas | canvas/v0.6.20 | Features
Bug Fixes
Other
|
| canvas | canvas/v0.6.21 | Features
Bug Fixes
Docs
Refactoring
|
| canvas | canvas/v0.6.22 | Features
Bug Fixes
|
| canvas | canvas/v0.6.23 | Features
Bug Fixes
Other
Refactoring
|
| canvas | canvas/v0.6.24 | Bug Fixes
|
| canvas | canvas/v0.6.25 | Bug Fixes
|
| canvas | canvas/v0.6.26 | Features
|
| canvas | canvas/v0.6.27 | Features
Bug Fixes
|
| frisket | frisket/v0.1.1 | Refactoring
|
| frisket | frisket/v0.1.2 | Bug Fixes
Refactoring
|
| frisket | frisket/v0.1.3 | Features
|
| frisket | frisket/v0.1.4 | Features
Bug Fixes
Other
Refactoring
|
| frisket | frisket/v0.1.5 | Features
Other
Refactoring
|
| frisket | frisket/v0.1.6 | Bug Fixes
Other
|
| hue | hue/v0.12.28 | Bug Fixes
|
| hue | hue/v0.12.29 | Features
Bug Fixes
Other
Refactoring
|
| hue | hue/v0.12.30 | Features
Bug Fixes
Other
|
| hue | hue/v0.12.31 | Bug Fixes
Other
Refactoring
|
| hue | hue/v0.12.32 | Features
Bug Fixes
|
| hue | hue/v0.12.33 | Features
Bug Fixes
Other
Docs
Refactoring
|
| hue | hue/v0.12.34 | Features
Bug Fixes
Other
|
| hue | hue/v0.12.35 | Features
Bug Fixes
Docs
Dependency Updates
|
| mural-crds | mural-crds/v0.7.17 | Features
|
| mural-crds | mural-crds/v0.7.18 | Features
|
| mural-crds | mural-crds/v0.7.19 | Features
Refactoring
|
| mural-crds | mural-crds/v0.7.20 | Refactoring
|
| mural-crds | mural-crds/v0.7.21 | Features
|
| mural-crds | mural-crds/v0.7.22 | Features
Refactoring
|
| mural-crds | mural-crds/v0.7.23 | Bug Fixes
|