port-allocator: allocates ports on preconfigured ingress-nginx

Replacement of /core/installer/tcp-udp-transport

Change-Id: I3d116b0f4508b462398f69e980ad55771dc88b7c
diff --git a/core/installer/values-tmpl/gerrit.cue b/core/installer/values-tmpl/gerrit.cue
index cf0883f..70fda48 100644
--- a/core/installer/values-tmpl/gerrit.cue
+++ b/core/installer/values-tmpl/gerrit.cue
@@ -2,6 +2,7 @@
 	network: #Network
 	subdomain: string
 	key: #SSHKey
+	sshPort: int
 }
 
 _domain: "\(input.subdomain).\(input.network.domain)"
@@ -95,6 +96,15 @@
 _httpPort: 80
 _sshPort: 22
 
+portForward: [#PortForward & {
+	allocator: input.network.allocatePortAddr
+	sourcePort: input.sshPort
+	// TODO(gio): namespace part must be populated by app manager. Otherwise
+	// third-party app developer might point to a service from different namespace.
+	targetService: "\(release.namespace)/gerrit-gerrit-service"
+	targetPort: _sshPort
+}]
+
 helm: _ingressWithAuthProxy.out.helm & {
 	gerrit: {
 		chart: charts.gerrit
@@ -222,6 +232,7 @@
   gracefulStopTimeout = 1m
 [sshd]
   listenAddress = 0.0.0.0:29418
+  advertisedAddress = \(_domain):\(input.sshPort)
 [transfer]
   timeout = 120 s
 [user]