> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formae.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Kubernetes supported resources

> The resource types the formae Kubernetes plugin supports.

## Helm charts

Need a Helm chart deployed through formae? The `formae-helm` Pkl wrapper lets you reference a chart by name and version, set values inline, and apply it alongside the rest of your forma.

```kotlin theme={"languages":{"custom":["/languages/pkl.json"]}}
import "@formae-helm/v1.31/HelmChart.pkl"

local chart = new HelmChart {
  chart = "bitnami/nginx"
  version = "22.4.7"
  releaseName = "my-nginx"
  namespace = "demo"
  values = new Dynamic {
    replicaCount = 2
    service { type = "ClusterIP" }
  }
}

forma {
  ...chart.resources
}
```

See the supported Helm chart resources below.

## Supported resources

| Type                                                       | Discoverable | Extractable | Comment                                                          |
| ---------------------------------------------------------- | ------------ | ----------- | ---------------------------------------------------------------- |
| K8S::Admissionregistration::MutatingAdmissionPolicy        | ✅            | ✅           | K8s 1.36+                                                        |
| K8S::Admissionregistration::MutatingWebhookConfiguration   | ✅            | ✅           |                                                                  |
| K8S::Admissionregistration::ValidatingWebhookConfiguration | ✅            | ✅           |                                                                  |
| K8S::Apiextensions::CustomResourceDefinition               | ❌            | ❌           | CRDs are cluster infrastructure; not enumerated during discovery |
| K8S::Apps::DaemonSet                                       | ✅            | ✅           |                                                                  |
| K8S::Apps::Deployment                                      | ✅            | ✅           |                                                                  |
| K8S::Apps::ReplicaSet                                      | ✅            | ✅           |                                                                  |
| K8S::Apps::StatefulSet                                     | ✅            | ✅           |                                                                  |
| K8S::Autoscaling::HorizontalPodAutoscaler                  | ✅            | ✅           |                                                                  |
| K8S::Batch::CronJob                                        | ✅            | ✅           |                                                                  |
| K8S::Batch::Job                                            | ✅            | ✅           |                                                                  |
| K8S::Coordination::Lease                                   | ✅            | ✅           |                                                                  |
| K8S::Core::ConfigMap                                       | ✅            | ✅           |                                                                  |
| K8S::Core::Endpoints                                       | ✅            | ✅           |                                                                  |
| K8S::Core::LimitRange                                      | ✅            | ✅           |                                                                  |
| K8S::Core::Namespace                                       | ✅            | ✅           |                                                                  |
| K8S::Core::PersistentVolume                                | ✅            | ✅           |                                                                  |
| K8S::Core::PersistentVolumeClaim                           | ✅            | ✅           |                                                                  |
| K8S::Core::Pod                                             | ✅            | ✅           |                                                                  |
| K8S::Core::ResourceQuota                                   | ✅            | ✅           |                                                                  |
| K8S::Core::Secret                                          | ✅            | ✅           |                                                                  |
| K8S::Core::Service                                         | ✅            | ✅           |                                                                  |
| K8S::Core::ServiceAccount                                  | ✅            | ✅           |                                                                  |
| K8S::Custom::Resource                                      | ❌            | ❌           | Generic custom resource; one catch-all type spans every CRD kind |
| K8S::Flowcontrol::FlowSchema                               | ✅            | ✅           |                                                                  |
| K8S::Flowcontrol::PriorityLevelConfiguration               | ✅            | ✅           |                                                                  |
| K8S::Networking::Ingress                                   | ✅            | ✅           |                                                                  |
| K8S::Networking::IngressClass                              | ✅            | ✅           |                                                                  |
| K8S::Networking::NetworkPolicy                             | ✅            | ✅           |                                                                  |
| K8S::Node::RuntimeClass                                    | ❌            | ❌           |                                                                  |
| K8S::Policy::PodDisruptionBudget                           | ✅            | ✅           |                                                                  |
| K8S::Rbac::ClusterRole                                     | ❌            | ❌           |                                                                  |
| K8S::Rbac::ClusterRoleBinding                              | ✅            | ✅           |                                                                  |
| K8S::Rbac::Role                                            | ✅            | ✅           |                                                                  |
| K8S::Rbac::RoleBinding                                     | ✅            | ✅           |                                                                  |
| K8S::Scheduling::PriorityClass                             | ✅            | ✅           |                                                                  |
| K8S::Storage::CSIDriver                                    | ❌            | ❌           |                                                                  |
| K8S::Storage::StorageClass                                 | ❌            | ❌           |                                                                  |

CRDs and arbitrary custom resources are supported via `K8S::Apiextensions::CustomResourceDefinition` (register the CRD) and the generic `K8S::Custom::Resource` (manage instances of any CRD kind). Neither is enumerated during discovery. The full per-kind schema lives in the [plugin repo](https://github.com/platform-engineering-labs/formae-plugin-k8s/tree/main/schema/pkl).

### Discovery filters

`formae discover` skips a default set of system-installed resources so a fresh managed cluster doesn't drag control-plane noise into your inventory. Skipped by default:

* System namespaces: `kube-system`, `kube-public`, `kube-node-lease`
* Default ServiceAccounts and their tokens
* Controller-owned Pods (ReplicaSet, DaemonSet, Job, etc.)
* `system:*` ClusterRoles and ClusterRoleBindings
* Bootstrap FlowSchemas
* Cloud-provider default StorageClasses (`gp2`, `standard`, `local-path`)
* Cloud-provider admission webhooks prefixed `eks-`, `gke-`, `aks-`

Want to manage one of these resources instead of skipping it? You'll need to fork the plugin, remove the matching entry from `DiscoveryFilters()`, and rebuild.
