CNI-Genie enables container orchestrators (Kubernetes, Mesos) to seamlessly connect to choice of CNI plugins (Calico, Canal, Romana, Weave) configured on a Node. Without CNI-Genie, kubelet is bound to a signle CNI plugin passed to kubelet on start. CNI-Genie allows for multiple CNI plugins being available to kubelet simultaneously.
Please feel free to post your feedback, questions on CNI-Genie Slack channel
Here is a 6 minute demo video that demonstrates 3 scenarios
- Assign IP to pod from a particular network solution eg; Get IP from "Weave"
- Assign multi-IP to pod from multiple network solutions eg: Get 1 IP from "Weave" 2nd IP from "Canal"
- Assign IP to pod from IDEAL network solution eg: Canal has less load, CNI-Genie assigns IP to pod from Canal
CNI Genie is an add-on to Kuberenets open-source project and is designed to provide the following features:
- Multiple CNI plugins are available to users in runtime. This figure shows Kubernetes CNI Plugin landscape before and after CNI-Genie
- User-story: based on "performance" requirements, "application" requirements, “workload placement” requirements, the user could be interested to use different CNI plugins for different application groups
- Different CNI plugins are different in terms of need for port-mapping, NAT, tunneling, interrupting host ports/interfaces
Watch multiple CNI plugins demo
- The user can manually select one (or more) CNI plugin(s) to be added to containers upon creating them. Multiple IP addresses can be injected into a single container making the container reachable across multiple networks
- User-story: in a serverless platform the “Request Dispatcher” container that receives requests from customers of all different tenants needs to be able to pass the request to the right tenant. As a result, is should be reachable on the networks of all tenants
- User-story: many Telecom vendors are adopting container technology. For a router/firewall application to run in a container, it needs to have multiple interfaces
Watch multiple IP addresses demo
Watch multiple IP addresses PER POD demo (IP addresses assigned not only to the container, but also to the Pod)
- The user can leave the CNI plugin selection to CNI-Genie. CNI-Genie maintains a list of Key Performance Indicators (KPIs) to smartly select one (or more) CNI plugin
- CNI Genie maintains a list of KPIs for every CNI plugin including occupancy rate, number of subnets, network latency, available network bandwidth
- CNI Genie maintains a list of KPIs for every container, e.g., network bandwidth utilization
Watch Smart CNI Plugin Selection demo
- CNI-Genie network policy engine for network level ACLs
Note: CNI Genie is NOT a routing solution! It gets IP addresses from various CNSs