Cluster Chart : NMState
Configure the NMState network operator for declarative node-level network interface configuration.
This chart is part of the cluster-xxx startx helm chart series that doesn’t necessarily deploy pods but rather represent a cluster configuration state orchestrated by gitops tools like ArgoCD.
Requirements and guidelines
Read the startx helm-repository homepage for more information on how to use these resources.
Deploy this helm chart on openshift
1. Connect to your Openshift cluster
oc login -t <token> <cluster-url>
2. Install the repository
helm repo add startx https://helm-repository.readthedocs.io/en/latest/repos/stable/
3. Get information about this chart
helm show chart startx/cluster-nmstate
4. Install this chart
Default values
Complete deployment of a project with the following characteristics:
- Deploy the NMState CR (
nmstate/nmstate) to activate the operator daemonset on all nodes - The operator subscription and namespace are managed separately via the
operatorandprojectsub-charts (both disabled by default)
# base configuration running default configuration
helm install cluster-nmstate startx/cluster-nmstate
Full deployment with operator and project
Enable the operator subscription and project namespace alongside the NMState CR:
helm install cluster-nmstate startx/cluster-nmstate \
--set project.enabled=true \
--set operator.enabled=true
Other available values
- startx : NMState operator with full STARTX context (see values-startx.yaml)
helm install cluster-nmstate startx/cluster-nmstate -f https://raw.githubusercontent.com/startxfr/helm-repository/master/charts/cluster-nmstate/values-startx.yaml
ArgoCD deployment
Deploy via ArgoCD Application
Deploy cluster-nmstate using three dedicated ArgoCD Applications — one per concern — all sharing the same AppProject:
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: cluster-nmstate
namespace: openshift-gitops
spec:
description: Deploy the NMState network operator on OpenShift
sourceRepos:
- 'http://sx-helm-repository-prod.s3-website.eu-west-3.amazonaws.com/*'
destinations:
- server: https://kubernetes.default.svc
namespace: openshift-nmstate
- server: https://kubernetes.default.svc
namespace: '*'
clusterResourceWhitelist:
- group: ''
kind: Namespace
- group: operators.coreos.com
kind: OperatorGroup
- group: operators.coreos.com
kind: Subscription
- group: nmstate.io
kind: NMState
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cluster-nmstate-project
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: openshift-nmstate
server: https://kubernetes.default.svc
project: cluster-nmstate
source:
chart: cluster-nmstate
helm:
values: |
project:
enabled: true
repoURL: http://sx-helm-repository-prod.s3-website.eu-west-3.amazonaws.com/stable
targetRevision: 21.3.11
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cluster-nmstate-operator
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: openshift-nmstate
server: https://kubernetes.default.svc
project: cluster-nmstate
source:
chart: cluster-nmstate
helm:
values: |
operator:
enabled: true
repoURL: http://sx-helm-repository-prod.s3-website.eu-west-3.amazonaws.com/stable
targetRevision: 21.3.11
syncPolicy:
automated:
prune: true
selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cluster-nmstate-app
namespace: openshift-gitops
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: openshift-nmstate
server: https://kubernetes.default.svc
project: cluster-nmstate
source:
chart: cluster-nmstate
helm:
values: |
nmstate:
enabled: true
repoURL: http://sx-helm-repository-prod.s3-website.eu-west-3.amazonaws.com/stable
targetRevision: 21.3.11
syncPolicy:
automated:
prune: true
selfHeal: true
Apply with:
kubectl apply -f cluster-nmstate-argocd.yaml -n openshift-gitops
The automated sync policy ensures ArgoCD reconciles each concern independently whenever the chart or values drift from the desired state.
Values dictionary
context values dictionary
| Key | Default | Description |
|---|---|---|
| context.scope | myscope |
Name of the global scope for this application |
| context.cluster | default |
Name of the cluster running this application |
| context.environment | myenv |
Name of the environment (dev, factory, preprod, prod) |
| context.component | mycomponent |
Component name of this application |
| context.app | default-nmstate |
Application name |
| context.version | 4.21.0 |
Version name of this application |
nmstate values dictionary
| Key | Default | Description |
|---|---|---|
| nmstate.enabled | true |
Enable the creation of the NMState CR to activate the operator |
| nmstate.hooked | false |
Deploy as a Helm/ArgoCD post-sync hook |
| nmstate.name | nmstate |
Name of the NMState instance (must be nmstate for the operator to reconcile) |
nncp values dictionary
| Key | Default | Description |
|---|---|---|
| nncp.enabled | false |
Enable the deployment of a NodeNetworkConfigurationPolicy |
| nncp.hooked | false |
Deploy as a Helm/ArgoCD post-sync hook |
| nncp.name | default-network-policy |
Name of the NodeNetworkConfigurationPolicy |
| nncp.nodeSelector | {} |
Node selector to target specific nodes (empty = all) |
| nncp.desiredState | interfaces: [] |
Desired network state in NMState YAML format |
History
| Release | Date | Description |
|---|---|---|
| 21.3.3 | 2026-06-16 | Initial chart creation for NMState operator on OCP 4.21 |
| 21.3.4 | 2026-06-17 | Improve cluster-nmstate options |
| 21.3.11 | 2026-06-17 | publish stable update for the full repository |