Skip to main content
Version: main 🚧

Use a Stack

A Stack deploys a group of applications to one tenant cluster or control plane cluster. The StackTemplate controls dependencies, health gates, parameters, and values shared between tasks.

Use an App for one independently managed application. Use a Stack when several applications need ordering, health gates, or values from earlier tasks.

Understand licensing​

Stacks don't have a separate license feature. App tasks use the Apps feature, which is available on every plan. Argo CD Application tasks also require the Argo CD Integration feature, which isn't available on the free plan.

If a task isn't licensed, the StackInstance is blocked with the FeatureNotAllowed reason.

Choose how to install a Stack​

You can install a Stack three ways:

  • From the catalog, to add a Stack to a tenant cluster or control plane cluster that already exists.
  • During tenant cluster creation, when the Stack should exist from the start.
  • Through vcluster.yaml, when you manage the tenant cluster's configuration declaratively, such as through GitOps.

The current Platform UI shows Stacks & Apps. Older Platform versions can show Apps instead.

  1. Select the project that owns the destination tenant cluster.

  2. Go to Stacks & Apps, or open the destination and select its applications view.

  3. Select a StackTemplate. Review its description, parameters, and dependency graph.

  4. Select the destination tenant cluster or control plane cluster.

  5. Enter the required parameters, and click .

  6. Open the StackInstance and monitor the aggregate status and each task.

You need access to the StackTemplate and permission to create StackInstances in the project. Published output values require separate permission to get the stackinstances/outputs subresource. See Stack permissions.

Monitor a stack​

The StackInstance aggregate phase summarizes all tasks:

PhaseMeaning
PendingA prerequisite needs manual action.
ProgressingAt least one task is rolling out.
HealthyEvery task is healthy.
DegradedAt least one task failed.
DeletingThe Stack and its owned children are being removed.

Tasks can be Pending, Waiting, Progressing, Blocked, Healthy, or Failed. A waiting task hasn't started because one or more dependencies aren't healthy.

Inspect status through the management API:

vcluster platform connect management
kubectl get stackinstance <stack-name> -n <project-namespace> \
-o jsonpath='{.status.phase}{"\n"}{range .status.tasks[*]}{.name}{"\t"}{.phase}{"\t"}{.message}{"\n"}{end}'

Update or remove a Stack​

Edit the StackInstance to change its parameters. The controller renders the template again and reconciles its tasks.

When a referenced StackTemplate removes a task, prunePolicy controls the existing child:

  • Retain, the default, keeps the child and reports it in status.orphanedApplications.
  • Prune deletes removed children in reverse dependency order.

Deleting a StackInstance removes the applications that it still owns. Application charts can leave persistent volumes, namespaces, hooks, or custom resource definitions behind. Review the application's uninstall behavior before deletion.

Next steps​