AppManager: Support exposing cross-cluster ports

Change-Id: I4bdb3573209935f6777656ec2f3481e79d84a9c9
diff --git a/core/installer/values-tmpl/cluster-network.cue b/core/installer/values-tmpl/cluster-network.cue
index 393ac41..85551e6 100644
--- a/core/installer/values-tmpl/cluster-network.cue
+++ b/core/installer/values-tmpl/cluster-network.cue
@@ -1,5 +1,5 @@
 import (
-	// "encoding/base64"
+	"encoding/base64"
 )
 
 input: {
@@ -7,7 +7,7 @@
 	vpnUser: string
 	vpnProxyHostname: string
 	vpnAuthKey: string @role(VPNAuthKey) @usernameField(vpnUser)
-	// TODO(gio): support port allocator
+	sshPrivateKey: string
 }
 
 name: "Cluster Network"
@@ -28,12 +28,12 @@
 			tag: "v1.82.0"
 			pullPolicy: "IfNotPresent"
 		}
-		// portAllocator: {
-		// 	repository: "giolekva"
-		// 	name: "port-allocator"
-		// 	tag: "latest"
-		// 	pullPolicy: "Always"
-		// }
+		portAllocator: {
+			repository: "giolekva"
+			name: "port-allocator"
+			tag: "latest"
+			pullPolicy: "Always"
+		}
 	}
 
 	charts: {
@@ -55,12 +55,12 @@
 			branch: "main"
 			path: "charts/tailscale-proxy"
 		}
-		// portAllocator: {
-		// 	kind: "GitRepository"
-		// 	address: "https://code.v1.dodo.cloud/helm-charts"
-		// 	branch: "main"
-		// 	path: "charts/port-allocator"
-		// }
+		portAllocator: {
+			kind: "GitRepository"
+			address: "https://code.v1.dodo.cloud/helm-charts"
+			branch: "main"
+			path: "charts/port-allocator"
+		}
 	}
 
 	helm: {
@@ -119,20 +119,23 @@
 						}]
   				    }]
 				}
+				tcp: {}
+				udp: {}
 			}
 		}
-		// "port-allocator": {
-		// 	chart: charts.portAllocator
-		// 	values: {
-		// 		repoAddr: release.repoAddr
-		// 		sshPrivateKey: base64.Encode(null, input.sshPrivateKey)
-		// 		ingressNginxPath: "\(release.appDir)/resources/ingress-nginx.yaml"
-		// 		image: {
-		// 			repository: images.portAllocator.fullName
-		// 			tag: images.portAllocator.tag
-		// 			pullPolicy: images.portAllocator.pullPolicy
-		// 		}
-		// 	}
-		// }
+		"port-allocator": {
+			chart: charts.portAllocator
+			cluster: null
+			values: {
+				repoAddr: release.repoAddr
+				sshPrivateKey: base64.Encode(null, input.sshPrivateKey)
+				ingressNginxPath: "\(release.appDir)/resources/ingress-nginx.yaml"
+				image: {
+					repository: images.portAllocator.fullName
+					tag: "amd64" // TODO(gio): images.portAllocator.tag
+					pullPolicy: images.portAllocator.pullPolicy
+				}
+			}
+		}
 	}
 }