VPN: orginize nebula code
diff --git a/core/nebula/Dockerfile b/core/nebula/Dockerfile
new file mode 100644
index 0000000..8377bdd
--- /dev/null
+++ b/core/nebula/Dockerfile
@@ -0,0 +1,8 @@
+FROM alpine:latest
+
+RUN wget https://github.com/slackhq/nebula/releases/download/v1.4.0/nebula-linux-arm64.tar.gz -O nebula.tar.gz
+RUN tar -xvf nebula.tar.gz
+RUN mv nebula /usr/bin
+RUN mv nebula-cert /usr/bin
+RUN chmod +x /usr/bin/nebula
+RUN chmod +x /usr/bin/nebula-cert
diff --git a/core/nebula/Makefile b/core/nebula/Makefile
index 3f7a57e..95279f5 100644
--- a/core/nebula/Makefile
+++ b/core/nebula/Makefile
@@ -1,28 +1,5 @@
-clean:
-	rm -f controller web
+image_arm64:
+	docker build --tag=giolekva/nebula:latest .
 
-generate:
-	rm -rf generated
-	./hack/generate.sh
-
-controller: clean
-	go1.16 mod tidy
-	go1.16 mod vendor
-	go1.16 build -o controller main.go
-
-web: clean
-	go1.16 build -o web web.go
-
-
-# image: clean build
-# 	docker build --tag=giolekva/rpuppy-arm .
-
-# push: image
-# 	docker push giolekva/rpuppy-arm:latest
-
-
-# push_arm64: export GOOS=linux
-# push_arm64: export GOARCH=arm64
-# push_arm64: export CGO_ENABLED=0
-# push_arm64: export GO111MODULE=on
-# push_arm64: push
+push_arm64: image_arm64
+	docker push giolekva/nebula:latest
diff --git a/core/nebula/controller/.gitignore b/core/nebula/controller/.gitignore
new file mode 100644
index 0000000..d1f57bb
--- /dev/null
+++ b/core/nebula/controller/.gitignore
@@ -0,0 +1,2 @@
+controller
+vendor
diff --git a/core/nebula/controller/Makefile b/core/nebula/controller/Makefile
new file mode 100644
index 0000000..3f7a57e
--- /dev/null
+++ b/core/nebula/controller/Makefile
@@ -0,0 +1,28 @@
+clean:
+	rm -f controller web
+
+generate:
+	rm -rf generated
+	./hack/generate.sh
+
+controller: clean
+	go1.16 mod tidy
+	go1.16 mod vendor
+	go1.16 build -o controller main.go
+
+web: clean
+	go1.16 build -o web web.go
+
+
+# image: clean build
+# 	docker build --tag=giolekva/rpuppy-arm .
+
+# push: image
+# 	docker push giolekva/rpuppy-arm:latest
+
+
+# push_arm64: export GOOS=linux
+# push_arm64: export GOARCH=arm64
+# push_arm64: export CGO_ENABLED=0
+# push_arm64: export GO111MODULE=on
+# push_arm64: push
diff --git a/core/nebula/apis/nebula/v1/doc.go b/core/nebula/controller/apis/nebula/v1/doc.go
similarity index 100%
rename from core/nebula/apis/nebula/v1/doc.go
rename to core/nebula/controller/apis/nebula/v1/doc.go
diff --git a/core/nebula/apis/nebula/v1/register.go b/core/nebula/controller/apis/nebula/v1/register.go
similarity index 100%
rename from core/nebula/apis/nebula/v1/register.go
rename to core/nebula/controller/apis/nebula/v1/register.go
diff --git a/core/nebula/apis/nebula/v1/types.go b/core/nebula/controller/apis/nebula/v1/types.go
similarity index 100%
rename from core/nebula/apis/nebula/v1/types.go
rename to core/nebula/controller/apis/nebula/v1/types.go
diff --git a/core/nebula/apis/nebula/v1/zz_generated.deepcopy.go b/core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go
similarity index 100%
rename from core/nebula/apis/nebula/v1/zz_generated.deepcopy.go
rename to core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go
diff --git a/core/nebula/controllers/ca.go b/core/nebula/controller/controllers/ca.go
similarity index 100%
rename from core/nebula/controllers/ca.go
rename to core/nebula/controller/controllers/ca.go
diff --git a/core/nebula/crds/nebula.crds.yaml b/core/nebula/controller/crds/nebula.crds.yaml
similarity index 100%
rename from core/nebula/crds/nebula.crds.yaml
rename to core/nebula/controller/crds/nebula.crds.yaml
diff --git a/core/nebula/generated/clientset/versioned/clientset.go b/core/nebula/controller/generated/clientset/versioned/clientset.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/clientset.go
rename to core/nebula/controller/generated/clientset/versioned/clientset.go
diff --git a/core/nebula/generated/clientset/versioned/doc.go b/core/nebula/controller/generated/clientset/versioned/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/doc.go
rename to core/nebula/controller/generated/clientset/versioned/doc.go
diff --git a/core/nebula/generated/clientset/versioned/fake/clientset_generated.go b/core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/clientset_generated.go
rename to core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go
diff --git a/core/nebula/generated/clientset/versioned/fake/doc.go b/core/nebula/controller/generated/clientset/versioned/fake/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/doc.go
rename to core/nebula/controller/generated/clientset/versioned/fake/doc.go
diff --git a/core/nebula/generated/clientset/versioned/fake/register.go b/core/nebula/controller/generated/clientset/versioned/fake/register.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/register.go
rename to core/nebula/controller/generated/clientset/versioned/fake/register.go
diff --git a/core/nebula/generated/clientset/versioned/scheme/doc.go b/core/nebula/controller/generated/clientset/versioned/scheme/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/scheme/doc.go
rename to core/nebula/controller/generated/clientset/versioned/scheme/doc.go
diff --git a/core/nebula/generated/clientset/versioned/scheme/register.go b/core/nebula/controller/generated/clientset/versioned/scheme/register.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/scheme/register.go
rename to core/nebula/controller/generated/clientset/versioned/scheme/register.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go b/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
rename to core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
diff --git a/core/nebula/generated/informers/externalversions/factory.go b/core/nebula/controller/generated/informers/externalversions/factory.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/factory.go
rename to core/nebula/controller/generated/informers/externalversions/factory.go
diff --git a/core/nebula/generated/informers/externalversions/generic.go b/core/nebula/controller/generated/informers/externalversions/generic.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/generic.go
rename to core/nebula/controller/generated/informers/externalversions/generic.go
diff --git a/core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go b/core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
rename to core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/interface.go b/core/nebula/controller/generated/informers/externalversions/nebula/interface.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/interface.go
rename to core/nebula/controller/generated/informers/externalversions/nebula/interface.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/interface.go b/core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/interface.go
rename to core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go b/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go
rename to core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go b/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go
rename to core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go
diff --git a/core/nebula/generated/listers/nebula/v1/expansion_generated.go b/core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/expansion_generated.go
rename to core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go
diff --git a/core/nebula/generated/listers/nebula/v1/nebulaca.go b/core/nebula/controller/generated/listers/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/nebulaca.go
rename to core/nebula/controller/generated/listers/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/listers/nebula/v1/nebulanode.go b/core/nebula/controller/generated/listers/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/nebulanode.go
rename to core/nebula/controller/generated/listers/nebula/v1/nebulanode.go
diff --git a/core/nebula/go.mod b/core/nebula/controller/go.mod
similarity index 100%
rename from core/nebula/go.mod
rename to core/nebula/controller/go.mod
diff --git a/core/nebula/go.sum b/core/nebula/controller/go.sum
similarity index 100%
rename from core/nebula/go.sum
rename to core/nebula/controller/go.sum
diff --git a/core/nebula/hack/boilerplate.go.txt b/core/nebula/controller/hack/boilerplate.go.txt
similarity index 100%
rename from core/nebula/hack/boilerplate.go.txt
rename to core/nebula/controller/hack/boilerplate.go.txt
diff --git a/core/nebula/hack/generate.sh b/core/nebula/controller/hack/generate.sh
similarity index 100%
rename from core/nebula/hack/generate.sh
rename to core/nebula/controller/hack/generate.sh
diff --git a/core/nebula/hack/tools.go b/core/nebula/controller/hack/tools.go
similarity index 100%
rename from core/nebula/hack/tools.go
rename to core/nebula/controller/hack/tools.go
diff --git a/core/nebula/main.go b/core/nebula/controller/main.go
similarity index 100%
rename from core/nebula/main.go
rename to core/nebula/controller/main.go
diff --git a/core/nebula/templates/index.html b/core/nebula/controller/templates/index.html
similarity index 100%
rename from core/nebula/templates/index.html
rename to core/nebula/controller/templates/index.html
diff --git a/core/nebula/web.go b/core/nebula/controller/web.go
similarity index 100%
rename from core/nebula/web.go
rename to core/nebula/controller/web.go