Skip to content

Declarative node network configuration driven through Kubernetes API.

License

Notifications You must be signed in to change notification settings

openshift/kubernetes-nmstate

This branch is 2850 commits ahead of nmstate/kubernetes-nmstate:main.

Folders and files

NameName
Last commit message
Last commit date
Apr 7, 2022
Mar 18, 2025
Mar 21, 2025
Feb 19, 2025
Mar 25, 2025
Mar 25, 2025
Mar 21, 2025
Mar 11, 2025
Mar 25, 2025
Feb 26, 2025
Mar 24, 2025
Mar 21, 2025
Nov 12, 2020
Mar 25, 2025
Nov 25, 2020
Mar 7, 2025
Mar 14, 2025
Mar 17, 2025
Dec 3, 2024
Nov 12, 2020
Mar 5, 2020
Feb 20, 2025
May 9, 2024
Jan 23, 2025
Oct 31, 2018
Mar 21, 2025
Jan 10, 2024
Mar 13, 2025
Oct 25, 2021
Jan 4, 2023
Jun 26, 2023
Mar 17, 2025
Mar 17, 2025

Repository files navigation

kubernetes-nmstate

[keɪ ɛn ɛm steɪt] Declarative node network configuration driven through Kubernetes API.

How it works

We use nmstate to perform state driven network configuration on cluster nodes and to report back their current state. Both the configuration and reporting is controlled via Kubernetes objects.

apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: br1-eth0
spec:
  desiredState:
    interfaces:
    - name: br1
      type: linux-bridge
      state: up
      ipv4:
        dhcp: true
        enabled: true
      bridge:
        port:
        - name: eth0

The only external dependency is NetworkManager running on nodes. See more details in Compatibility documentation.

Deployment and Usage

You can choose to deploy this operator on a local virtualized cluster or on your arbitrary cluster.

Following comprehensive 101 series is the best place to start learning about all the features:

  1. Reporting - observe the current state of network on cluster nodes.
  2. Configuring - configure networks and observe the progress.
  3. Troubleshooting - see what's wrong if a configuration fails.

These example manifests should serve as reference on how to configure various configuration options:

The "Why"

With hybrid clouds, node-networking setup is becoming even more challenging. Different payloads have different networking requirements, and not everything can be satisfied as overlays on top of the main interface of the node (e.g. SR-IOV, L2, other L2). The Container Network Interface (CNI) standard enables different solutions for connecting networks on the node with pods. Some of them are part of the standard, and there are others that extend support for Open vSwitch bridges, SR-IOV, and more...

However, in all of these cases, the node must have the networks setup before the pod is scheduled. Setting up the networks in a dynamic and heterogenous cluster, with dynamic networking requirements, is a challenge by itself - and this is what this project is addressing.

Development and Contributing

Contributions are welcome! Find details about the project's design and development workflow in the developer guide.

About

Declarative node network configuration driven through Kubernetes API.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 88.2%
  • Shell 9.2%
  • Makefile 1.5%
  • Other 1.1%