env: create tailscale-proxy for ingress-private IP with new env
diff --git a/core/installer/welcome/env.go b/core/installer/welcome/env.go
index 3d0ed70..4e74181 100644
--- a/core/installer/welcome/env.go
+++ b/core/installer/welcome/env.go
@@ -12,6 +12,7 @@
"io/fs"
"log"
"net/http"
+ "net/netip"
"path"
"path/filepath"
"strings"
@@ -502,15 +503,20 @@
r.CommitAndPush("initialize config")
nsGen := installer.NewPrefixGenerator(req.Name + "-")
emptySuffixGen := installer.NewEmptySuffixGenerator()
+ ingressPrivateIP, err := netip.ParseAddr("10.1.0.1")
+ if err != nil {
+ return err
+ }
{
+ headscaleIP := ingressPrivateIP.Next()
app, err := appsRepo.Find("metallb-ipaddresspool")
if err != nil {
return err
}
if err := appManager.Install(*app, nsGen, installer.NewSuffixGenerator("-ingress-private"), map[string]any{
"Name": fmt.Sprintf("%s-ingress-private", req.Name),
- "From": "10.1.0.1",
- "To": "10.1.0.1",
+ "From": ingressPrivateIP.String(),
+ "To": ingressPrivateIP.String(),
"AutoAssign": false,
"Namespace": "metallb-system",
}); err != nil {
@@ -518,8 +524,8 @@
}
if err := appManager.Install(*app, nsGen, installer.NewSuffixGenerator("-headscale"), map[string]any{
"Name": fmt.Sprintf("%s-headscale", req.Name),
- "From": "10.1.0.2",
- "To": "10.1.0.2",
+ "From": headscaleIP.String(),
+ "To": headscaleIP.String(),
"AutoAssign": false,
"Namespace": "metallb-system",
}); err != nil {
@@ -527,7 +533,7 @@
}
if err := appManager.Install(*app, nsGen, emptySuffixGen, map[string]any{
"Name": req.Name,
- "From": "10.1.0.100",
+ "From": "10.1.0.100", // TODO(gio): auto-generate
"To": "10.1.0.254",
"AutoAssign": false,
"Namespace": "metallb-system",
@@ -545,6 +551,20 @@
}
}
{
+ app, err := appsRepo.Find("tailscale-proxy")
+ if err != nil {
+ return err
+ }
+ if err := appManager.Install(*app, nsGen, emptySuffixGen, map[string]any{
+ "Username": "private-network-proxy",
+ "IPSubnet": "10.1.0.0/24",
+ "HostnameSuffix": "private-network-proxy",
+ }); err != nil {
+ return err
+ }
+ // TODO(giolekva): headscale accept routes
+ }
+ {
app, err := appsRepo.Find("certificate-issuer-public")
if err != nil {
return err