All Projects → cybozu-go → Coil

cybozu-go / Coil

Licence: mit
CNI plugin for Kubernetes designed for scalability and extensibility

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Coil

Python Proxy
HTTP/HTTP2/HTTP3/Socks4/Socks5/Shadowsocks/ShadowsocksR/SSH/Redirect/Pf TCP/UDP asynchronous tunnel proxy implemented in Python 3 asyncio.
Stars: ✭ 692 (+754.32%)
Mutual labels:  nat
Esp Idf Nat Example
ESP-IDF example project with NAT setup.
Stars: ✭ 41 (-49.38%)
Mutual labels:  nat
Nat
nat - the 'ls' replacement you never knew you needed
Stars: ✭ 1,129 (+1293.83%)
Mutual labels:  nat
Kube Ovn
A Kubernetes Network Fabric for Enterprises that is Rich in Functions and Easy in Operations
Stars: ✭ 798 (+885.19%)
Mutual labels:  cni
Miniupnp
UPnP IGD implementation
Stars: ✭ 974 (+1102.47%)
Mutual labels:  nat
Frps Onekey
Frps 一键安装脚本&管理脚本 A tool to auto-compile & install frps on Linux
Stars: ✭ 1,014 (+1151.85%)
Mutual labels:  nat
Nsmartproxy
NSmartProxy是一款开源免费的内网穿透工具。采用.NET CORE的全异步模式打造。(NSmartProxy is an open source reverse proxy tool that creates a secure tunnel from a public endpoint to a locally service.)
Stars: ✭ 547 (+575.31%)
Mutual labels:  nat
K Vswitch
k-vswitch is an easy-to-operate, performant and secure Kubernetes networking plugin based on Open vSwitch
Stars: ✭ 71 (-12.35%)
Mutual labels:  cni
Bond Cni
Bond-cni is for fail-over and high availability of networking in cloudnative orchestration
Stars: ✭ 36 (-55.56%)
Mutual labels:  cni
Mr2
Mr.2 can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration.
Stars: ✭ 1,102 (+1260.49%)
Mutual labels:  nat
Turn
Pion TURN, an API for building TURN clients and servers
Stars: ✭ 831 (+925.93%)
Mutual labels:  nat
Antrea
Kubernetes networking based on Open vSwitch
Stars: ✭ 964 (+1090.12%)
Mutual labels:  cni
Multus Cni
Stars: ✭ 1,025 (+1165.43%)
Mutual labels:  cni
Docker Host
A docker sidecar container to forward all traffic to local docker host or any other host
Stars: ✭ 769 (+849.38%)
Mutual labels:  nat
Udp Hole Punching Examples
A small collection of examples for UDP hole punching.
Stars: ✭ 66 (-18.52%)
Mutual labels:  nat
Spike
📣 A fast reverse proxy written in PHP that helps to expose local services to the internet
Stars: ✭ 582 (+618.52%)
Mutual labels:  nat
Cilium
eBPF-based Networking, Security, and Observability
Stars: ✭ 10,256 (+12561.73%)
Mutual labels:  cni
Tcptunnel
将本地内网服务器映射到公网。
Stars: ✭ 72 (-11.11%)
Mutual labels:  nat
Wenat Client Java
Wenat内网穿透,java版客户端
Stars: ✭ 70 (-13.58%)
Mutual labels:  nat
Nat Explorer
An example project using Nat & Weex.
Stars: ✭ 55 (-32.1%)
Mutual labels:  nat

GitHub release CI PkgGoDev Go Report Card

Coil

Coil is a CNI-based network plugin for Kubernetes.

Coil is designed with respect to the UNIX philosophy. You can combine Coil with any routing software and/or any network policy implementation.

Coil allows to define multiple IP address pools. You can define a pool of global IPv4 addresses for a small number of pods and another pool of private IPv4 addresses for the remaining pods.

There are blog articles about Coil: https://blog.kintone.io/archive/category/Coil

Status

Version 2 is generally available (GA). It conforms to CNI spec 0.4.0.

Dependencies

  • Kubernetes Version: 1.18, 1.19, 1.20

    • Other versions are likely to work, but not tested.
  • (Optional) Routing software

    • Coil has a simple routing software for flat L2 networks.
    • If your network is not flat, use BIRD or similar software to advertise the routes.

Features

  • Address pools

    Coil can have multiple pools of IP addresses for different purposes. By setting a special annotation to a namespace, you can specify a pool for the pods in that namespace.

  • IPv4/IPv6 dual stack

    In addition to IPv4-only and IPv6-only stacks, Coil can define dual stack address pools.

  • Running with any routing software

    Coil provides a simple router for clusters where all the nodes are in a flat L2 network. This router, called coil-router, is optional.

    For more complex networks, Coil exports routing information to an unused kernel routing table. By importing the routes from the table, any routing software can advertise them.

  • On-demand NAT for egress traffics

    Coil can implement SNAT on Kubernetes. You can define SNAT routers for external networks as many as you want.

    Only selected pods can communicate with external networks via SNAT routers.

  • Auto MTU configuration

    Coil detects the optimal MTU and configures MTU for container networks.

Refer to the design document for more information on these features.

Quick start

Coil can run on kind clusters using Docker.

Prepare a recent Ubuntu and install Docker and Go, then run:

$ cd v2
$ make certs
$ make image

$ cd e2e
$ make setup
$ make start
$ make install-coil
$ ../bin/kubectl apply -f manifests/default_pool.yaml

Now you can play with Coil.

Usage examples

Project Neco uses Coil with these software:

Coil can work with Cilium through its generic veth chaining feature.

Documentation

Installation procedures are described in docs/setup.md.

The user manual is docs/usage.md.

docs directory contains other documents about designs and specifications.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].