Coder Social home page Coder Social logo

wg-operator's Introduction

Build Status GoDoc Go Report Card

wg-operator

This project aim to dynamically reconfigure wireguard on the fly for the cluster nodes.

QuickStart

See /deploy folder. Apply CRDs, that is under /deploy/crds. Example servers/clients are under /deploy/servers and /deploy/clients. Recommended deployment is also provided under /deploy

Goals

  • Basic client-server VPN paradigm
  • Implement IPtables masqerading for out of VPN IPs --> use preUp/postDown for now, and wg-quick or wg-quick-go to run them at system boot.
  • Highly scalable for clients (i.e. supporting 1000+ clients with minimal resource usage on client side). For mostly static topologies this should be quite performant.
    • update coalescing --> implemented via 200ms coalescing time window
    • error exponential backoff --> Not implemented, on error we retry every 5 seconds
    • client query only myself --> partially implemeted, informer cache is fetching all client changes, but update is triggered only for myself
  • Implement per server interface for clients -- allows custom routing to operate on top of wireguard (e.g. OSPF/BGP)
  • Medium dynamic network topology changes, wireguard setting & nodes won't change too often
  • Unit test coverage + CI for config generation
  • End2end test within CI
  • Support key rotation
  • Have decent usage documentation

Non-goals

Docker images registy, automatically built via CI pipeline

It's located at:

Per tag images:

  • registry.gitlab.com/neven-miculinic/wg-operator:-

Example:

  • registry.gitlab.com/neven-miculinic/wg-operator:v0.1.0-amd64

Per branch images:

registry.gitlab.com/neven-miculinic/wg-operator:- registry.gitlab.com/neven-miculinic/wg-operator:--

Example:

  • registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-amd64
  • registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-arm32v7
  • registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-arm64v8
  • registry.gitlab.com/neven-miculinic/wg-operator:master-amd64
  • registry.gitlab.com/neven-miculinic/wg-operator:master-arm32v7
  • registry.gitlab.com/neven-miculinic/wg-operator:master-arm64v8

Bare metal deployment

There's ansible role in the deploy/role with example playbook in deploy/playbook.yml

wg-operator's People

Contributors

allenpetersen avatar ash2k avatar cblecker avatar danielqsj avatar deads2k avatar dims avatar ericchiang avatar fisherxu avatar hzxuzhonghu avatar ixdy avatar k8s-publish-robot avatar k8s-publishing-bot avatar krzysied avatar krzyzacy avatar liggitt avatar mikedanese avatar mtaufen avatar munnerz avatar nikhita avatar nmiculinic avatar pbarker avatar rlenferink avatar rohitagarwal003 avatar roycaihw avatar saad-ali avatar smarterclayton avatar spiffxp avatar sttts avatar tnozicka avatar wojtek-t avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

wg-operator's Issues

Add missing license

I'm interested in using this project, but there is no license defined for it. Could you please add it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.