Manage Cluster Apps
Cluster Apps installs ready-made apps from a catalog into your Kubernetes Autopilot cluster, and shows the apps that run in it. You can install, inspect, upgrade and uninstall them from the cluster's detail page.
The apps run inside your cluster and use its capacity. You own them: you can manage them from this page or with any Kubernetes tool, such as helm, kubectl or Lens.
Cluster Apps and Marketplace
Both offer ready-made apps, but they work differently.
| Marketplace | Cluster Apps | |
|---|---|---|
| Where the app runs | On the platform, managed for you | Inside your own Autopilot cluster |
| Who manages the app | The platform | You |
| Billing | App fee plus the resources it uses | Not billed separately; you pay for the cluster size |
| Where to find it | Marketplace menu | Apps section of the cluster detail page |
Choose Marketplace when you want the platform to run the app for you. Choose Cluster Apps when the app belongs next to your own workloads, in a cluster you control.
Open the Apps section
- Open Kubernetes >> Autopilot and click the cluster name.
- In the cluster menu, open Apps:
- Installed lists the apps that run in the cluster.
- Catalog lists the apps you can install.
The cluster must be Running.
Catalog
| App | Category | What it does |
|---|---|---|
| CloudNativePG | Database | Operator that runs and manages PostgreSQL clusters, with failover, backups and rolling updates. |
| Kyverno | Security | Policy engine that validates, mutates and generates Kubernetes resources from declarative policies. |
| NGINX Ingress Controller | Networking | Ingress controller by F5 NGINX that routes HTTP and HTTPS traffic to Services in the cluster. |
| Percona Operator for MongoDB | Database | Operator that runs Percona Server for MongoDB replica sets and sharded clusters, with backups and point-in-time recovery. |
| Percona Operator for MySQL | Database | Operator that runs Percona XtraDB Cluster, a highly available MySQL with synchronous replication, backups and point-in-time recovery. |
| Strimzi | Messaging | Operator that runs Apache Kafka clusters, topics and users through Kubernetes resources. |
| Valkey | Database | In-memory key-value store, an open-source fork of Redis. |
Each catalog entry uses a tested chart version and default values sized for small clusters. The catalog grows over time.
Install an app
- Open Apps >> Catalog and click Install on the app.
- Check the Release name and Namespace. Both are filled with the catalog defaults. The namespace is created if it does not exist.
- Optionally edit Values (YAML). The editor starts with the catalog's defaults. Your values override them; an empty editor uses the chart's own defaults.
- Click Check capacity. The platform renders the app with your values and checks it against your cluster, without installing anything.
- When the result says The app fits in this cluster, click Install. Install stays disabled until a check passes for the current inputs; if you change anything, check again.
The app's detail panel opens. Its workloads show Starting and then Ready as the pods start.
Only one install or upgrade runs at a time in a cluster. If another one is running, wait a moment and try again.
Capacity check results
A check that does not pass says The app cannot be installed as it is, with the reasons:
| Reason | What to do |
|---|---|
| Not enough capacity | A table shows, for each resource, what the app needs, what is available and how much is short, together with the smallest cluster size that fits. Click Resize cluster to enlarge the cluster, or lower the app's values (replicas, requests, limits). |
| Request above its limit | A container asks for more than its limit allows. Set a limit at least as large as the request. |
| Resource values required | A container has no CPU, memory or storage values and the cluster gives it no default. Set them in the values. |
| Pod Security | The app needs privileges that pods in an Autopilot cluster are not allowed, such as privileged mode or host paths. It cannot run in an Autopilot cluster. |
| Kubernetes version | The app does not support the cluster's Kubernetes version. Upgrade the cluster if a supported version is available. |
| The chart cannot be rendered | The values are not valid for the app. The message shows the error. |
| Not enough room to uninstall | The app fits, but the cluster would have too little room left for the steps the app runs when it is uninstalled (for example removing its admission webhooks). Uninstalling would stall and leave parts behind. Resize the cluster to the suggested size, or lower the app's values. |
A check that passes can still show warnings:
| Warning | Meaning |
|---|---|
| Little room for updates | The app fits, but the cluster has too little room left for the extra pods a rolling update starts. A later update of the app may stop halfway until the cluster is larger. |
| Little room for autoscaling | The app's autoscalers cannot reach their maximum number of pods with the room left. |
| No quota | The cluster has no capacity limits to check against, so capacity was not checked. |
Operators such as CloudNativePG and Strimzi start more pods later, when you create a database or a Kafka cluster. Those pods are not part of the check; the result notes this. Leave room for them.
View installed apps
Apps >> Installed lists every app release in the cluster, with its namespace, chart and version, source, status, workloads and last update. Filter by namespace or search by name.
The Source column shows where an app came from:
- Catalog: installed from the catalog.
- Other: installed with another tool, such as
helmor Lens. It is shown as it is.
Click an app's name to open its detail panel. It shows the chart and app version, status, revision, workloads, and the notes the app prints after installing. Open workloads in Explorer takes you to the app's pods and other objects.
Workload states
| State | Meaning |
|---|---|
| Ready | All the app's workloads have their pods ready. |
| Starting | Pods are still starting. |
| Needs attention | Some pods cannot start. The panel lists why, with the number of pods affected. |
The reasons a pod cannot start are:
| Reason | What to do |
|---|---|
| Waiting for cluster capacity | The cluster is full; the panel names the resource that ran out. Resize the cluster or reduce the app. The pods start on their own once there is room; you do not need to reinstall. |
| Waiting for platform capacity | The platform has no room for the pod right now. Contact your platform administrator. |
| Resource values required | Set CPU, memory and storage values for the container. |
| Blocked by Pod Security | The pod needs privileges that are not allowed in an Autopilot cluster. |
| Storage pending | A volume of the pod is not ready yet. |
| Image cannot be pulled | Check the image name and registry access. |
| Crashing repeatedly | The container keeps exiting. Check its logs in Explorer. |
| Configuration error | A ConfigMap, Secret or setting the container needs is missing or invalid. |
| Pods not created | The workload could not create its pods, for example because a policy in the cluster rejected them. |
Upgrade an app
When the catalog has a newer version of an app you installed from it, the list shows the new version next to the current one, with an upgrade button.
- Click the upgrade button in the list, or Upgrade in the app's detail panel.
- Edit the values if needed. The editor shows the app's current values; what you save replaces them, so a key you remove is removed.
- Click Check capacity. The check considers only what the change adds to what the app already uses.
- Click Upgrade.
You can also use Upgrade without a new version, to change the values of an app.
Only apps installed from the catalog can be upgraded here. If an upgrade fails, the app is returned to its previous revision.
Uninstall an app
- Click the delete button in the list, or Uninstall in the app's detail panel.
- Confirm.
The app and the objects it created are removed. Volumes the app created may be deleted too, depending on the app. The namespace stays; delete it from Cluster >> Namespaces if you no longer need it. Operators such as CloudNativePG, Strimzi and the Percona operators also leave their custom resource definitions (CRDs), and the resources you created with them, so your data is not deleted by accident.
If the cluster has filled up since the install and the app's uninstall steps cannot start, the uninstall is refused with The app cannot be uninstalled cleanly right now, the resources that are short, and the smallest cluster size that fits. Nothing is removed. Resize the cluster or free some room, then uninstall again.
Apps in the Kubernetes system namespaces (kube-system, kube-public, kube-node-lease) cannot be uninstalled here.
Billing
Cluster Apps are not billed separately. Your cluster is billed by its size, as described in Manage Kubernetes Cluster. An app uses part of that size; if it needs more, resize the cluster.
Limitations
- Cluster Apps is available for Autopilot clusters. Clusters added to Explorer with a kubeconfig are not supported.
- Apps are not given a public hostname. Reach them inside the cluster through their Services, or expose them yourself, for example with the NGINX Ingress Controller from the catalog. A public endpoint needs a reserved IP; set it in the controller's values as
controller.service.loadBalancerIP. See Manage Kubernetes Cluster.