{"id":27160390,"url":"https://github.com/nmiculinic/wg-operator","last_synced_at":"2025-04-08T23:45:10.411Z","repository":{"id":56024559,"uuid":"174527740","full_name":"nmiculinic/wg-operator","owner":"nmiculinic","description":"Wireguard operator","archived":false,"fork":false,"pushed_at":"2019-06-24T15:31:23.000Z","size":37842,"stargazers_count":21,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-06-19T01:58:33.033Z","etag":null,"topics":["kubernetes-operator","kubernets","wireguard","wireguard-vpn"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nmiculinic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-08T11:41:51.000Z","updated_at":"2022-09-09T09:41:48.000Z","dependencies_parsed_at":"2022-08-15T11:40:27.963Z","dependency_job_id":null,"html_url":"https://github.com/nmiculinic/wg-operator","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmiculinic%2Fwg-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmiculinic%2Fwg-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmiculinic%2Fwg-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmiculinic%2Fwg-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nmiculinic","download_url":"https://codeload.github.com/nmiculinic/wg-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947821,"owners_count":21023058,"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":["kubernetes-operator","kubernets","wireguard","wireguard-vpn"],"created_at":"2025-04-08T23:45:09.822Z","updated_at":"2025-04-08T23:45:10.400Z","avatar_url":"https://github.com/nmiculinic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://gitlab.com/neven-miculinic/wg-operator/badges/master/pipeline.svg)](https://gitlab.com/neven-miculinic/wg-operator/pipelines) [![GoDoc](https://godoc.org/github.com/KrakenSystems/wireguardctrl?status.svg)](https://godoc.org/github.com/KrakenSystems/wg-operator) [![Go Report Card](https://goreportcard.com/badge/github.com/KrakenSystems/wg-operator)](https://goreportcard.com/report/github.com/KrakenSystems/wg-operator)\n# wg-operator\n\nThis project aim to dynamically reconfigure wireguard on the fly for the cluster nodes.\n\n# QuickStart\n\nSee `/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`\n\n## Goals\n\n* [x] Basic client-server VPN paradigm\n* [ ] Implement IPtables masqerading for out of VPN IPs --\u003e use preUp/postDown for now, and wg-quick or wg-quick-go to run them at system boot.\n* [ ] 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.\n    * [x] update coalescing --\u003e implemented via 200ms coalescing time window\n    * [ ] error exponential backoff --\u003e Not implemented, on error we retry every 5 seconds\n    * [ ] client query only myself --\u003e partially implemeted, informer cache is fetching all client changes, but update is triggered only for myself\n* [ ] Implement per server interface for clients -- allows custom routing to operate on top of wireguard (e.g. OSPF/BGP)\n* [x] Medium dynamic network topology changes, wireguard setting \u0026 nodes won't change too often\n* [ ] Unit test coverage + CI for config generation\n* [ ] End2end test within CI\n* [ ] Support key rotation\n* [ ] Have decent usage documentation\n\n## Non-goals\n\n* support OpenVPN or other VPN providers\n* install wireguard on the target machines/perform upgrades. Use ansible or something else for it. Also look into https://github.com/KrakenSystems/wg-cni\n\n# Docker images registy, automatically built via CI pipeline\n\nIt's located at:\n\n* https://gitlab.com/neven-miculinic/wg-operator/container_registry\n\nPer tag images:\n\n* registry.gitlab.com/neven-miculinic/wg-operator:\u003ctag\u003e-\u003carch\u003e\n\nExample:\n\n* registry.gitlab.com/neven-miculinic/wg-operator:v0.1.0-amd64\n\nPer branch images:\n\nregistry.gitlab.com/neven-miculinic/wg-operator:\u003cbranch-name\u003e-\u003carch\u003e\nregistry.gitlab.com/neven-miculinic/wg-operator:\u003cbranch-name\u003e-\u003cshort commit hash\u003e-\u003carch\u003e\n\nExample:\n* registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-amd64\n* registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-arm32v7\n* registry.gitlab.com/neven-miculinic/wg-operator:master-6b18ddbf-arm64v8\n* registry.gitlab.com/neven-miculinic/wg-operator:master-amd64\n* registry.gitlab.com/neven-miculinic/wg-operator:master-arm32v7\n* registry.gitlab.com/neven-miculinic/wg-operator:master-arm64v8\n\n# Bare metal deployment\n\nThere's ansible role in the `deploy/role` with example playbook in `deploy/playbook.yml`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmiculinic%2Fwg-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnmiculinic%2Fwg-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmiculinic%2Fwg-operator/lists"}