addressing review comments

addressing review comments, adding run group
This commit is contained in:
Prashant Balachandran 2021-10-07 14:56:28 +05:30
parent 3b551fcdd6
commit bd06a043c5
4 changed files with 41 additions and 24 deletions

View file

@ -17,6 +17,7 @@ limitations under the License.
package main
import (
"context"
"crypto/tls"
"crypto/x509"
"flag"
@ -30,6 +31,7 @@ import (
"time"
"github.com/prometheus/exporter-toolkit/web"
"github.com/oklog/run"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
@ -94,10 +96,12 @@ type PrometheusAdapter struct {
MetricsRelistInterval time.Duration
// MetricsMaxAge is the period to query available metrics for
MetricsMaxAge time.Duration
secureMetricsPort string
tlsConfig string
metricsHost string
// MetricsPort is the port to expose the prometheus adapter self metrics
MetricsPort string
// TLSConfig is the tls config for exposing the prometheus adapter self metrics
TLSConfig string
// MetricsHost is the host to expose the prometheus adapter self metrics
MetricsHost string
metricsConfig *adaptercfg.MetricsDiscoveryConfig
}
@ -161,12 +165,9 @@ func (cmd *PrometheusAdapter) addFlags() {
"interval at which to re-list the set of all available metrics from Prometheus")
cmd.Flags().DurationVar(&cmd.MetricsMaxAge, "metrics-max-age", cmd.MetricsMaxAge, ""+
"period for which to query the set of available metrics from Prometheus")
cmd.Flags().StringVar(&cmd.secureMetricsPort, "secure-metrics-port", cmd.secureMetricsPort,
"Secure port for metrics")
cmd.Flags().StringVar(&cmd.metricsHost, "metrics-host", cmd.metricsHost,
"Host for exposing metrics")
cmd.Flags().StringVar(&cmd.tlsConfig, "tls-config", cmd.tlsConfig,
"TLS configuration for metrics server")
cmd.Flags().StringVar(&cmd.MetricsPort, "metrics-port", cmd.MetricsPort, "Port to expose prometheus-adapter self metrics on. (default:8080) ")
cmd.Flags().StringVar(&cmd.MetricsHost, "metrics-host", cmd.MetricsHost, "Host to expose prometheus-adapter self metrics on. (default:0.0.0.0)")
cmd.Flags().StringVar(&cmd.TLSConfig, "tls-config", cmd.TLSConfig, "Optional TLS configuration for metrics server")
}
func (cmd *PrometheusAdapter) loadConfig() error {
@ -298,6 +299,8 @@ func main() {
cmd := &PrometheusAdapter{
PrometheusURL: "https://localhost",
MetricsRelistInterval: 10 * time.Minute,
MetricsHost: "::",
MetricsPort: "8080",
}
cmd.Name = "prometheus-metrics-adapter"
@ -363,8 +366,24 @@ func main() {
}
apiServerConfig(config)
cmd.setupMetricsServer()
ctx := context.Background()
var g run.Group
metricsServer := cmd.setupMetricsServer()
{
g.Add(func() error{
return web.ListenAndServe(&metricsServer, cmd.TLSConfig, adapterLogger{})
}, func(error) {
ctxShutDown, cancel := context.WithTimeout(ctx, 3*time.Second)
defer cancel()
metricsServer.Shutdown(ctxShutDown)
})
}
if err := g.Run(); err != nil {
klog.Fatalf("unable to run group : %v", err)
}
// run the server
if err := cmd.Run(stopCh); err != nil {
klog.Fatalf("unable to run custom metrics adapter: %v", err)
@ -375,15 +394,14 @@ func apiServerConfig(config *customexternalmetrics.Config) {
config.GenericConfig.EnableMetrics = false
}
func (cmd PrometheusAdapter) setupMetricsServer() {
func (cmd *PrometheusAdapter) setupMetricsServer() http.Server{
mux := http.NewServeMux()
mux.Handle("/metrics", legacyregistry.Handler())
serverAddress := net.JoinHostPort(cmd.metricsHost, cmd.secureMetricsPort)
metricsServer := http.Server{Handler: mux, Addr: serverAddress}
serverAddress := net.JoinHostPort(cmd.MetricsHost, cmd.MetricsPort)
return http.Server{Handler: mux, Addr: serverAddress}
go web.ListenAndServe(&metricsServer, cmd.tlsConfig, adapterLogger{})
}
// makeKubeconfigHTTPClient constructs an HTTP for connecting with the given auth options.

View file

@ -29,7 +29,7 @@ spec:
- --metrics-relist-interval=1m
- --v=10
- --config=/etc/adapter/config.yaml
- --secure-metrics-port=9090
- --metrics-port=9090
- --metrics-host=0.0.0.0
- --tls-config=/etc/tls/config.yaml
ports:
@ -46,9 +46,6 @@ spec:
- mountPath: /etc/tls
name: metricstlsconfig
readOnly: false
- mountPath: /etc/certs
name: servingcerts
readOnly: false
volumes:
- name: volume-serving-cert
secret:
@ -58,9 +55,8 @@ spec:
name: adapter-config
- name: tmp-vol
emptyDir: {}
- configMap:
- name: metricstlsconfig
configMap:
name: metrics-tls-config
name: metricstlsconfig
- secret:
secretName: pa-metrics-serving-certs
name: servingcerts

1
go.mod
View file

@ -3,6 +3,7 @@ module sigs.k8s.io/prometheus-adapter
go 1.16
require (
github.com/oklog/run v1.1.0
github.com/onsi/ginkgo v1.16.4
github.com/onsi/gomega v1.15.0
github.com/prometheus/client_golang v1.11.0

2
go.sum
View file

@ -457,6 +457,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=