Skip to content

Commit 3866a11

Browse files
committed
Deploy Kubernetes-nmstate with openshift
Signed-off-by: Sebastian Sch <[email protected]>
1 parent b02d45e commit 3866a11

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
title: kubernetes-nmstate
3+
authors:
4+
- "@schseba"
5+
reviewers:
6+
7+
approvers:
8+
- TBD
9+
10+
creation-date: 2019-12-18
11+
last-updated: 2019-12-18
12+
status:
13+
---
14+
15+
# kubernetes-nmstate
16+
17+
## Release Signoff Checklist
18+
19+
- [ ] Enhancement is `implementable`
20+
- [ ] Design details are appropriately documented from clear requirements
21+
- [ ] Test plan is defined
22+
- [ ] Graduation criteria for dev preview, tech preview, GA
23+
- [ ] User-facing documentation is created in [openshift-docs](https://github.com/openshift/openshift-docs/)
24+
25+
## Summary
26+
27+
A proposal to deploy [kubernetes-nmstate](https://github.com/nmstate/kubernetes-nmstate/) on OpenShift.
28+
29+
Node-networking configuration driven by Kubernetes and executed by
30+
[nmstate](https://nmstate.github.io/).
31+
32+
## Motivation
33+
34+
With hybrid clouds, node-networking setup is becoming even more challenging.
35+
Different payloads have different networking requirements, and not everything
36+
can be satisfied as overlays on top of the main interface of the node (e.g.
37+
SR-IOV, L2, other L2).
38+
The [Container Network Interface](https://github.com/containernetworking/cni)
39+
(CNI) standard enables different
40+
solutions for connecting networks on the node with pods. Some of them are
41+
[part of the standard](https://github.com/containernetworking/plugins), and there are
42+
others that extend support for [Open vSwitch bridges](https://github.com/kubevirt/ovs-cni),
43+
[SR-IOV](https://github.com/hustcat/sriov-cni), and more...
44+
45+
However, in all of these cases, the node must have the networks setup before the
46+
pod is scheduled. Setting up the networks in a dynamic and heterogenous cluster,
47+
with dynamic networking requirements, is a challenge by itself - and this is
48+
what this project is addressing.
49+
50+
### Goals
51+
52+
- Deploy kubernetes-nmstate as part of openshift
53+
54+
### Non-Goals
55+
56+
- Replace SRIOV operator
57+
58+
## Proposal
59+
60+
A new kubernetes-nmstate handler DaemonSet is deployed in the cluster part of the OpenShift installation.
61+
This DaemonSet contains nmstate package and interacts with the NetworkManager
62+
on the host by mounting the related dbus. The project contains two
63+
Custom Resource Definitions, `NodeNetworkState` and `NodeNetworkConfigurationPolicy`.
64+
`NodeNetworkState` objects are created per each node in the cluster and can be
65+
used to report available interfaces and network configuration. These objects
66+
are created by kubernetes-nmstate and must not be touched by a user.
67+
`NodeNetworkConfigurationPolicy` objects can be used to specify desired
68+
networking state per node or set of nodes. It uses API similar to `NodeNetworkState`.
69+
70+
kubernetes-nmstate DaemonSet creates a custom resource of `NodeNetworkState` type per each node and
71+
updates the network topology from each OpenShift node.
72+
73+
User configures host network changes and apply a policy in `NodeNetworkConfigurationPolicy` custom
74+
resource. Network topology is configured via `desiredState` section in `NodeNetworkConfigurationPolicy`.
75+
Multiple `NodeNetworkConfigurationPolicy` custom resources can be created.
76+
77+
Upon receiving a notification event of `NodeNetworkState` update,
78+
kubernetes-nmstate Daemon verify the correctness of `NodeNetworkState` custom resource and
79+
apply the selected profile to the specific node.
80+
81+
### User Stories
82+
83+
#### Bond creation
84+
85+
* Be able to create bond interfaces on OpenShift nodes.
86+
* Create a vlan interface on top of the bond inter.
87+
88+
#### Assign ip address
89+
90+
* Assign static and/or dynamic ip address on interfaces
91+
* Assign ipv4 and/or ipv6
92+
93+
#### Create/Update/Remove network routes
94+
95+
* Be able to Create/Update/Remove network routes for different interfaces like (bond,ethernet,sriov vf and sriov pf)
96+
97+
#### Rollback
98+
99+
* Be able to rollback network configuration
100+
if we lose connectivity to the openshift api server after applying a policy.
101+
102+
### Implementation Details
103+
104+
The proposal introduces kubernetes-nmstate as Tech Preview.
105+
106+
## Design Details
107+
108+
### Test Plan
109+
110+
- Functional tests will be implemented
111+
112+
### Graduation Criteria
113+
114+
Initial support for kubernetes-nmstate will be Tech Preview
115+
116+
#### Tech Preview
117+
118+
- kubernetes-nmstate can be installed via container image
119+
- Host network topology can be configured via CRDs
120+
121+
#### Tech Preview -> GA
122+
123+
### Upgrade / Downgrade Strategy
124+
125+
### Version Skew Strategy
126+
127+
kubernetes-nmstate runs as a DaemonSet.
128+
129+
## Implementation History
130+
131+
### Version 4.4
132+
133+
Tech Preview
134+
135+
## Infrastructure Needed
136+
137+
This requires a github repo be created under openshift org to hold a clone from kubernetes-nmstate

0 commit comments

Comments
 (0)