Skip to content

Commit 0507a0a

Browse files
authored
[Feature] Ensure ServiceMonitor labels (#605)
1 parent 3f53b9a commit 0507a0a

File tree

19 files changed

+317
-26
lines changed

19 files changed

+317
-26
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Change Log
22

33
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
4+
- Add Labels and Annotations to ServiceMonitor
45

56
## [1.0.4](https://github.com/arangodb/kube-arangodb/tree/1.0.4) (2020-07-28)
67
- Add Encryption Key rotation feature for ArangoDB EE 3.7+

chart/kube-arangodb/templates/deployment-operator/role.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ rules:
3030
verbs: ["get", "list", "watch"]
3131
- apiGroups: ["monitoring.coreos.com"]
3232
resources: ["servicemonitors"]
33-
verbs: ["get", "create", "delete", "update"]
33+
verbs: ["get", "create", "delete", "update", "list", "watch", "patch"]
3434

3535
{{- end }}
3636
{{- end }}

dashboard/assets.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
//
2+
// DISCLAIMER
3+
//
4+
// Copyright 2020 ArangoDB GmbH, Cologne, Germany
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
//
10+
// http://www.apache.org/licenses/LICENSE-2.0
11+
//
12+
// Unless required by applicable law or agreed to in writing, software
13+
// distributed under the License is distributed on an "AS IS" BASIS,
14+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
// See the License for the specific language governing permissions and
16+
// limitations under the License.
17+
//
18+
// Copyright holder is ArangoDB GmbH, Cologne, Germany
19+
//
20+
121
package dashboard
222

323
import (

main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,11 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper
279279
return operator.Config{}, operator.Dependencies{}, maskAny(err)
280280
}
281281

282+
kubeMonCli, err := k8sutil.NewKubeMonitoringV1Client()
283+
if err != nil {
284+
return operator.Config{}, operator.Dependencies{}, maskAny(err)
285+
}
286+
282287
image, serviceAccount, err := getMyPodInfo(kubecli, namespace, name)
283288
if err != nil {
284289
return operator.Config{}, operator.Dependencies{}, maskAny(fmt.Errorf("Failed to get my pod's service account: %s", err))
@@ -320,6 +325,7 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper
320325
LogService: logService,
321326
KubeCli: kubecli,
322327
KubeExtCli: kubeExtCli,
328+
KubeMonitoringCli: kubeMonCli,
323329
CRCli: crCli,
324330
EventRecorder: eventRecorder,
325331
LivenessProbe: &livenessProbe,

pkg/deployment/context_impl.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131
"strconv"
3232
"time"
3333

34+
monitoringClient "github.com/coreos/prometheus-operator/pkg/client/versioned/typed/monitoring/v1"
35+
3436
"github.com/arangodb/kube-arangodb/pkg/deployment/features"
3537

3638
"github.com/arangodb/go-driver/http"
@@ -78,6 +80,10 @@ func (d *Deployment) GetKubeCli() kubernetes.Interface {
7880
return d.deps.KubeCli
7981
}
8082

83+
func (d *Deployment) GetMonitoringV1Cli() monitoringClient.MonitoringV1Interface {
84+
return d.deps.KubeMonitoringCli
85+
}
86+
8187
// GetLifecycleImage returns the image name containing the lifecycle helper (== name of operator image)
8288
func (d *Deployment) GetLifecycleImage() string {
8389
return d.config.LifecycleImage

pkg/deployment/deployment.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import (
2929
"sync/atomic"
3030
"time"
3131

32+
monitoringClient "github.com/coreos/prometheus-operator/pkg/client/versioned/typed/monitoring/v1"
33+
3234
"github.com/arangodb/kube-arangodb/pkg/util/arangod/conn"
3335

3436
"github.com/arangodb/kube-arangodb/pkg/deployment/resources/inspector"
@@ -65,11 +67,12 @@ type Config struct {
6567

6668
// Dependencies holds dependent services for a Deployment
6769
type Dependencies struct {
68-
Log zerolog.Logger
69-
KubeCli kubernetes.Interface
70-
KubeExtCli apiextensionsclient.Interface
71-
DatabaseCRCli versioned.Interface
72-
EventRecorder record.EventRecorder
70+
Log zerolog.Logger
71+
KubeCli kubernetes.Interface
72+
KubeExtCli apiextensionsclient.Interface
73+
KubeMonitoringCli monitoringClient.MonitoringV1Interface
74+
DatabaseCRCli versioned.Interface
75+
EventRecorder record.EventRecorder
7376
}
7477

7578
// deploymentEventType strongly typed type of event
@@ -237,7 +240,7 @@ func (d *Deployment) run() {
237240
for {
238241
select {
239242
case <-d.stopCh:
240-
cachedStatus, err := inspector.NewInspector(d.GetKubeCli(), d.GetNamespace())
243+
cachedStatus, err := inspector.NewInspector(d.GetKubeCli(), d.GetMonitoringV1Cli(), d.GetNamespace())
241244
if err != nil {
242245
log.Error().Err(err).Msg("Unable to get resources")
243246
}

pkg/deployment/deployment_inspector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (d *Deployment) inspectDeployment(lastInterval util.Interval) util.Interval
6565
deploymentName := d.apiObject.GetName()
6666
defer metrics.SetDuration(inspectDeploymentDurationGauges.WithLabelValues(deploymentName), start)
6767

68-
cachedStatus, err := inspector.NewInspector(d.GetKubeCli(), d.GetNamespace())
68+
cachedStatus, err := inspector.NewInspector(d.GetKubeCli(), d.GetMonitoringV1Cli(), d.GetNamespace())
6969
if err != nil {
7070
log.Error().Err(err).Msg("Unable to get resources")
7171
return minInspectionInterval // Retry ASAP

pkg/deployment/deployment_run_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func runTestCase(t *testing.T, testCase testCaseStruct) {
6262

6363
errs := 0
6464
for {
65-
cache, err := inspector.NewInspector(d.GetKubeCli(), d.GetNamespace())
65+
cache, err := inspector.NewInspector(d.GetKubeCli(), d.GetMonitoringV1Cli(), d.GetNamespace())
6666
require.NoError(t, err)
6767
err = d.resources.EnsureSecrets(log.Logger, cache)
6868
if err == nil {
@@ -104,7 +104,7 @@ func runTestCase(t *testing.T, testCase testCaseStruct) {
104104
}
105105

106106
// Act
107-
cache, err := inspector.NewInspector(d.GetKubeCli(), d.GetNamespace())
107+
cache, err := inspector.NewInspector(d.GetKubeCli(), d.GetMonitoringV1Cli(), d.GetNamespace())
108108
require.NoError(t, err)
109109
err = d.resources.EnsurePods(cache)
110110

pkg/deployment/deployment_suite_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import (
2929
"path/filepath"
3030
"testing"
3131

32+
monitoringFakeClient "github.com/coreos/prometheus-operator/pkg/client/versioned/fake"
33+
3234
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/probes"
3335

3436
"github.com/arangodb/kube-arangodb/pkg/util/arangod/conn"
@@ -419,17 +421,19 @@ func createTestDeployment(config Config, arangoDeployment *api.ArangoDeployment)
419421

420422
eventRecorder := recordfake.NewFakeRecorder(10)
421423
kubernetesClientSet := fake.NewSimpleClientset()
424+
monitoringClientSet := monitoringFakeClient.NewSimpleClientset()
422425

423426
arangoDeployment.ObjectMeta = metav1.ObjectMeta{
424427
Name: testDeploymentName,
425428
Namespace: testNamespace,
426429
}
427430

428431
deps := Dependencies{
429-
Log: zerolog.New(ioutil.Discard),
430-
KubeCli: kubernetesClientSet,
431-
DatabaseCRCli: arangofake.NewSimpleClientset(&api.ArangoDeployment{}),
432-
EventRecorder: eventRecorder,
432+
Log: zerolog.New(ioutil.Discard),
433+
KubeCli: kubernetesClientSet,
434+
KubeMonitoringCli: monitoringClientSet.MonitoringV1(),
435+
DatabaseCRCli: arangofake.NewSimpleClientset(&api.ArangoDeployment{}),
436+
EventRecorder: eventRecorder,
433437
}
434438

435439
d := &Deployment{

pkg/deployment/reconcile/plan_builder_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import (
2828
"io/ioutil"
2929
"testing"
3030

31+
monitoring "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"
32+
3133
"github.com/pkg/errors"
3234

3335
policy "k8s.io/api/policy/v1beta1"
@@ -548,6 +550,7 @@ func TestCreatePlan(t *testing.T) {
548550
PVCS map[string]*core.PersistentVolumeClaim
549551
ServiceAccounts map[string]*core.ServiceAccount
550552
PDBS map[string]*policy.PodDisruptionBudget
553+
ServiceMonitors map[string]*monitoring.ServiceMonitor
551554
}{
552555
{
553556
Name: "Can not create plan for single deployment",
@@ -807,7 +810,7 @@ func TestCreatePlan(t *testing.T) {
807810
if testCase.Helper != nil {
808811
testCase.Helper(testCase.context.ArangoDeployment)
809812
}
810-
err, _ := r.CreatePlan(ctx, inspector.NewInspectorFromData(testCase.Pods, testCase.Secrets, testCase.PVCS, testCase.Services, testCase.ServiceAccounts, testCase.PDBS))
813+
err, _ := r.CreatePlan(ctx, inspector.NewInspectorFromData(testCase.Pods, testCase.Secrets, testCase.PVCS, testCase.Services, testCase.ServiceAccounts, testCase.PDBS, testCase.ServiceMonitors))
811814

812815
// Assert
813816
if testCase.ExpectedEvent != nil {

0 commit comments

Comments
 (0)