kubernetes-nmstate

module
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2019 License: GPL-2.0

README

kubernetes-nmstate

Node-networking configuration driven by Kubernetes and executed by nmstate.

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.

The "How"

We use nmstate to perform state driven network configuration on each node, as well as to return back its current state. The system defines 1 objects, NodeNetworkState that is used to report and configure cluster node networks.

For more information, please check kubernetes-nmstate design document, developer guide and deployment and usage section.

Node Network State

Node Network State objects are created per each node in the cluster and can be used to configure and report available interfaces and network configuration.

Example of NodeNetworkState listing network configuration of node01 can be found at state example.

Deployment and Usage

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

After that, you can follow one of the following guides that will guide you through node state reporting and interface configuration.

Development and Contributing

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

Releasing

To cut a release , push images to quay and publish it on GitHub the command make release do all this automatically, the version is at version/version.go and the description at version/description.

So the step would be:

  • Change version/version.go and versions/description
  • Create a PR to review it
  • Merge it to master
  • Call make release from master

The environment variable GITHUB_TOKEN is needed to publish at github it points to a token generated by github to access projects.

Directories

Path Synopsis
cmd
pkg
apis/nmstate/v1alpha1
Package v1alpha1 contains API Schema definitions for the nmstate v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=nmstate.io Package v1alpha1 contains API Schema definitions for the nmstate v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=nmstate.io
Package v1alpha1 contains API Schema definitions for the nmstate v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=nmstate.io Package v1alpha1 contains API Schema definitions for the nmstate v1alpha1 API group +k8s:deepcopy-gen=package,register +groupName=nmstate.io
test
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL