m/n/c/metrics: add kube-apiserver

This adds the Kubernetes API Server metrics to the list of exported
metrics.

Change-Id: Ie5827441362787a3bff03ec6cff1f07332b0ae34
Reviewed-on: https://review.monogon.dev/c/monogon/+/2335
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/core/metrics/exporters.go b/metropolis/node/core/metrics/exporters.go
index d39081c..270ec8b 100644
--- a/metropolis/node/core/metrics/exporters.go
+++ b/metropolis/node/core/metrics/exporters.go
@@ -55,6 +55,10 @@
 		Name: "kubernetes-controller-manager",
 		Port: node.MetricsKubeControllerManagerListenerPort,
 	},
+	{
+		Name: "kubernetes-apiserver",
+		Port: node.MetricsKubeAPIServerListenerPort,
+	},
 }
 
 func (e *Exporter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
diff --git a/metropolis/node/kubernetes/metricsproxy/metricsproxy.go b/metropolis/node/kubernetes/metricsproxy/metricsproxy.go
index 14f76a0..02bce4b 100644
--- a/metropolis/node/kubernetes/metricsproxy/metricsproxy.go
+++ b/metropolis/node/kubernetes/metricsproxy/metricsproxy.go
@@ -48,6 +48,12 @@
 		ListenPort: node.MetricsKubeControllerManagerListenerPort,
 		ServerName: "kube-controller-manager.local",
 	},
+	{
+		Name:       "kubernetes-apiserver",
+		TargetPort: node.KubernetesAPIPort,
+		ListenPort: node.MetricsKubeAPIServerListenerPort,
+		ServerName: "kubernetes",
+	},
 }
 
 type metricsService struct {
diff --git a/metropolis/node/ports.go b/metropolis/node/ports.go
index cf9b0e0..9907280 100644
--- a/metropolis/node/ports.go
+++ b/metropolis/node/ports.go
@@ -59,6 +59,10 @@
 	// proxy for the controller-manager runs, bound to 127.0.0.1. The metrics
 	// service proxies traffic to it from the public MetricsPort.
 	MetricsKubeControllerManagerListenerPort Port = 7844
+	// MetricsKubeControllerManagerListenerPort is the TCP port on which the
+	// proxy for the controller-manager runs, bound to 127.0.0.1. The metrics
+	// service proxies traffic to it from the public MetricsPort.
+	MetricsKubeAPIServerListenerPort Port = 7845
 	// KubernetesAPIPort is the TCP port on which the Kubernetes API is
 	// exposed.
 	KubernetesAPIPort Port = 6443