#nmstate With the advent of hybrid cloud, node network setup becomes more challenging. Different environments have different network requirements. The Container Network Interface (CNI) standard implements a different solution, which solves the communication problem of Pods in the cluster, including setting IPs and creating routes for them. In all of these cases, however, nodes must have networking set up before pods can be scheduled. Setting up networking in a dynamic, heterogeneous cluster, with dynamic network requirements, is a challenge in itself. The nmstate project aims to configure the network on the node through k8s CRD, which can simplify the network configuration to a certain extent. ## limit `nmstate` depends on NetworkManager, so not all Linux distributions support it, such as ubuntu, etc. do not support it. And the version of NetworkManager must be `>= 1.20` The version of NetworkManager can be checked by: ```shell [root@master ~]# /usr/sbin/NetworkManager --version 1.22.8-4.el8 ``` See the nmstate Helm chart README for more details. ## Install ```shell helm repo add daocloud https://daocloud.github.io/network-charts-repackage/ helm install nmstate -n nmstate daocloud/nmstate --create-namespace ``` For more installation details, please refer to the Helm chart README file. After the installation is complete, create a CR instance and trigger the nmstate controller to work: ```sh cat < mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:50:56:b4:e9:41 brd ff:ff:ff:ff:ff:ff inet 172.144.185.30/16 brd 172.144.255.255 scope global noprefixroute bond0.144 valid_lft forever preferred_lft forever inet6 fd00:144::172:144:185:30/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::250:56ff:feb4:e941/64 scope link noprefixroute valid_lft forever preferred_lft forever ``` For more examples, please refer to: https://github.com/nmstate/kubernetes-nmstate/tree/main/docs/examples