---
title: "Feature Gates"
layout: default
sort: 11
---

# Feature Gates
{: .no_toc}

---

Feature gates are a set of key-value pairs that control the behavior of NFD.
They are used to enable or disable certain features of NFD.
The feature gates are set using the `-feature-gates` command line flag or
`featureGates` value in the Helm chart. The following feature gates are available:

| Name                  | Default | Stage  | Since   | Until  |
| --------------------- | ------- | ------ | ------- | ------ |
| `NodeFeatureAPI`      | true    | Beta   | V0.14   | v0.16  |
| `NodeFeatureAPI`      | true    | GA     | V0.17   |        |
| `DisableAutoPrefix`   | false   | Alpha  | V0.16   |        |
| `NodeFeatureGroupAPI` | false   | Alpha  | V0.16   |        |

## NodeFeatureAPI

The `NodeFeatureAPI` feature gate enables the Node Feature API.
When enabled, NFD will register the Node Feature API with the Kubernetes API
server. The Node Feature API is used to expose node-specific hardware and
software features to the Kubernetes scheduler. The Node Feature API is a beta
feature and is enabled by default.

## NodeFeatureGroupAPI

The `NodeFeatureGroupAPI` feature gate enables the Node Feature Group API.
When enabled, NFD will register the Node Feature Group API with the Kubernetes API
server. The Node Feature Group API is used to create node groups based on
hardware and software features. The Node Feature Group API is an alpha feature
and is disabled by default.

## DisableAutoPrefix

The `DisableAutoPrefix` feature gate controls the automatic prefixing of names.
When enabled nfd-master does not automatically add the default
`feature.node.kubernetes.io/` prefix to unprefixed labels, annotations and
extended resources. Automatic prefixing is the default behavior in NFD v0.16
and earlier.

Note that enabling the feature gate effectively causes unprefixed names to be
filtered out as NFD does not allow unprefixed names of labels, annotations or
extended resources. For example, with the `DisableAutoPrefix` feature gate set
to `false`, a NodeFeatureRule with

```yaml
  labels:
    foo: bar
```

will turn into `feature.node.kubernetes.io/foo=bar` node label. With
`DisableAutoPrefix` set to `true`, no prefix is added and the label will be
filtered out.

Note that taint keys are not affected by this feature gate.
