AIWorkloads
An AIWorkload is the custom resource that represents an App Deployment or Model Deployment on the PaletteAI hub cluster. When you complete the App Deployment or Model Deployment workflow, PaletteAI creates an AIWorkload resource in your Project namespace. The resource captures everything the deployment needs: the Profile Bundles to deploy, the workloads to generate from them, and the Compute Pool that runs them.
PaletteAI creates and manages AIWorkload resources through the UI and API workflows, so you do not need to author them manually. Because each AIWorkload is a namespaced Kubernetes resource on the hub cluster, you can inspect it with kubectl, and the deployment task guides include example manifests that you can apply directly if you prefer a YAML-based workflow. Refer to Create and Manage App Deployments and Create and Manage Model Deployments for the step-by-step procedures.
An AIWorkload with the palette.ai/aiworkload-type: model label is a Model Deployment. An AIWorkload without this label is an App Deployment.
What an AIWorkload Describes
The AIWorkload specification brings together the application definition and the compute target for a deployment:
-
Profile Bundles (
spec.profileBundles) - References to one or more Profile Bundles. At most one referenced Profile Bundle can be of type Infrastructure or Fullstack; all others must be of type Application. -
Workload configuration (
spec.workloadDeploymentConfigs) - One entry per workload to deploy. Each entry references a Workload Profile within one of the referenced Profile Bundles, names the target Workload and its namespace, and sets variable values for that workload. -
Compute target - Either
spec.computePoolRef, which points to an existing Compute Pool, orspec.clusterVariant, which defines a new dedicated, shared, or imported Compute Pool to create as part of the deployment. The two fields are mutually exclusive. -
Hardware requests (
spec.hardwareRequests) - The CPU, memory, and GPU capacity the deployment needs. Required when the deployment targets a shared or imported Compute Pool. -
Deletion policy (
spec.deletionPolicy) - Determines whether a Compute Pool created by theAIWorkloadis deleted (delete) or kept (orphan) when theAIWorkloadis deleted.
How PaletteAI Processes an AIWorkload
When an AIWorkload is created, the PaletteAI hub controllers reconcile it through the following stages:
-
Resolve the Compute Pool - PaletteAI uses the Compute Pool referenced by
spec.computePoolRef, or creates a new one fromspec.clusterVariant, and waits until it is ready. -
Resolve the Environment - Each Compute Pool publishes an Environment reference in its status. The
AIWorkloaddoes not reference an Environment directly; it inherits the Environment from its Compute Pool. -
Generate Workload Deployments - PaletteAI generates one Workload Deployment for each entry in
spec.workloadDeploymentConfigs, combining the referenced Workload Profile, the target workload name and namespace, the variable values, and the Compute Pool's Environment. When theAIWorkloadcreates a Compute Pool inline, the infrastructure workloads from an Infrastructure or Fullstack Profile Bundle are managed through the Compute Pool, and theAIWorkloadgenerates only the application or model workloads. -
Render and place the Workloads - Each Workload Deployment follows the standard PaletteAI deployment flow: the Environment determines which spoke clusters receive the workload, and the rendered Workloads are applied there. Refer to How Workloads Flow from Hub to Spoke for the complete flow.
Related Resources
| Resource | Relationship to AIWorkload |
|---|---|
| ProfileBundle | The AIWorkload references one or more Profile Bundles in spec.profileBundles. Each workloadDeploymentConfigs entry points to a Workload Profile contained in one of these bundles. |
| ComputePool | The AIWorkload targets an existing Compute Pool or creates a new one during deployment. The status.computePoolRef field records the Compute Pool in use. |
| Environment | The AIWorkload inherits the Environment published by its Compute Pool. The Environment determines which clusters receive the generated workloads. |
| WorkloadDeployment | PaletteAI generates one Workload Deployment per workloadDeploymentConfigs entry. The status.workloadDeployments field lists the generated names. |
| Workload | Each Workload Deployment renders a Workload on the target spoke clusters. The Workload is the concrete resource that runs your application or model. |
Status and Conditions
The status.status field reports the overall state of the AIWorkload: Provisioning, Running, Unhealthy, Failed, or Deleting. The UI displays this value as the App Deployment or Model Deployment status.
The status.conditions field provides more granular progress information:
-
ComputePoolReady- The target Compute Pool is provisioned and ready. -
WorkloadDeploymentCreated- The Workload Deployments were generated. -
WorkloadDeploymentReady- The generated Workload Deployments are ready. -
ModelInPolicy- For Model Deployments from a model catalog, indicates whether the selected model is allowed by the model access controls configured in the Project or Tenant settings.
To inspect an AIWorkload on the hub cluster, use the following commands.
kubectl get aiworkload --namespace <project-namespace>
kubectl describe aiworkload <name> --namespace <project-namespace>
Resources
-
Create and Manage App Deployments - Step-by-step guide for creating App Deployments, including example
AIWorkloadmanifests. -
Create and Manage Model Deployments - Step-by-step guide for creating Model Deployments, including example
AIWorkloadmanifests. -
App Deployments - Concept overview of App Deployments.
-
Model Deployments - Concept overview of Model Deployments.
-
Compute Pools - The infrastructure where AI/ML workloads run.