https://github.com/john-lin/ovs-cni
https://github.com/john-lin/ovs-cni
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/john-lin/ovs-cni
- Owner: John-Lin
- License: apache-2.0
- Created: 2017-10-12T09:47:38.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-02-04T15:08:43.000Z (over 8 years ago)
- Last Synced: 2024-06-21T04:26:54.449Z (about 2 years ago)
- Language: Go
- Size: 150 KB
- Stars: 25
- Watchers: 7
- Forks: 11
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ovs-cni
[](https://travis-ci.org/John-Lin/ovs-cni)
[](https://codecov.io/gh/John-Lin/ovs-cni)
## Introduction
OVS-CNI is a totally Open vSwitch CNI plugin, it create the Open vSwitch and use veth to connect the OpenvSwitch and container.
ovs-cni supports the following options in its config and you can see the example config `example/example.conf` to learn how to use it.
1. controller IP
```
controller:10.245.1.5:6653
```
2. target vxlan IP
```
vtepIPs: [
"10.245.2.2",
"10.245.2.3"
]
```
3. bridge name
```
ovsBridge: "br0"
```
4. Act as a gateway for pods.
```
isDefaultGateway: true
```
5. Support SNAT for pods traffic.
```
ipMasq: true
```
6. IPAM support
ovs-cni support basic IPAM type such as host-local, you can see `example/example.conf` to see how config it.
Besides, ovs-cni provide a new IPAM plugin central-ip, which use the `ETCD` to perform centralized IP assignment/management and you can go to `ipam/centralip` directory to see more usage about it.
## Usage
If you are familiar with CNI plugin and know how to use it. you can refer to the following instruction to use it.
Otherwise you can go to `deployment` directory to learn how to use it.
### Building ovs-cni
Because ovs-cni used the package management tool called `govendor`, we have to install the govendor first.
```
$ go get -u github.com/kardianos/govendor
```
We use `govendor` to download all dependencies
```
$ cd ~/go/src/github.com/John-Lin/ovs-cni
$ govendor sync
```
build the ovs-cni binary.
```
$ ./build.sh
```
and the binary will come out in the `/bin` directory and you can find `ovs` and `centralip`.
The `ovs` is the main CNI plugin and the `centralip` is the CNI plugin for different IPAM usage.
If you want to use `ETCD` to centralizaed manage the IP address, you should also copy the `centralip` binary to the CNI directory and modify the config to use it.
```
$ sudo ip netns add ns1
$ sudo CNI_COMMAND=ADD CNI_CONTAINERID=ns1 CNI_NETNS=/var/run/netns/ns1 CNI_IFNAME=eth2 CNI_PATH=`pwd` ./ovs