Skip to content

Commit 0c6f203

Browse files
committed
Sort out TLS.
1 parent 5ad2f83 commit 0c6f203

File tree

4 files changed

+72
-25
lines changed

4 files changed

+72
-25
lines changed

pkg/deployment/deployment.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -516,21 +516,21 @@ func (d *Deployment) isOwnerOf(obj metav1.Object) bool {
516516
func (d *Deployment) lookForServiceMonitorCRD() {
517517
_, err := d.deps.KubeExtCli.ApiextensionsV1beta1().CustomResourceDefinitions().Get("servicemonitors.monitoring.coreos.com", metav1.GetOptions{})
518518
log := d.deps.Log
519-
log.Debug().Msgf("looking for ServiceMonitor CRD...")
519+
log.Debug().Msgf("Looking for ServiceMonitor CRD...")
520520
if err == nil {
521521
if !d.haveServiceMonitorCRD {
522-
log.Info().Msgf("have discovered ServiceMonitor CRD")
522+
log.Info().Msgf("...have discovered ServiceMonitor CRD")
523523
}
524524
d.haveServiceMonitorCRD = true
525525
d.triggerInspection()
526526
return
527527
} else if k8sutil.IsNotFound(err) {
528528
if d.haveServiceMonitorCRD {
529-
log.Info().Msgf("ServiceMonitor CRD no longer there")
529+
log.Info().Msgf("...ServiceMonitor CRD no longer there")
530530
}
531531
d.haveServiceMonitorCRD = false
532532
return
533533
}
534-
log.Warn().Err(err).Msgf("error when looking for ServiceMonitor CRD")
534+
log.Warn().Err(err).Msgf("Error when looking for ServiceMonitor CRD")
535535
return
536536
}

pkg/deployment/resources/resources.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828

2929
driver "github.com/arangodb/go-driver"
3030
"github.com/arangodb/kube-arangodb/pkg/util/trigger"
31+
clientv1 "github.com/coreos/prometheus-operator/pkg/client/versioned/typed/monitoring/v1"
3132
"github.com/rs/zerolog"
3233
)
3334

@@ -47,6 +48,7 @@ type Resources struct {
4748
mutex sync.Mutex
4849
triggerSyncInspection trigger.Trigger
4950
}
51+
monitoringClient *clientv1.MonitoringV1Client
5052
}
5153

5254
// NewResources creates a new Resources service, used to

pkg/deployment/resources/servicemonitor.go

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,71 @@ import (
3434
func LabelsForExporterServiceMonitor(deploymentName string) map[string]string {
3535
return map[string]string{
3636
k8sutil.LabelKeyArangoDeployment: deploymentName,
37-
k8sutil.LabelKeyApp: "arango-exporter",
37+
k8sutil.LabelKeyApp: k8sutil.AppName,
3838
"context": "metrics",
3939
}
4040
}
4141

4242
func LabelsForExporterServiceMonitorSelector(deploymentName string) map[string]string {
4343
return map[string]string{
4444
k8sutil.LabelKeyArangoDeployment: deploymentName,
45-
k8sutil.LabelKeyApp: "arangodb",
45+
k8sutil.LabelKeyApp: k8sutil.AppName,
46+
}
47+
}
48+
49+
// EnsureMonitoringClient returns a client for looking at ServiceMonitors
50+
// and keeps it in the Resources.
51+
func (r *Resources) EnsureMonitoringClient() (*clientv1.MonitoringV1Client, error) {
52+
if r.monitoringClient != nil {
53+
return r.monitoringClient, nil
54+
}
55+
56+
// Make a client:
57+
var restConfig *rest.Config
58+
restConfig, err := k8sutil.InClusterConfig()
59+
if err != nil {
60+
return nil, maskAny(err)
61+
}
62+
mClient, err := clientv1.NewForConfig(restConfig)
63+
if err != nil {
64+
return nil, maskAny(err)
65+
}
66+
r.monitoringClient = mClient
67+
return mClient, nil
68+
}
69+
70+
func (r *Resources) makeEndpoint(isSecure bool) coreosv1.Endpoint {
71+
if isSecure {
72+
kubecli := r.context.GetKubeCli()
73+
ns := r.context.GetNamespace()
74+
secrets := k8sutil.NewSecretCache(kubecli.CoreV1().Secrets(ns))
75+
spec := r.context.GetSpec()
76+
secretName := spec.TLS.GetCASecretName()
77+
cert, _, _, err := k8sutil.GetCASecret(secrets, secretName, nil)
78+
79+
var tlsconfig *coreosv1.TLSConfig
80+
if err == nil {
81+
tlsconfig = &coreosv1.TLSConfig{
82+
CAFile: cert,
83+
InsecureSkipVerify: false,
84+
}
85+
} else {
86+
tlsconfig = &coreosv1.TLSConfig{
87+
InsecureSkipVerify: true,
88+
}
89+
}
90+
return coreosv1.Endpoint{
91+
Port: "exporter",
92+
Interval: "10s",
93+
Scheme: "https",
94+
TLSConfig: tlsconfig,
95+
}
96+
} else {
97+
return coreosv1.Endpoint{
98+
Port: "exporter",
99+
Interval: "10s",
100+
Scheme: "http",
101+
}
46102
}
47103
}
48104

@@ -56,17 +112,11 @@ func (r *Resources) EnsureServiceMonitor() error {
56112
owner := apiObject.AsOwner()
57113
spec := r.context.GetSpec()
58114
wantMetrics := spec.Metrics.IsEnabled()
59-
serviceMonitorName := deploymentName + "-exporter"
115+
serviceMonitorName := k8sutil.CreateExporterClientServiceName(deploymentName)
60116

61-
// First get a client:
62-
var restConfig *rest.Config
63-
restConfig, err := k8sutil.InClusterConfig()
64-
if err != nil {
65-
return maskAny(err)
66-
}
67-
var mClient *clientv1.MonitoringV1Client
68-
mClient, err = clientv1.NewForConfig(restConfig)
117+
mClient, err := r.EnsureMonitoringClient()
69118
if err != nil {
119+
log.Error().Err(err).Msgf("Cannot get a monitoring client.")
70120
return maskAny(err)
71121
}
72122

@@ -88,14 +138,7 @@ func (r *Resources) EnsureServiceMonitor() error {
88138
Spec: coreosv1.ServiceMonitorSpec{
89139
JobLabel: "k8s-app",
90140
Endpoints: []coreosv1.Endpoint{
91-
coreosv1.Endpoint{
92-
Port: "exporter",
93-
Interval: "10s",
94-
Scheme: "https",
95-
TLSConfig: &coreosv1.TLSConfig{
96-
InsecureSkipVerify: true,
97-
},
98-
},
141+
r.makeEndpoint(spec.IsSecure()),
99142
},
100143
Selector: metav1.LabelSelector{
101144
MatchLabels: LabelsForExporterServiceMonitorSelector(deploymentName),

pkg/logging/logger.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"os"
2828
"strings"
2929
"sync"
30+
"time"
3031

3132
"github.com/rs/zerolog"
3233
)
@@ -62,8 +63,9 @@ type loggingService struct {
6263
// NewRootLogger creates a new zerolog logger with default settings.
6364
func NewRootLogger() zerolog.Logger {
6465
return zerolog.New(zerolog.ConsoleWriter{
65-
Out: os.Stdout,
66-
NoColor: true,
66+
Out: os.Stdout,
67+
TimeFormat: time.RFC3339Nano,
68+
NoColor: true,
6769
}).With().Timestamp().Logger()
6870
}
6971

0 commit comments

Comments
 (0)