{"id":13481446,"url":"https://github.com/cybozu-go/coil","last_synced_at":"2025-04-06T12:07:20.700Z","repository":{"id":34469700,"uuid":"151521689","full_name":"cybozu-go/coil","owner":"cybozu-go","description":"CNI plugin for Kubernetes designed for scalability and extensibility","archived":false,"fork":false,"pushed_at":"2025-03-28T05:17:15.000Z","size":10186,"stargazers_count":168,"open_issues_count":12,"forks_count":20,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-03-30T11:06:13.391Z","etag":null,"topics":["cni","kubernetes","nat"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cybozu-go.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-04T05:12:32.000Z","updated_at":"2025-03-28T04:34:34.000Z","dependencies_parsed_at":"2023-09-27T18:52:06.553Z","dependency_job_id":"a04df8fa-b63b-4fcb-9bfe-29334c26c061","html_url":"https://github.com/cybozu-go/coil","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybozu-go%2Fcoil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybozu-go%2Fcoil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybozu-go%2Fcoil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybozu-go%2Fcoil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cybozu-go","download_url":"https://codeload.github.com/cybozu-go/coil/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478317,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cni","kubernetes","nat"],"created_at":"2024-07-31T17:00:51.909Z","updated_at":"2025-04-06T12:07:20.679Z","avatar_url":"https://github.com/cybozu-go.png","language":"Go","funding_links":[],"categories":["Go","kubernetes"],"sub_categories":[],"readme":"[![GitHub release](https://img.shields.io/github/release/cybozu-go/coil.svg?maxAge=60)][releases]\n![CI](https://github.com/cybozu-go/coil/workflows/CI/badge.svg)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/cybozu-go/coil?tab=overview)](https://pkg.go.dev/github.com/cybozu-go/coil/v2?tab=subdirectories)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cybozu-go/coil)](https://goreportcard.com/report/github.com/cybozu-go/coil)\n\nCoil\n====\n\n**Coil** is a [CNI][]-based network plugin for Kubernetes.\n\nCoil is designed with respect to the UNIX philosophy.  You can combine\nCoil with any routing software and/or any network policy implementation.\n\nCoil allows to define multiple IP address pools.  You can define a pool of\nglobal IPv4 addresses for a small number of pods and another pool of\nprivate IPv4 addresses for the remaining pods.\n\nThere are blog articles about Coil: https://blog.kintone.io/archive/category/Coil\n\n## Status\n\nVersion 2 is generally available (GA).  It conforms to [CNI spec 1.1.0](https://github.com/containernetworking/cni/blob/spec-v1.1.0/SPEC.md).\n\n## Dependencies\n\n- Kubernetes Version: 1.29, 1.30, 1.31\n    - Other versions are likely to work, but not tested.\n\n- (Optional) Routing software\n    - Coil has a simple routing software for flat L2 networks.\n    - If your network is not flat, use BIRD or similar software to advertise the routes.\n\n## Features\n\n- Address pools\n\n    Coil can have multiple pools of IP addresses for different purposes.\n    By setting a special annotation to a namespace, you can specify a pool\n    for the pods in that namespace.\n\n- IPv4/IPv6 dual stack\n\n    In addition to IPv4-only and IPv6-only stacks, Coil can define dual stack\n    address pools.\n\n- Running with any routing software\n\n    Coil provides a simple router for clusters where all the nodes are in\n    a flat L2 network.  This router, called `coil-router`, is optional.\n\n    For more complex networks, Coil exports routing information to an\n    unused kernel routing table.  By importing the routes from the table,\n    any routing software can advertise them.\n\n- On-demand NAT for egress traffics\n\n    Coil can implement SNAT _on_ Kubernetes.  You can define SNAT routers\n    for external networks as many as you want.\n\n    Only selected pods can communicate with external networks via SNAT\n    routers.\n\n- Auto MTU configuration\n\n    Coil detects the optimal MTU and configures MTU for container networks.\n\nRefer to [the design document](./docs/design.md) for more information on these features.\n\n## Quick start\n\nCoil can run on [kind][] clusters using Docker.\n\nPrepare a recent Ubuntu and install Docker and Go, then run:\n\n```console\n$ cd v2\n$ make certs\n$ make image\n\n$ cd e2e\n$ make start\n$ make install-coil\n$ ../bin/kubectl apply -f manifests/default_pool.yaml\n```\n\nNow you can play with Coil.\n\n## Usage examples\n\n[Project Neco](https://blog.kintone.io/entry/neco) uses Coil with these software:\n\n- [BIRD][] to advertise routes over BGP,\n- [MetalLB][] to implement [LoadBalancer] Service, and\n- [Calico][] to implement [NetworkPolicy][].\n\nCoil can work with [Cilium][] through its [generic veth chaining](https://docs.cilium.io/en/v1.8/gettingstarted/cni-chaining-generic-veth/) feature.\n\n## Documentation\n\nInstallation procedures are described in [docs/setup.md](./docs/setup.md).\n\nThe user manual is [docs/usage.md](./docs/usage.md).\n\n[docs](docs/) directory contains other documents about designs and specifications.\n\n### Upgrade from v1\n\nSee [coil-migrator.md](https://github.com/cybozu-go/coil/blob/v2.0.11/docs/coil-migrator.md)\n\n## License\n\nCoil is licensed under the Apache License, Version 2.0.\n\n[releases]: https://github.com/cybozu-go/coil/releases\n[CNI]: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/\n[BIRD]: https://bird.network.cz/\n[LoadBalancer]: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer\n[NetworkPolicy]: https://kubernetes.io/docs/concepts/services-networking/network-policies/\n[MetalLB]: https://metallb.universe.tf\n[Calico]: https://www.projectcalico.org\n[Cilium]: https://cilium.io/\n[kind]: https://kind.sigs.k8s.io/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybozu-go%2Fcoil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcybozu-go%2Fcoil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybozu-go%2Fcoil/lists"}