{"id":29633267,"url":"https://github.com/tibordp/wigglenet","last_synced_at":"2025-07-21T14:02:27.259Z","repository":{"id":43212293,"uuid":"369692807","full_name":"tibordp/wigglenet","owner":"tibordp","description":"Network plugin for Kubernetes","archived":false,"fork":false,"pushed_at":"2025-06-14T18:36:49.000Z","size":201,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-14T03:59:59.412Z","etag":null,"topics":["cni","dual-stack","ipv6","kubernetes","wireguard"],"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/tibordp.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-22T01:49:29.000Z","updated_at":"2024-11-27T12:11:45.000Z","dependencies_parsed_at":"2024-03-14T21:51:06.358Z","dependency_job_id":"14d3a5ee-0659-49a9-85b7-d555a6c2478d","html_url":"https://github.com/tibordp/wigglenet","commit_stats":{"total_commits":30,"total_committers":1,"mean_commits":30.0,"dds":0.0,"last_synced_commit":"92d7e31f8f235a4003f9f0c4365d3bf62396d048"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/tibordp/wigglenet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibordp%2Fwigglenet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibordp%2Fwigglenet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibordp%2Fwigglenet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibordp%2Fwigglenet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tibordp","download_url":"https://codeload.github.com/tibordp/wigglenet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibordp%2Fwigglenet/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266315734,"owners_count":23909796,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","dual-stack","ipv6","kubernetes","wireguard"],"created_at":"2025-07-21T14:01:36.466Z","updated_at":"2025-07-21T14:02:27.224Z","avatar_url":"https://github.com/tibordp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wigglenet\n\nWigglenet is a network plugin for Kubernetes geared towards dual-stack clusters. Wigglenet seeks to achieve the following goals in order:\n\n- Simplicity and minimalism\n- Support idiosyncratic IPv6 allocation strategies of various cloud providers (preferably without resorting to ULA addresses / NAT)\n- Being a viable network plugin for small to medium sized production clusters\n\nNote that the last goal is not achieved yet. Wigglenet should be considered experimental and only used in non-critical clusters for the time being.\n\n## Introduction\n\nWigglenet uses the standard [`ptp`](https://www.cni.dev/plugins/current/main/ptp/) CNI plugin with [`host-local` IPAM](https://www.cni.dev/plugins/current/ipam/host-local/) to allocate IP addresses to pods based on the node subnets. Wigglenet also establishes an overlay network using [Wireguard](https://www.wireguard.com/). In addition to encapsulation, this also provides hassle-free encryption of pod-to-pod traffic.\n\nWigglenet runs as a daemonset on every node and does the following things:\n- Initializes each new node on startup, sets up the Wireguard interface and writes the CNI configuration\n- Runs a controller on each node that adjusts the Wireguard peer configuration, local routing table and iptables rules for filtering and masquerading as nodes come and go\n\nWigglenet explicitely supports and encourages allocation of public IPv6 addresses to pods and offers a variety of pod network selection methods. See [Pod network selection](./docs/configuration.md#pod-network-selection) for details.\n\n## Installation\n\nTo install Wigglenet on a dual-stack cluster with the default settings:\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/tibordp/wigglenet/v0.4.4/deploy/manifest.yaml\n```\n\nThe default configuration should work out of the box for a cluster created with kubeadm using [the official dual-stack tutorial](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/dual-stack-support/). It will enable masquerading for both IPv6 and IPv4 addresses.\n\nUse the following manifest if the cluster is single-stack (IPv6 only):\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/tibordp/wigglenet/v0.4.4/deploy/ipv6_only.yaml\n```\n\n## Configuration\n\nFor configuration options see [the docs](./docs/configuration.md)\n\n## Limitations\n\n- Wigglenet does not currently support `NetworkPolicy`\n- Host-to-host traffic does not pass through the Wireguard tunnel, so it is not encrypted. This is not a major issue as services using host networking generally use TLS, but there are some notable exceptions (e.g. the default configuration for Prometheus node-exporter).\n\n## Contributing\n\nFeedback, bug reports and pull requests are most welcome! Build and test with:\n\n```\ngo mod download\ngo build ./...\ngo test ./...\n```\n\nSee [Makefile](./Makefile) and [example manifests](./testing) for experimenting with Wigglenet locally using [kind](https://kind.sigs.k8s.io/). For example:\n\n```bash\n# Create a dual-stuck kind cluster with default settings\nmake kind-default\n\n# Build Docker image and load it to all the nodes\nmake image\n\n# Install Wigglenet\nmake deploy\n```\n\n## Acknowledgements\n\nWigglenet is inspired by [kindnet](https://github.com/kubernetes-sigs/kind/tree/main/images/kindnetd), kind's default network plugin.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftibordp%2Fwigglenet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftibordp%2Fwigglenet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftibordp%2Fwigglenet/lists"}