From e380e0ef6656535193f238ef095ac120a3060ba5 Mon Sep 17 00:00:00 2001 From: jacaudi <47005674+jacaudi@users.noreply.github.com> Date: Sat, 29 Aug 2026 22:14:43 -0700 Subject: [PATCH 1/2] chore: rename Go module path to github.com/jacaudi/wireguard-operator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The module path still named the upstream organisation while the repo lives at jacaudi. Renaming it touches go.mod, the import block of all 18 Go files, and three fields in PROJECT — the `repo:` field plus both `path:` entries under `resources:`, which are easy to miss. Taken now, out of phase order, because the rewrite conflicts textually with any branch in flight and the tree is quiet: #39 has merged and nothing else is open. Also deletes .releaserc.json. It is inert upstream semantic-release config whose publishCmd targets a registry namespace two forks upstream; nothing invokes it, and release-please under .github/ superseded it wholesale. It is a trap rather than a config. No behavior change — this is a pure identifier rewrite, so the existing suite is the regression test rather than a new one. Verified: task ci passes with golangci-lint at 0 issues (merge base present locally, so the ratchet is honest rather than failing open), govulncheck 0, `go mod tidy -diff` clean, and `task go:integration` passes with internal/controller at 78s, confirming the -tags=integration build tag still matches. internal/it sits behind //go:build e2e and so is compiled by neither gate; it was verified separately with `go build`/`go vet`/`go test -tags=e2e`. The API group is unchanged and stays vpn.wireguard-operator.io; the module path and the API group are independent. That decision is recorded in docs/ROADMAP.md § 6.2. Refs #36 --- .releaserc.json | 33 ------------------- PROJECT | 6 ++-- cmd/agent/main.go | 6 ++-- cmd/manager/main.go | 4 +-- go.mod | 2 +- internal/agent/agent.go | 2 +- internal/agent/wireguard_metrics.go | 2 +- internal/controller/suite_test.go | 2 +- internal/controller/wireguard_controller.go | 8 ++--- .../controller/wireguard_controller_test.go | 2 +- .../controller/wireguardpeer_controller.go | 4 +-- internal/ipam/allocator.go | 2 +- internal/ipam/allocator_test.go | 2 +- internal/iptables/iptables.go | 6 ++-- internal/iptables/iptables_test.go | 2 +- internal/it/suite_test.go | 2 +- internal/resources/configmap.go | 2 +- internal/resources/deployment.go | 2 +- internal/resources/secret.go | 2 +- internal/resources/service.go | 2 +- internal/wireguard/wireguard.go | 6 ++-- 21 files changed, 33 insertions(+), 66 deletions(-) delete mode 100644 .releaserc.json diff --git a/.releaserc.json b/.releaserc.json deleted file mode 100644 index 0a279ae..0000000 --- a/.releaserc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "branches": [ - "main" - ], - "plugins": [ - ["@semantic-release/exec", { - "publishCmd": "make generate-release-file AGENT_IMAGE=\"ghcr.io/jodevsa/wireguard-operator/agent:v${nextRelease.version}\" MANAGER_IMAGE=\"ghcr.io/jodevsa/wireguard-operator/manager:v${nextRelease.version}\"" - }], - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - ["@semantic-release/changelog", - { - "changelogFile": "CHANGELOG.md" - } - ], - ["@semantic-release/git", - { - "assets": ["CHANGELOG.md"] - } - ], - [ - "@semantic-release/github", - { - "assets": [ - { - "path": "./release.yaml", - "label": "k8s release file" - } - ] - } - ] - ] -} \ No newline at end of file diff --git a/PROJECT b/PROJECT index 1cefe78..55ae456 100644 --- a/PROJECT +++ b/PROJECT @@ -5,7 +5,7 @@ plugins: manifests.sdk.operatorframework.io/v2: {} scorecard.sdk.operatorframework.io/v2: {} projectName: wireguard-operator -repo: github.com/nccloud/wireguard-operator +repo: github.com/jacaudi/wireguard-operator resources: - api: crdVersion: v1 @@ -14,7 +14,7 @@ resources: domain: wireguard-operator.io group: vpn kind: Wireguard - path: github.com/nccloud/wireguard-operator/api/v1alpha1 + path: github.com/jacaudi/wireguard-operator/api/v1alpha1 version: v1alpha1 - api: crdVersion: v1 @@ -23,6 +23,6 @@ resources: domain: wireguard-operator.io group: vpn kind: WireguardPeer - path: github.com/nccloud/wireguard-operator/api/v1alpha1 + path: github.com/jacaudi/wireguard-operator/api/v1alpha1 version: v1alpha1 version: "3" diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 638a75d..f2e8bfa 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -12,9 +12,9 @@ import ( "time" "github.com/go-logr/stdr" - "github.com/nccloud/wireguard-operator/internal/agent" - "github.com/nccloud/wireguard-operator/internal/iptables" - "github.com/nccloud/wireguard-operator/internal/wireguard" + "github.com/jacaudi/wireguard-operator/internal/agent" + "github.com/jacaudi/wireguard-operator/internal/iptables" + "github.com/jacaudi/wireguard-operator/internal/wireguard" ) func main() { diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 5373159..a46d726 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -21,8 +21,8 @@ import ( "fmt" "os" - vpnv1alpha1 "github.com/nccloud/wireguard-operator/api/v1alpha1" - controllers "github.com/nccloud/wireguard-operator/internal/controller" + vpnv1alpha1 "github.com/jacaudi/wireguard-operator/api/v1alpha1" + controllers "github.com/jacaudi/wireguard-operator/internal/controller" v1 "k8s.io/api/core/v1" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) diff --git a/go.mod b/go.mod index c4516ff..3482ac5 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/nccloud/wireguard-operator +module github.com/jacaudi/wireguard-operator go 1.26 diff --git a/internal/agent/agent.go b/internal/agent/agent.go index 47a2d14..c758c09 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -11,7 +11,7 @@ import ( "github.com/go-logr/logr" "github.com/fsnotify/fsnotify" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" ) type State struct { diff --git a/internal/agent/wireguard_metrics.go b/internal/agent/wireguard_metrics.go index 1b3b7a5..ea1f28e 100644 --- a/internal/agent/wireguard_metrics.go +++ b/internal/agent/wireguard_metrics.go @@ -9,7 +9,7 @@ import ( "time" "github.com/go-logr/logr" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "golang.zx2c4.com/wireguard/wgctrl" diff --git a/internal/controller/suite_test.go b/internal/controller/suite_test.go index a411a8a..0f814b8 100644 --- a/internal/controller/suite_test.go +++ b/internal/controller/suite_test.go @@ -24,7 +24,7 @@ import ( "testing" "time" - vpnv1alpha1 "github.com/nccloud/wireguard-operator/api/v1alpha1" + vpnv1alpha1 "github.com/jacaudi/wireguard-operator/api/v1alpha1" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" diff --git a/internal/controller/wireguard_controller.go b/internal/controller/wireguard_controller.go index c7897ad..231ca6e 100644 --- a/internal/controller/wireguard_controller.go +++ b/internal/controller/wireguard_controller.go @@ -27,10 +27,10 @@ import ( "strings" "time" - "github.com/nccloud/wireguard-operator/api/v1alpha1" - "github.com/nccloud/wireguard-operator/internal/agent" - "github.com/nccloud/wireguard-operator/internal/ipam" - "github.com/nccloud/wireguard-operator/internal/resources" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/internal/agent" + "github.com/jacaudi/wireguard-operator/internal/ipam" + "github.com/jacaudi/wireguard-operator/internal/resources" wgtypes "golang.zx2c4.com/wireguard/wgctrl/wgtypes" appsv1 "k8s.io/api/apps/v1" diff --git a/internal/controller/wireguard_controller_test.go b/internal/controller/wireguard_controller_test.go index a4766ac..5571a42 100644 --- a/internal/controller/wireguard_controller_test.go +++ b/internal/controller/wireguard_controller_test.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" appsv1 "k8s.io/api/apps/v1" diff --git a/internal/controller/wireguardpeer_controller.go b/internal/controller/wireguardpeer_controller.go index fa52145..27513f3 100644 --- a/internal/controller/wireguardpeer_controller.go +++ b/internal/controller/wireguardpeer_controller.go @@ -20,8 +20,8 @@ import ( "context" "fmt" - "github.com/nccloud/wireguard-operator/api/v1alpha1" - "github.com/nccloud/wireguard-operator/internal/resources" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/internal/resources" wgtypes "golang.zx2c4.com/wireguard/wgctrl/wgtypes" corev1 "k8s.io/api/core/v1" diff --git a/internal/ipam/allocator.go b/internal/ipam/allocator.go index 9c26439..0a42334 100644 --- a/internal/ipam/allocator.go +++ b/internal/ipam/allocator.go @@ -22,8 +22,8 @@ import ( "net/netip" "slices" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" "github.com/korylprince/ipnetgen" - "github.com/nccloud/wireguard-operator/api/v1alpha1" ) const ( diff --git a/internal/ipam/allocator_test.go b/internal/ipam/allocator_test.go index f6a9dd5..426503f 100644 --- a/internal/ipam/allocator_test.go +++ b/internal/ipam/allocator_test.go @@ -19,7 +19,7 @@ package ipam import ( "testing" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) diff --git a/internal/iptables/iptables.go b/internal/iptables/iptables.go index 6e986c8..ea751cd 100644 --- a/internal/iptables/iptables.go +++ b/internal/iptables/iptables.go @@ -6,9 +6,9 @@ import ( "strings" "github.com/go-logr/logr" - "github.com/nccloud/wireguard-operator/api/v1alpha1" - "github.com/nccloud/wireguard-operator/internal/agent" - "github.com/nccloud/wireguard-operator/internal/ipam" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/internal/agent" + "github.com/jacaudi/wireguard-operator/internal/ipam" ) func ApplyRules(rules string) error { diff --git a/internal/iptables/iptables_test.go b/internal/iptables/iptables_test.go index 0ffa5fe..22568be 100644 --- a/internal/iptables/iptables_test.go +++ b/internal/iptables/iptables_test.go @@ -3,7 +3,7 @@ package iptables import ( "testing" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" ) // test helpers diff --git a/internal/it/suite_test.go b/internal/it/suite_test.go index 1cd42ec..83f22a0 100644 --- a/internal/it/suite_test.go +++ b/internal/it/suite_test.go @@ -13,7 +13,7 @@ import ( "time" "github.com/go-logr/stdr" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" v12 "k8s.io/api/apps/v1" diff --git a/internal/resources/configmap.go b/internal/resources/configmap.go index 8a0ab77..f38ec54 100644 --- a/internal/resources/configmap.go +++ b/internal/resources/configmap.go @@ -17,7 +17,7 @@ limitations under the License. package resources import ( - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/internal/resources/deployment.go b/internal/resources/deployment.go index 6b4903b..c319bf5 100644 --- a/internal/resources/deployment.go +++ b/internal/resources/deployment.go @@ -19,7 +19,7 @@ package resources import ( "fmt" - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/internal/resources/secret.go b/internal/resources/secret.go index 9172208..2d7cc7c 100644 --- a/internal/resources/secret.go +++ b/internal/resources/secret.go @@ -17,7 +17,7 @@ limitations under the License. package resources import ( - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/internal/resources/service.go b/internal/resources/service.go index 3331bb8..62ddad3 100644 --- a/internal/resources/service.go +++ b/internal/resources/service.go @@ -17,7 +17,7 @@ limitations under the License. package resources import ( - "github.com/nccloud/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/internal/wireguard/wireguard.go b/internal/wireguard/wireguard.go index e61694e..0b7f943 100644 --- a/internal/wireguard/wireguard.go +++ b/internal/wireguard/wireguard.go @@ -11,9 +11,9 @@ import ( "github.com/go-logr/logr" - "github.com/nccloud/wireguard-operator/api/v1alpha1" - "github.com/nccloud/wireguard-operator/internal/agent" - "github.com/nccloud/wireguard-operator/internal/ipam" + "github.com/jacaudi/wireguard-operator/api/v1alpha1" + "github.com/jacaudi/wireguard-operator/internal/agent" + "github.com/jacaudi/wireguard-operator/internal/ipam" "github.com/vishvananda/netlink" "golang.org/x/sys/unix" "golang.zx2c4.com/wireguard/wgctrl" From edd31de7e8c7a0c76f8464aafcfd357274b2c1b9 Mon Sep 17 00:00:00 2001 From: jacaudi <47005674+jacaudi@users.noreply.github.com> Date: Sat, 29 Aug 2026 22:14:53 -0700 Subject: [PATCH 2/2] docs: drop upstream install instructions and record the API-group decision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README's deploy section pointed at upstream's release asset and Helm chart. Following those commands installs the diverging upstream operator, which does not carry this fork's features — spec.persistentKeepalive, for example — directly under a note warning against exactly that. They cannot be repointed. This fork has published zero GitHub Releases (the v2.11.0 tag is the boundary tag created to bound release-please's commit scan, not a Release object), has no chart directory, and jacaudi/charts does not exist. So both blocks are removed rather than redirected, leaving `make deploy` from source as the documented path and pointing at #48, which tracks publishing an OCI Helm chart as the real install route. ROADMAP § 6.2 is updated from a one-line statement of the problem to a record of what landed, and now documents the API-group decision that #36's acceptance criteria require be explicit either way: the group stays vpn.wireguard-operator.io, because renaming it would change the CRDs' fully-qualified names and force every existing Wireguard and WireguardPeer object to be recreated, for no benefit beyond cosmetics. Refs #36, #48 --- README.md | 36 ++++++++++++------------------------ docs/ROADMAP.md | 21 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 2d78e3e..0e33765 100644 --- a/README.md +++ b/README.md @@ -88,36 +88,24 @@ PersistentKeepalive = 25 ## How to deploy -> **Note:** this fork has not cut its own release yet, so the commands below install the -> upstream `nccloud` operator, which is diverging from this fork. Features added here — -> `spec.persistentKeepalive`, for example — will not exist in that build. Until a release -> is published (tracked in [#36](https://github.com/jacaudi/wireguard-operator/issues/36)), -> deploy from source with `make deploy`. +> **Note:** this fork has not published an install artifact yet. An OCI Helm chart is the +> planned install path, tracked in +> [#48](https://github.com/jacaudi/wireguard-operator/issues/48). Until it ships, deploy +> from source. +> +> Earlier revisions of this README pointed at upstream's release and chart. Those +> install the diverging upstream operator, which does not carry this fork's features — +> `spec.persistentKeepalive`, for example — so they have been removed rather than +> repointed. -### Using provided manifest file ``` -kubectl apply -f https://github.com/nccloud/wireguard-operator/releases/download/v2.11.0/release.yaml -``` - -### Using Helm -``` -helm repo add nccloud https://nccloud.github.io/charts -helm install wireguard nccloud/wireguard-operator -n wireguard-system -``` - -You can use values to further customize the installation: -``` -helm install wireguard nccloud/wireguard-operator -n wireguard-system --set nameOverride=wireguard +make deploy ``` ## How to remove -### Using provided manifest file -``` -kubectl delete -f https://github.com/nccloud/wireguard-operator/releases/download/v2.11.0/release.yaml -``` -### Using Helm + ``` -helm uninstall wireguard -n wireguard-system +make undeploy ``` ## How to collaborate diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 806be75..6a3495a 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -485,4 +485,23 @@ client flow. ### 6.2 Fork housekeeping ([#36](https://github.com/jacaudi/wireguard-operator/issues/36)) -The Go module path is still `github.com/nccloud/wireguard-operator`. +The Go module path still carried the upstream organisation; it is now +`github.com/jacaudi/wireguard-operator`, matching where the repo actually lives. +That covered `go.mod`, the import block of all 18 Go files, and the `repo:` and +both `path:` fields in `PROJECT`. The dead upstream `.releaserc.json` +(semantic-release, targeting a registry namespace two forks upstream) was +deleted — release-please under `.github/` superseded it wholesale, and nothing +invoked it. Image references were already retargeted to +`ghcr.io/jacaudi/wireguard-operator/{manager,agent}` during the CI alignment. +The README's install and Helm instructions pointed at upstream's release and +chart; since this fork publishes neither, they were removed rather than +repointed, and an OCI Helm chart is tracked separately in +[#48](https://github.com/jacaudi/wireguard-operator/issues/48). + +**The API group stays `vpn.wireguard-operator.io`.** `PROJECT` carries +`domain: wireguard-operator.io` with `group: vpn`, so renaming it would change +the CRDs' fully-qualified names — a breaking change requiring every existing +`Wireguard` and `WireguardPeer` object to be recreated, for no benefit beyond +cosmetics. The module path and the API group are independent; renaming the +former does not touch the latter. The decision is recorded here because #36 +requires it be explicit either way rather than left implicit.