Skip to main content
Version: v1.4.x

Create and Manage Profile Bundles

Profile bundles are reusable bundles that package infrastructure and application configurations for consistent, repeatable deployments across compute pools. You can create profile bundles through the PaletteAI UI or import them from PaletteAI Studio using the UI or PaletteAI CLI.

Create Profile Bundles​

Create a new profile bundle to package infrastructure and application configurations into a reusable, deployable unit.

info

Profile Bundles can be created at the Project scope only. To add a Profile Bundle at the Tenant scope, you must import it.

Prerequisites​

  • A user with project editor or admin permissions.

  • An existing project with a configured Settings resource that includes a Palette integration. The Palette integration is required for cluster profile selection.

  • (Infrastructure and Fullstack profile bundles) At least one cluster profile of type Infrastructure or Full with a cloud type of Edge Native must exist in the Palette project configured in your Settings.

  • (Application and Fullstack profile bundles) At least one workload profile must exist in the PaletteAI project. For information on creating a workload profile, refer to our Create and Manage Workload Profiles guide.

Enablement​

  1. Log in to PaletteAI. Ensure you are in the Project scope.

  2. From the left main menu, select Profile Bundles.

  3. In the top-right, select New profile bundle. Alternately, beside an existing profile bundle, select the three-dot menu, and choose Clone Profile Bundle.

  4. (Clone mode only) The clone form displays a Source Details section showing the name and version (semantic versioning) or revision (basic versioning) of the profile bundle you are cloning from.

  5. Enter General Information for your profile bundle. The available fields depend on whether your PaletteAI instance uses basic or semantic versioning. The following tables describe the fields for each mode. Select Next when finished.

    info

    Versioning mode is a system-wide setting configured during installation via the Helm value global.featureFlags.versioningType. The default is semantic (v0.0.1, v0.1.0, ...). Set to basic for basic versioning (v0, v1, ...). Refer to Helm Chart Configuration for details.

    General Information​

    ParameterDescriptionRequired
    NameA unique name for your profile bundle within the project scope. Must start and end with alphanumeric characters, can only contain lowercase letters, numbers, hyphens, and periods, and must be 63 characters or fewer (the Kubernetes label value limit). The reserved name new cannot be used.✅
    DescriptionA description for your profile bundle.❌
    New RevisionThe revision identifier. Automatically incremented and cannot be modified manually.✅
    Revision notesNotes describing what changed in this revision. They are stored as a Kubernetes annotation (spectrocloud.com/revision-note) on the ProfileBundle resource.❌
    AnnotationsKey-value metadata for attaching non-identifying details to the ProfileBundle resource.❌
    LabelsKey-value pairs used to organize, filter, and identify the ProfileBundle resource. Labels are used by Model as a Service Mappings to auto-select profile bundles for model deployments. The profilebundle.yaml manifest also supports a labels field. Refer to Manifest Labels.❌
  6. On the Select Profiles screen, choose the Bundle Type. Your selection determines which types of profiles you can add. For more information on profile bundle types, refer to our profile bundles page.

    Profile Combinations​

    Bundle TypeDescriptionCluster ProfilesWorkload Profiles
    Auto-detectShow all profiles and infer the bundle type based on your selection at submit time.- Infrastructure or Full
    - Unlimited Add-ons
    - Application
    - Model
    - Infrastructure
    ApplicationDeploys applications or models onto existing compute pools.N/A- Application
    InfrastructureProvisions new compute pools.- Infrastructure or Full
    - Unlimited Add-ons
    - Infrastructure
    FullstackProvisions new compute pools and deploys applications or models on those compute pools.- Infrastructure or Full
    - Unlimited Add-ons
    - Application
    - Model
    - Infrastructure

    A fullstack profile bundle can be used in workflows that do not require all of its components. When this happens, PaletteAI deploys only the relevant elements and ignores the rest. For example, deploying a fullstack profile bundle to a shared compute pool ignores the cluster profiles and deploys only the applicable workload profiles. Refer to Fullstack Profile Bundles in Non-Primary Workflows for details.

    warning

    If a Fullstack Profile Bundle includes application layers built from generic k8s-objects, PaletteAI cannot infer end-to-end workload health from those resources. Where possible, add explicit health policies to your components. Otherwise, document the readiness checks users must perform manually and do not treat Compute Pool Running as proof that bundled applications are deployed or accessible.

    How Auto-detect Works

    When Auto-detect is selected, PaletteAI infers the bundle type at submission time based on the profiles you selected:

    • If you selected only Application or Model workload profiles (no cluster profiles, no Infrastructure workload profiles), the bundle type resolves to Application.
    • If all selected profiles are infrastructure-related (Infrastructure or Full cluster profiles and/or Infrastructure workload profiles), the bundle type resolves to Infrastructure.
    • If your selection includes both infrastructure-related profiles and Application or Model workload profiles or Add-on cluster profiles, the bundle type resolves to Fullstack.
  7. After selecting the bundle type, add the applicable profiles and Confirm each selection.

    1. (Non-application bundles) Select Add Cluster Profile to open the Select Cluster Profiles drawer. Choose between the Infra & full and Add-ons tabs. Cluster profiles are sourced from the Palette project configured in your Settings.

      • Infra & Full - Select an Infrastructure or Full cluster profile. The cluster profile must have a cloud type of Edge native in order to be displayed.
      • Add-ons - Select as many Add-on cluster profiles as necessary. All Add-on cluster profiles from the linked Palette project are displayed.
      info

      Pack presets are not supported on the selected Cluster Profile. Refer to Cluster Profiles for supported customization paths.

    2. Select Add Workload Profile to open the Select Workload Profiles drawer. Choose among the Application, Model, and Infrastructure tabs. The available tabs depend on the selected bundle type. Multiple workload profiles can be selected per tab.

  8. After you add a profile, use the version drop-down to select the applicable version. Use the + icon to add additional profiles and the trash icon to remove profiles. Select Next when finished.

  9. On the Variables screen, review the variables that the selected Workload Profiles declare and set the resolution scope for each one. This screen appears when the bundle includes at least one Workload Profile.

    The table lists every variable detected in the selected Workload Profiles.

    ColumnDescription
    Lock (icon)A lock icon in the leading column marks a variable that is locked and cannot be overridden.
    Workload ProfileThe Workload Profile that declares the variable.
    Workload Profile ScopeThe scope of the Workload Profile: Project, Tenant, or System.
    Variable NameThe variable key. An asterisk (*) marks a variable that is required at deployment time. A warning icon marks a variable that does not exist in Project or System scope.
    ValueThe effective value. Displays Not Defined when no value is set, or Required at deployment when the variable is required and has no default.
    DescriptionThe variable description.
    Variable ScopeWhere the value resolves from: Project, System, or Profile Bundle.

    To configure a variable, select the edit (pencil) icon in its row. A locked variable is marked by a lock icon in the leading column; locked Project or System variables do not have an edit icon, while a locked Profile Bundle variable retains its edit icon. In the Configure Variable drawer, set the Scope field and the variable fields. For the field definitions, refer to VariableSet Structure.

    The Scope field determines how the variable resolves.

    ScopeDescription
    Use existingResolves the variable from its existing Project or System value. The drawer displays that value read-only. Available only when the variable already exists in Project or System scope.
    Define in Profile BundleOverrides the Project or System value with a bundle-scoped value you set in this bundle.

    When you save a variable in Define in Profile Bundle scope, PaletteAI stores a Profile Bundle override. To remove the override and revert the variable to its Project or System value, select Use existing. The drawer then displays the existing value, and you can switch back to Define in Profile Bundle to restore the override before you save.

    info

    A variable that does not exist in Project or System scope can only use Define in Profile Bundle scope. The Use existing option is disabled for these variables.

    Select Next when finished.

  10. On the Requirements screen, configure the hardware and software requirements for your profile bundle. All fields on this screen are optional but help PaletteAI match appropriate compute pool resources when deploying workloads. Select Next when finished.

General Requirements​

ParameterDescriptionRequired
Minimum Kubernetes VersionThe minimum Kubernetes version required for the cluster (for example, 1.28.0).❌
Minimum Storage (GB)The minimum storage required in gigabytes for the cluster provisioned from or selected for this profile bundle. Must be at least 1 if specified.❌

Control Plane Pool​

ParameterDescriptionRequired
ArchitectureThe CPU architecture of the control plane nodes. Choose between AMD64 and ARM64. Defaults to AMD64.❌
Node CountThe number of control plane nodes. Must be 1, 3, or 5 to maintain quorum.❌
CPU CountPer-node minimum CPU count for each control plane node.❌
MemoryPer-node minimum memory for each control plane node. A measurement unit is required (for example, 16 GB, 8192 MiB).❌
GPU VariantThe GPU variant the control plane nodes require, displayed as 'GPU model - per-GPU memory' (for example, NVIDIA H100 - 80 GB). Options are populated from the available Compute resources in the project.❌
Physical GPU CountTotal number of GPUs across the control plane nodes for the given GPU variant. Required if a GPU Variant is selected.❌
Total GPU MemoryTotal GPU memory across the control plane nodes. PaletteAI derives it from the selected GPU variant and count, so it is read-only.❌
Worker Node EligibleAllow control plane nodes to run workloads.❌
TaintsKubernetes taints assigned to each control plane node.❌
LabelsKubernetes labels assigned to each control plane node.❌
AnnotationsKubernetes annotations assigned to each control plane node.❌

Worker Pools​

Use Add Pool to add additional worker pools. Each worker pool is displayed as a separate tab. You can remove worker pools using the Remove button, including the last one. Removing all worker pools while Node Count is 1 and Worker Node Eligible is enabled configures the bundle requirements for a single-node cluster. Refer to Deploy a Single-Node Compute Pool for details.

info

A control plane pool GPU requirement is matched on the GPU variant, not the count alone. A Compute Pool satisfies the requirement when its own GPU variant matches the required variant, when the requirement pins no variant or pins all, or when the pool contributes no GPU; in every case its GPU count must be at least the required count. Configure control plane GPU requirements when the bundle targets a single-node cluster, which has no worker pools to carry the GPU.

ParameterDescriptionRequired
ArchitectureThe CPU architecture of the worker nodes. Choose between AMD64 and ARM64. Defaults to AMD64.❌
Minimum Worker NodesThe minimum number of worker nodes that must be provisioned for this pool.❌
CPU CountPer-node minimum CPU count for each worker node.❌
MemoryPer-node minimum memory for each worker node. A measurement unit is required (for example, 16 GB, 8192 MiB).❌
GPU VariantThe GPU variant, displayed as 'GPU model - per-GPU memory' (for example, NVIDIA H100 - 80 GB or NVIDIA A100-SXM4-80GB | 80 GB). Options are populated from the available Compute resources in the project.❌
Physical GPU CountTotal number of GPUs across all worker nodes in the pool for the given architecture and GPU variant. Required if a GPU Variant is selected.❌
Total GPU MemoryTotal GPU memory across all worker nodes in the pool. PaletteAI derives it from the selected GPU variant and count, so it is read-only.❌
TaintsKubernetes taints assigned to each worker node.❌
LabelsKubernetes labels assigned to each worker node.❌
AnnotationsKubernetes annotations assigned to each worker node.❌
  1. On the Review screen, verify your profile bundle configuration. If changes are needed, use the step navigation on the left to return to the applicable screen. When satisfied, select Finish to create the profile bundle.

Validate​

  1. Log in to PaletteAI. Ensure you are in the Project scope.

  2. From the left main menu, select Profile Bundles.

  3. Verify your new profile bundle is listed in the table. The Status column displays Ready once PaletteAI has processed the profile bundle.

Import Profile Bundles​

Import a pre-built profile bundle from PaletteAI Studio into your PaletteAI instance using the PaletteAI UI or PaletteAI CLI. If the profile bundle includes variable sets, they are imported and applied to the generated profiles.

Prerequisites​

  • A user with Tenant Admin, or Project Editor, or Project Admin permissions. Refer to Roles and Permissions for more information.

  • A Tenant or Project with a Ready status.

  • A profile bundle archive (.tar.gz) or extracted directory downloaded from PaletteAI Studio.

Enablement​

  1. Log in to PaletteAI. Ensure you are in the appropriate Tenant or Project scope.

  2. Select Import Profile Bundle.

  3. Select Browse files and select the TGZ bundle you downloaded from PaletteAI Studio. Alternatively, drop the TGZ bundle into the Import Profile Bundle(s) modal window.

  4. The modal window shows you the upload progress and reports the contents of the Profile Bundle. Continue to the next step.

  5. Review the imported Profile Bundle. Select Finish & Import. The Profile Bundle appears in the table.

Manifest Labels​

The profilebundle.yaml manifest in a PaletteAI Studio archive supports a labels field. The paletteai studio import command applies the manifest labels to the ProfileBundle resource it creates. Use labels to organize, filter, and identify profile bundles, the same as labels set through the Profile Bundles UI. The palette.ai/inference-engine label documented in Profile Bundles is one example: model deployments use it to validate Compute Pool compatibility with the model's Application Profile Bundle.

Two labels are derived from manifest fields:

  • spectrocloud.com/fipsCompliant is derived from the fipsCompliant field and always overrides a spectrocloud.com/fipsCompliant label set in the manifest. A manifest label cannot advertise FIPS compliance that the fipsCompliant field does not declare.

  • palette.ai/infra-kind marks the infrastructure kind a Compute Pool provisions from the bundle: container or vm. A palette.ai/infra-kind label set in the manifest is preserved. For bundles of type infrastructure or fullstack that do not set the label, paletteai studio import sets it to container. Application bundles do not receive the container default, but an authored label is still preserved.

Compute Pools provisioned from a bundle labeled palette.ai/infra-kind: 'vm' support AI VMs, and the vmLimits field on such Compute Pools applies only to AI VMs. Refer to VM Limits for the available fields.

Validate​

  1. Log in to PaletteAI.

  2. From the left main menu, select Profile Bundles.

  3. Verify the imported profile bundle is listed in the table. The Status column displays Ready once PaletteAI has processed the profile bundle.

Edit Profile Bundles​

Edit an existing profile bundle to update its configuration. Each edit creates a new revision, preserving the previous configuration.

info

Profile Bundles can be edited at the Project scope only.

Prerequisites​

Enablement​

  1. Log in to PaletteAI. Ensure you are in the Project scope.

  2. From the left main menu, select Profile Bundles.

  3. Locate the profile bundle you want to edit. Select the three-dot menu and choose Create Revision or Create Version. The label depends on whether the project uses semantic versioning (Create Version) or basic versioning (Create Revision).

  4. Update the General Information as needed. When editing, the Name field is read-only. You can modify the Description, Revision notes, and (if semantic versioning is enabled) the Update type. Refer to the General Information table for additional details. Select Next when finished.

  5. On the Select Profiles screen, modify the bundle as needed. From this screen, you can:

    • Change the bundle type
    • Remove existing profiles
    • Add new cluster profiles or workload profiles
    • Change the version of existing profiles using the version drop-down menu

    Refer to the Profile Combinations section for additional details. Select Next when finished.

  6. On the Requirements screen, modify the following requirements as needed. Select Next when finished.

  7. On the Review screen, verify your changes and select Finish to save the new revision. If the profile bundle is tied to a compute pool, the components do not use a pinned version (for example, use latest), your compute pool is automatically updated with the latest version of your profile bundle during the next reconciliation cycle.

Validate​

  1. Log in to PaletteAI.

  2. From the left main menu, select Profile Bundles.

  3. Verify the profile bundle's Latest revision column reflects the new revision number.

Next Steps​

Once you have a profile bundle, depending on the type created, you can use it to deploy a compute pool, app deployment, or model deployment.