Skip to content

CNI-Genie for choosing pod network of your choice during deployment time. Supported pod networks - Calico, Flannel, Romana, Weave

License

Notifications You must be signed in to change notification settings

sushanthakumar/CNI-Genie

 
 

Repository files navigation

CNI-Genie

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.

Build Status Go Report Card

Please feel free to post your feedback, questions on CNI-Genie Slack channel

Demo

Here is a 6 minute demo video that demonstrates 3 scenarios

  1. Assign IP to pod from a particular network solution eg; Get IP from "Weave"
  2. Assign multi-IP to pod from multiple network solutions eg: Get 1 IP from "Weave" 2nd IP from "Canal"
  3. Assign IP to pod from IDEAL network solution eg: Canal has less load, CNI-Genie assigns IP to pod from Canal

asciicast

Contributing

Contributing

Code of Conduct

Why we created CNI-Genie?

CNI Genie is an add-on to Kuberenets open-source project and is designed to provide the following features:

  1. Multiple CNI plugins are available to users in runtime. This figure shows Kubernetes CNI Plugin landscape before and after CNI-Genie image
    • 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

  1. 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 image
    • 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)

  1. 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

  1. CNI-Genie network policy engine for network level ACLs

Note: CNI Genie is NOT a routing solution! It gets IP addresses from various CNSs

About

CNI-Genie for choosing pod network of your choice during deployment time. Supported pod networks - Calico, Flannel, Romana, Weave

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 85.7%
  • Shell 12.9%
  • Makefile 1.4%