Skip to content

Commit

Permalink
feat: operator 支持 sli 功能 --story=116623719 (#264)
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjiandongx authored Apr 18, 2024
1 parent 60bb6a6 commit cc7ee1a
Show file tree
Hide file tree
Showing 32 changed files with 2,299 additions and 428 deletions.
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PWD = $(shell pwd)
MODULES ?= bkmonitorbeat collector operator transfer unify-query influxdb-proxy ingester offline-data-archive bk-monitor-worker
MODULES ?= bkmonitorbeat collector operator transfer unify-query influxdb-proxy ingester offline-data-archive bk-monitor-worker sliwebhook
RELEASE_PATH ?= $(PWD)/dist
BUILD_NO ?= 1
COMMIT_ID = $(shell git rev-parse HEAD)
Expand All @@ -20,7 +20,7 @@ TAG = pkg/$(MODULE)/v$(VERSION)
PIP_PATH ?= $(shell which pip)

.PHONY: all
all: bkmonitorbeat collector operator transfer unify-query influxdb-proxy ingester offline-data-archive bk-monitor-worker
all: bkmonitorbeat collector operator transfer unify-query influxdb-proxy ingester offline-data-archive bk-monitor-worker sliwebhook

.PHONY: .check_module_vars
.check_module_vars:
Expand All @@ -44,6 +44,10 @@ collector:
operator:
$(MAKE) MODULE=operator build

.PHONY: sliwebhook
sliwebhook:
$(MAKE) MODULE=sliwebhook build

.PHONY: transfer
transfer:
$(MAKE) MODULE=transfer build
Expand Down
55 changes: 55 additions & 0 deletions pkg/operator/common/k8sutils/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,21 @@ import (
"context"
"errors"
"fmt"
"strings"

tkexversiond "github.com/Tencent/bk-bcs/bcs-scenarios/kourse/pkg/client/clientset/versioned"
promversioned "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned"
"github.com/prometheus-operator/prometheus-operator/pkg/k8sutil"
"github.com/prometheus-operator/prometheus-operator/pkg/operator"
corev1 "k8s.io/api/core/v1"
apiequality "k8s.io/apimachinery/pkg/api/equality"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
clientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/retry"

bkversioned "github.com/TencentBlueKing/bkmonitor-datalink/pkg/operator/client/clientset/versioned"
"github.com/TencentBlueKing/bkmonitor-datalink/pkg/operator/common/logconf"
Expand Down Expand Up @@ -80,6 +84,57 @@ func CreateOrUpdateSecret(ctx context.Context, secretClient clientv1.SecretInter
return k8sutil.CreateOrUpdateSecret(ctx, secretClient, desired)
}

func mergeMetadata(new *metav1.ObjectMeta, old metav1.ObjectMeta) {
new.ResourceVersion = old.ResourceVersion

new.SetLabels(mergeMaps(new.Labels, old.Labels))
new.SetAnnotations(mergeMaps(new.Annotations, old.Annotations))
}

func mergeMaps(new map[string]string, old map[string]string) map[string]string {
return mergeMapsByPrefix(new, old, "")
}

func mergeMapsByPrefix(from map[string]string, to map[string]string, prefix string) map[string]string {
if to == nil {
to = make(map[string]string)
}

if from == nil {
from = make(map[string]string)
}

for k, v := range from {
if strings.HasPrefix(k, prefix) {
to[k] = v
}
}

return to
}

func CreateOrUpdateConfigMap(ctx context.Context, cmClient clientv1.ConfigMapInterface, desired *corev1.ConfigMap) error {
return retry.RetryOnConflict(retry.DefaultRetry, func() error {
existingSecret, err := cmClient.Get(ctx, desired.Name, metav1.GetOptions{})
if err != nil {
if !apierrors.IsNotFound(err) {
return err
}

_, err = cmClient.Create(ctx, desired, metav1.CreateOptions{})
return err
}

mutated := existingSecret.DeepCopyObject().(*corev1.ConfigMap)
mergeMetadata(&desired.ObjectMeta, mutated.ObjectMeta)
if apiequality.Semantic.DeepEqual(existingSecret, desired) {
return nil
}
_, err = cmClient.Update(ctx, desired, metav1.UpdateOptions{})
return err
})
}

func CreateOrUpdateService(ctx context.Context, serviceClient clientv1.ServiceInterface, desired *corev1.Service) error {
return k8sutil.CreateOrUpdateService(ctx, serviceClient, desired)
}
Expand Down
27 changes: 25 additions & 2 deletions pkg/operator/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/TencentBlueKing/bkmonitor-datalink/pkg/operator

go 1.19
go 1.21

require (
github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef
Expand Down Expand Up @@ -31,6 +31,7 @@ require (
github.com/Tencent/bk-bcs/bcs-scenarios/kourse v0.0.0-20220914032224-06b1bd3358bc
github.com/TencentBlueKing/bkmonitor-datalink/pkg/libgse v0.0.0-00010101000000-000000000000
github.com/TencentBlueKing/bkmonitor-datalink/pkg/utils v0.0.0-00010101000000-000000000000
github.com/ghodss/yaml v1.0.0
)

require (
Expand All @@ -39,6 +40,7 @@ require (
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/Shopify/sarama v1.27.1 // indirect
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
github.com/aws/aws-sdk-go v1.44.72 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/boltdb/bolt v1.3.1 // indirect
Expand All @@ -47,11 +49,14 @@ require (
github.com/containerd/cgroups v1.0.3 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dennwc/varint v1.0.0 // indirect
github.com/docker/distribution v2.8.2+incompatible // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/eapache/go-resiliency v1.2.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
github.com/eapache/queue v1.1.0 // indirect
github.com/edsrzf/mmap-go v1.1.0 // indirect
github.com/efficientgo/tools/core v0.0.0-20220225185207-fe763185946b // indirect
github.com/elastic/ecs v1.6.0 // indirect
github.com/elastic/go-lumber v0.1.0 // indirect
github.com/elastic/go-seccomp-bpf v1.1.0 // indirect
Expand All @@ -68,17 +73,25 @@ require (
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.21.2 // indirect
github.com/go-openapi/errors v0.20.2 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.20.0 // indirect
github.com/go-openapi/loads v0.21.1 // indirect
github.com/go-openapi/runtime v0.24.0 // indirect
github.com/go-openapi/spec v0.20.5 // indirect
github.com/go-openapi/strfmt v0.21.3 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/go-openapi/validate v0.21.0 // indirect
github.com/godbus/dbus/v5 v5.0.6 // indirect
github.com/gofrs/uuid v4.3.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.0.1 // indirect
github.com/google/gnostic v0.6.9 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 // indirect
github.com/hashicorp/go-uuid v1.0.2 // indirect
Expand All @@ -105,12 +118,16 @@ require (
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
github.com/natefinch/npipe v0.0.0-20160621034901-c1b8fa8bdcce // indirect
github.com/nightlyone/lockfile v1.0.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pelletier/go-toml v1.9.3 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pierrec/lz4 v2.5.2+incompatible // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus-community/prom-label-proxy v0.5.0 // indirect
github.com/prometheus/alertmanager v0.24.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common/sigv4 v0.1.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
Expand All @@ -120,12 +137,18 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
go.mongodb.org/mongo-driver v1.10.0 // indirect
go.opentelemetry.io/otel v1.16.0 // indirect
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/otel/trace v1.16.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/goleak v1.2.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.24.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 // indirect
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/term v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
Expand Down
Loading

0 comments on commit cc7ee1a

Please sign in to comment.