diff --git a/examples/kubernetes/metric/pod-monitor.yaml b/examples/kubernetes/metric/pod-monitor.yaml new file mode 100644 index 0000000000..dc41549881 --- /dev/null +++ b/examples/kubernetes/metric/pod-monitor.yaml @@ -0,0 +1,17 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: envoy-gateway-proxy-monitoring + namespace: envoy-gateway-system +spec: + selector: + matchLabels: + app.kubernetes.io/name: envoy + app.kubernetes.io/component: proxy + namespaceSelector: + any: true + jobLabel: proxy-stats + podMetricsEndpoints: + - path: /stats/prometheus + interval: 15s + port: metrics diff --git a/internal/infrastructure/kubernetes/proxy/resource.go b/internal/infrastructure/kubernetes/proxy/resource.go index 43c6300388..119dc87744 100644 --- a/internal/infrastructure/kubernetes/proxy/resource.go +++ b/internal/infrastructure/kubernetes/proxy/resource.go @@ -117,6 +117,14 @@ func expectedProxyContainers(infra *ir.ProxyInfra, deploymentConfig *egcfgv1a1.K proxyMetrics = infra.Config.Spec.Telemetry.Metrics } + if proxyMetrics != nil && proxyMetrics.Prometheus != nil { + ports = append(ports, corev1.ContainerPort{ + Name: "metrics", + ContainerPort: bootstrap.EnvoyReadinessPort, // TODO: make this configurable + Protocol: corev1.ProtocolTCP, + }) + } + var bootstrapConfigurations string // Get Bootstrap from EnvoyProxy API if set by the user // The config should have been validated already diff --git a/internal/infrastructure/kubernetes/proxy/testdata/deployments/enable-prometheus.yaml b/internal/infrastructure/kubernetes/proxy/testdata/deployments/enable-prometheus.yaml index e100ed3e76..ad3ce1f5e5 100644 --- a/internal/infrastructure/kubernetes/proxy/testdata/deployments/enable-prometheus.yaml +++ b/internal/infrastructure/kubernetes/proxy/testdata/deployments/enable-prometheus.yaml @@ -182,6 +182,9 @@ spec: - containerPort: 8443 name: EnvoyHTTPSPort protocol: TCP + - containerPort: 19001 + name: metrics + protocol: TCP resources: requests: cpu: 100m