Skip to main content
Version: v1.1.x

Create and Manage Projects

A Project is a team workspace within a Tenant. Projects are where most day-to-day work happens; they give teams their own space, controlled access, and dedicated resources to build and run artificial intelligence and machine learning (AI/ML) applications and models.

A default Tenant and Project are automatically created when you install PaletteAI with global.featureFlags.systemDefaultResources: true in your Helm values. For production workloads, we recommend creating a separate Project per team, product, or business use case. This prevents teams from accidentally modifying AI/ML applications and models, as well as important configurations outside of their purview.

info

Projects cannot be created in the system namespace. The system namespace is reserved for shared platform resources and is not available for Project creation.

You can create Projects using the PaletteAI UI or using YAML Kubernetes manifests.

Create Project

Create a new Project to give your team a dedicated workspace with controlled access and isolated resources for building and deploying AI/ML applications and models.

Prerequisites

  • An existing Tenant.

  • A user with Tenant admin permissions for the Tenant the Project belongs to.

Enablement

  1. Log in to the PaletteAI Tenant the Project belongs to.

  2. From the Projects Menu in the top-left, select All Projects.

  3. From the left main menu, select Projects.

  4. In the top-right, select Create Project.

  5. Use the following table to enter Basic information about the Project. Select Next when finished.

    Basic Information

    ParameterDescriptionRequired
    Project nameThe Project display name. Only letters, numbers, and spaces are permitted.
    DescriptionA brief description of the Project.
    TagsKey-value pairs used to organize and filter Projects.
  6. To use the default Tenant Settings resource for this Project, proceed to the Next page.

    To use a custom Settings resource for this Project instead of the default Tenant Settings, add one or more integrations. A Palette integration is required for custom Settings. You can have one integration of each type (Palette, Hugging Face, and NVIDIA NGC). For more information on integration types, refer to the Settings concept page.

    Select Add integration to add an integration. Choose the integration type and provide the required information.

    Palette Integration

    The Palette integration connects PaletteAI to the Spectro Cloud Palette platform for cluster lifecycle management. A Palette integration is required to deploy Compute Pools.

    ParameterDescriptionRequired
    Integration NameThe name for this Palette integration. Each integration name must be unique within the scope of the Project.
    Host URLThe endpoint of your Palette instance.
    TenantThe name of the Palette tenant that contains the Palette project to deploy Compute Pools on. This value is stored for display purposes in the Settings status and is not used for authentication or API calls.
    Project IDThe ID of your Palette project to deploy Compute Pools on.
    Skip SSL Certificate VerificationIf enabled, PaletteAI does not verify the server's SSL certificate when calling the host URL. Enable only for servers that use a self-signed SSL certificate. Defaults to disabled. Enabling hides all Cert Secret Ref fields.
    Cert Secret TypeChoose between Provide CA or Transport Layer Security (TLS) certificates or Use Existing Secret. Depending on your selection, you either provide certificate details and a name, allowing PaletteAI to create the secret for you, or point to an existing secret within the same namespace as the tenant.
    API KeyThe Palette API key for the user that deploys Compute Pools.
    Annotations(Reserved for future use) The Kubernetes annotations assigned to the integration.
    Labels(Reserved for future use) The Kubernetes labels assigned to the integration.

    After you enter all required values, select Validate to verify your Palette credentials, then Save the integration.

    Hugging Face Integration

    The Hugging Face integration provides API access to Hugging Face Hub for model management. This integration enables per-Project control over which Hugging Face model repositories are available to teams.

    ParameterDescriptionRequired
    Integration NameThe name for this Hugging Face integration. Each integration name must be unique within the scope of the Project.
    API KeyA Hugging Face API token with read or write access.
    Annotations(Reserved for future use) The Kubernetes annotations assigned to the integration.
    Labels(Reserved for future use) The Kubernetes labels assigned to the integration.

    When the form is complete, select Validate to confirm your Hugging Face API key, then Save the integration.

    NVIDIA NGC Integration

    The NVIDIA NGC integration provides credentials for pulling NVIDIA Inference Microservices (NIMs) from the NVIDIA container registry (nvcr.io). This integration enables per-Project control over which NIMs are available to teams.

    ParameterDescriptionRequired
    Integration NameThe name for this NVIDIA NGC integration. Each integration name must be unique within the scope of the Project.
    API KeyAn NVIDIA NGC API key for authenticating with the nvcr.io container registry.
    Annotations(Reserved for future use) The Kubernetes annotations assigned to the integration.
    Labels(Reserved for future use) The Kubernetes labels assigned to the integration.

    With your inputs in place, select Validate to confirm your NVIDIA NGC API key, then Save the integration.

    All configured integrations appear on the Project settings page. If any changes are needed, select Edit; otherwise, proceed to the Next page.

    Model Management (Model as a Service mappings and model access control lists) is not part of the Create Project wizard. You can configure it after creation from the Project Settings page. The Modify Project section shows how to open Project Settings.

  7. Use the Access control page to map OpenID Connect (OIDC) groups to Project roles. At least one viewer, editor, and admin group is required per Project. Select Add group to add groups or the Delete icon to remove them. Proceed to the Next page when finished.

    info

    The OIDC groups must match the groups from your identity provider (Azure AD, Okta, etc.). For static Dex users, these groups must be configured in the dexGroupMap in your Helm values. Refer to User Impersonation for additional information on configuring static Dex users.

  8. The Compute Config page determines the default settings for all Compute Pools deployed through the Project. Select each menu item, making changes as necessary. Select Next when finished.

    Compute Config - General
    ParameterDescriptionRequired
    Compute Config NameThe name for this Compute Config resource. Each Compute Config name must be unique within the scope of the Project.
    Deletion PolicyChoose whether to Delete or Orphan the cluster in Palette when the Compute Pool is deleted in PaletteAI.

    - Delete - (default) Delete associated resources (the cluster in Palette) when the owning resource (the Compute Pool in PaletteAI) is deleted.
    - Orphan - Orphan associated resources (retain the cluster in Palette) when the owning resource (the Compute Pool in PaletteAI) is deleted.
    SSH KeysAdd public Secure Shell (SSH) keys to allow users to access Compute Pool nodes via SSH.

    Compute Config - Edge Configuration

    ParameterDescriptionRequired
    NTP ServersNetwork Time Protocol (NTP) servers used to synchronize time across all nodes in the Compute Pool.
    Enable Network OverlayCreates a virtual network on top of the physical network of the Compute Pool, allowing cluster components within the Compute Pool to communicate using stable, virtual IP addresses, regardless of underlying physical IP address changes. The fields in the following Compute Config - Enable Network Overlay table appear when you enable the overlay network.

    For more information on overlay networks, refer to Palette's Enable Network Overlay guide.

    Compute Config - Enable Network Overlay
    ParameterDescriptionRequired
    Enable static IPUse an IP allocation type of static instead of Dynamic Host Configuration Protocol (DHCP) for the overlay virtual IP (VIP).
    CIDRThe Classless Inter-Domain Routing (CIDR) range for the overlay network. The first IP address in the overlay CIDR range is used as the overlay VIP. This VIP is the internal overlay VIP used by the Compute Pool.
    Overlay Network TypeThe type of overlay network protocol to use. Only VXLAN is supported.

    Compute Config - Control Plane Defaults

    ParameterDescriptionRequired
    Node CountThe number of control plane nodes per Compute Pool. Choose 1, 3, or 5 nodes. If 1 is selected, Worker node eligible must be enabled.
    Worker node eligibleAllow AI/ML applications and models to be deployed on control plane nodes. If Node Count is 1, this option cannot be disabled.
    CPU CountThe minimum number of CPU cores required (requested) for each control plane node in the Compute Pool.
    MemoryThe minimum amount of memory required (requested) for each control plane node in the Compute Pool. A measurement unit is required (for example, GB, GiB, MB, MiB, KB, KiB, etc.).
    ArchitectureThe architecture of the control plane nodes in the Compute Pool. Choose between AMD64 and ARM64.
    AnnotationsThe Kubernetes annotations assigned to each control plane node in the Compute Pool.
    LabelsThe Kubernetes labels assigned to each control plane node in the Compute Pool.
    TaintsThe Kubernetes taints assigned to each control plane node in the Compute Pool.

    Compute Config - Worker Pool Defaults

    Use the Add Worker Pool button to add additional worker pools to the Compute Pool. Each worker pool can have its own defaults. Worker pools are optional.

    ParameterDescription
    ArchitectureThe architecture of the worker nodes in the worker pool. Choose between AMD64 and ARM64.
    Min Worker NodesThe minimum number of worker nodes required in the worker pool.
    CPU CountThe minimum number of CPU cores required (requested) for each worker node in the worker pool.
    MemoryThe minimum amount of memory required (requested) for each worker node in the worker pool. A measurement unit is required (for example, GB, GiB, MB, MiB, KB, KiB, etc.).
    GPU FamilyThe GPU compute family for the worker pool (for example, NVIDIA A100).
    GPU CountThe total number of GPUs across all worker nodes in the pool for the given architecture and GPU family.
    GPU MemoryThe total GPU memory across all worker nodes in the pool. A measurement unit is required (for example, GB, GiB, MB, MiB, KB, KiB, etc.).
    AnnotationsThe Kubernetes annotations assigned to each worker node in the Compute Pool.
    LabelsThe Kubernetes labels assigned to each worker node in the Compute Pool.
    TaintsThe Kubernetes taints assigned to each worker node in the worker pool. Taints can only be configured on worker pools when control plane defaults have no taints configured.
  9. (Optional) Use the next page to set GPU Limits and Requests across all Compute Pools deployed in this Project. The Key parameter defines the GPU family, whereas the Value parameter specifies the GPU limit. To set a GPU limit for all other GPU families that are not defined, enter Default in the Key field. Select Next when finished.

    When configuring GPU resource limits and requests, the following validation rules apply:

    • Keys must be unique. Duplicate keys are not allowed.

    • Both key and value fields must be filled in. Empty entries are not allowed.

    • Values must be positive numbers (greater than 0).

    For more information on GPU limits, refer to the Tenants and Projects concept page.

  10. Review your Project setup. Expand the Access Control, Compute Config, and Limits sections for additional details. If changes are required, use the Previous button to return to the applicable page or select the appropriate step from the progress menu on the left side of the page. If no changes are needed, select Submit to create the Project.

Validate

  1. Log in to PaletteAI as a Tenant or Project admin.

  2. Navigate to your Project using either of the following methods:

    • (Tenant or Project admin) From the Projects Menu, select your Project.
    • (Tenant admin) From the Projects Menu, select All Projects. Next, from the left main menu, select Projects. Your Project is visible as a tile. Select it to change to the Project scope.
  3. From the left main menu, select Project Settings.

  4. Navigate through the menu items on the left to verify all Project configurations are correct.

Modify Project

As your team's needs evolve, you can adjust Project configurations to grant new team members access, modify default Compute Pool settings, enforce GPU limits, or integrate with a different Palette instance.

Prerequisites

Enablement

  1. Log in to the PaletteAI Tenant the Project belongs to.

  2. Navigate to your Project using either of the following methods:

    • (Tenant or Project admin) From the Projects Menu, select your Project.
    • (Tenant admin only) From the Projects Menu, select All Projects. Next, from the left main menu, select Projects. Your Project is visible as a tile. Select it to change to the Project scope.
  3. From the left main menu, select Project Settings.

  4. Navigate through the menu items on the left. Here, you can modify existing project configurations, as well as create new ones or swap those currently in use.

    Menu ItemDescription
    GeneralModify the Project's display name, description, and tags.
    Access controlMap OIDC groups to Project roles. At least one viewer, editor, and admin group is required per Project. Select Add group to add groups or the Delete icon to remove them.

    The OIDC groups must match the groups from your identity provider (Azure AD, Okta, etc.). For static Dex users, these groups must be configured in the dexGroupMap in your Helm values. Refer to User Impersonation for additional information on configuring static Dex users.
    ComputeView the list of control-plane- and worker-node-eligible Compute resources available for deploying Compute Pools and AI/ML applications and models. PaletteAI populates this list based on the Palette integration defined in the Settings and the Edge hosts with the appropriate tags.
    Compute ConfigSelect the default Compute Config to use when deploying Compute Pools in this Project. Use the Create Compute Config button to create additional Compute Configs, which can be used to override the default Compute Config during Compute Pool creation. Use the three-dot menu to Edit or Delete existing Compute Configs.
    LimitsSet GPU Limits and Requests across all Compute Pools deployed in this Project.
    Model as a Service MappingsMap model sources to Profile Bundles. When a model from a matching source and filters is deployed, the system automatically selects the targeted Profile Bundle. Only applicable for Hugging Face and NVIDIA NGC integrations.
    Repositories ListConfigure which models are available for deployment within the Project. Define allow/disallow lists for Hugging Face model repositories and NVIDIA NGC NIMs.
    Settings RefSelect the default Settings used to locate Compute resources. The title above the search bar indicates if the Settings resource is sourced from the Tenant or Project scope.

    To use a different Settings resource, select Create Project Settings or Change Settings Ref. To modify existing Project Settings, reference it as the default Settings resource, and use the three-dot menu to Edit the Settings. Tenant Settings cannot be modified at the Project scope, and all Settings must have at least one integration configured.

Validate

  1. Log in to PaletteAI as a Tenant or Project admin.

  2. Navigate to your Project using either of the following methods:

    • (Tenant or Project admin) From the Projects Menu, select your Project.
    • (Tenant admin) From the Projects Menu, select All Projects. Next, from the left main menu, select Projects. Your Project is visible as a tile. Select it to change to the Project scope.
  3. From the left main menu, select Project Settings.

  4. Navigate through the menu items on the left. Verify your updated project configurations are displayed and set to default, where applicable.

Next Steps

Once you have a Project, you can create or import a Profile Bundle. Profile Bundles are used to configure reusable infrastructure stacks for Compute Pools and application stacks for App Deployments.