Skip to content

Commit 88509ac

Browse files
authored
Merge pull request #365 from aramase/update-deps
feat: update deps and switch to klog
2 parents ae67720 + 0729e57 commit 88509ac

34 files changed

+465
-439
lines changed

cmd/secrets-store-csi-driver/main.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ import (
2323
"sigs.k8s.io/secrets-store-csi-driver/pkg/metrics"
2424
"sigs.k8s.io/secrets-store-csi-driver/pkg/rotation"
2525

26-
log "github.com/sirupsen/logrus"
2726
"k8s.io/apimachinery/pkg/runtime"
2827
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
28+
json "k8s.io/component-base/logs/json"
29+
"k8s.io/klog/v2"
2930

3031
ctrl "sigs.k8s.io/controller-runtime"
3132
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,9 +42,8 @@ var (
4142
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
4243
driverName = flag.String("drivername", "secrets-store.csi.k8s.io", "name of the driver")
4344
nodeID = flag.String("nodeid", "", "node id")
44-
debug = flag.Bool("debug", false, "sets log to debug level")
45+
debug = flag.Bool("debug", false, "sets log to debug level [DEPRECATED]. Use -v=<log level> to configure log level.")
4546
logFormatJSON = flag.Bool("log-format-json", false, "set log formatter to json")
46-
logReportCaller = flag.Bool("log-report-caller", false, "include the calling method as fields in the log")
4747
providerVolumePath = flag.String("provider-volume", "/etc/kubernetes/secrets-store-csi-providers", "Volume path for provider")
4848
minProviderVersion = flag.String("min-provider-version", "", "set minimum supported provider versions with current driver")
4949
metricsAddr = flag.String("metrics-addr", ":8095", "The address the metric endpoint binds to")
@@ -63,25 +63,25 @@ func init() {
6363
}
6464

6565
func main() {
66+
klog.InitFlags(nil)
67+
defer klog.Flush()
68+
6669
flag.Parse()
6770

68-
log.SetLevel(log.InfoLevel)
69-
if *debug {
70-
log.SetLevel(log.DebugLevel)
71-
}
7271
if *logFormatJSON {
73-
log.SetFormatter(&log.JSONFormatter{})
72+
klog.SetLogger(json.JSONLogger)
73+
}
74+
if *debug {
75+
klog.Warning("--debug flag has been DEPRECATED and will be removed in future releases. Use -v=<log level> to configure log verbosity.")
7476
}
75-
76-
log.SetReportCaller(*logReportCaller)
7777

7878
// initialize metrics exporter before creating measurements
7979
// Issue: https://github.com/open-telemetry/opentelemetry-go/issues/677
8080
// this has been resolved in otel release v0.5.0
8181
// TODO (aramase) update to latest version of otel and deps
8282
m, err := metrics.NewMetricsExporter()
8383
if err != nil {
84-
log.Fatalf("failed to initialize metrics exporter, error: %+v", err)
84+
klog.Fatalf("failed to initialize metrics exporter, error: %+v", err)
8585
}
8686
defer m.Stop()
8787

@@ -94,23 +94,23 @@ func main() {
9494
LeaderElection: false,
9595
})
9696
if err != nil {
97-
log.Fatalf("failed to start manager, error: %+v", err)
97+
klog.Fatalf("failed to start manager, error: %+v", err)
9898
}
9999

100100
reconciler, err := controllers.New(mgr, *nodeID)
101101
if err != nil {
102-
log.Fatalf("failed to create secret provider class pod status reconciler, error: %+v", err)
102+
klog.Fatalf("failed to create secret provider class pod status reconciler, error: %+v", err)
103103
}
104104
if err = reconciler.SetupWithManager(mgr); err != nil {
105-
log.Fatalf("failed to create controller, error: %+v", err)
105+
klog.Fatalf("failed to create controller, error: %+v", err)
106106
}
107107
// +kubebuilder:scaffold:builder
108108

109109
stopCh := ctrl.SetupSignalHandler()
110110
go func() {
111-
log.Infof("starting manager")
111+
klog.Infof("starting manager")
112112
if err := mgr.Start(stopCh); err != nil {
113-
log.Fatalf("failed to run manager, error: %+v", err)
113+
klog.Fatalf("failed to run manager, error: %+v", err)
114114
}
115115
}()
116116

@@ -121,7 +121,7 @@ func main() {
121121
if *enableSecretRotation {
122122
rec, err := rotation.NewReconciler(scheme, *providerVolumePath, *nodeID, *rotationPollInterval)
123123
if err != nil {
124-
log.Fatalf("failed to initialize rotation reconciler, error: %+v", err)
124+
klog.Fatalf("failed to initialize rotation reconciler, error: %+v", err)
125125
}
126126
stopCh := make(<-chan struct{})
127127
go rec.Run(stopCh)
@@ -134,11 +134,11 @@ func handle() {
134134
driver := secretsstore.GetDriver()
135135
cfg, err := config.GetConfig()
136136
if err != nil {
137-
log.Fatalf("failed to initialize driver, error getting config: %+v", err)
137+
klog.Fatalf("failed to initialize driver, error getting config: %+v", err)
138138
}
139139
c, err := client.New(cfg, client.Options{Scheme: scheme, Mapper: nil})
140140
if err != nil {
141-
log.Fatalf("failed to initialize driver, error creating client: %+v", err)
141+
klog.Fatalf("failed to initialize driver, error creating client: %+v", err)
142142
}
143143
driver.Run(*driverName, *nodeID, *endpoint, *providerVolumePath, *minProviderVersion, *grpcSupportedProviders, c)
144144
}

controllers/secretproviderclasspodstatus_controller.go

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ import (
2828
"sigs.k8s.io/controller-runtime/pkg/manager"
2929

3030
"k8s.io/client-go/tools/record"
31-
32-
log "github.com/sirupsen/logrus"
31+
"k8s.io/klog/v2"
3332

3433
"sigs.k8s.io/secrets-store-csi-driver/apis/v1alpha1"
3534
"sigs.k8s.io/secrets-store-csi-driver/pkg/client/clientset/versioned/scheme"
@@ -61,7 +60,6 @@ const (
6160
type SecretProviderClassPodStatusReconciler struct {
6261
client.Client
6362
mutex *sync.Mutex
64-
log *log.Logger
6563
scheme *apiruntime.Scheme
6664
nodeID string
6765
reader client.Reader
@@ -97,14 +95,14 @@ func (r *SecretProviderClassPodStatusReconciler) RunPatcher(stopCh <-chan struct
9795
return
9896
case <-ticker.C:
9997
if err := r.Patcher(); err != nil {
100-
log.Errorf("failed to patch secret owner ref, err: %+v", err)
98+
klog.ErrorS(err, "failed to patch secret owner ref")
10199
}
102100
}
103101
}
104102
}
105103

106104
func (r *SecretProviderClassPodStatusReconciler) Patcher() error {
107-
log.Debugf("patcher started")
105+
klog.V(5).Infof("patcher started")
108106
r.mutex.Lock()
109107
defer r.mutex.Unlock()
110108

@@ -126,8 +124,7 @@ func (r *SecretProviderClassPodStatusReconciler) Patcher() error {
126124
spc = &val
127125
} else {
128126
if err := r.reader.Get(ctx, client.ObjectKey{Namespace: spcPodStatuses[i].Namespace, Name: spcName}, spc); err != nil {
129-
log.Errorf("failed to get spc %s, err: %+v", spcName, err)
130-
return err
127+
return fmt.Errorf("failed to get spc %s, err: %+v", spcName, err)
131128
}
132129
spcMap[spcPodStatuses[i].Namespace+"/"+spcName] = *spc
133130
}
@@ -146,7 +143,7 @@ func (r *SecretProviderClassPodStatusReconciler) Patcher() error {
146143
patchFn := func() (bool, error) {
147144
if err := r.patchSecretWithOwnerRef(ctx, secret.Name, secret.Namespace, owners...); err != nil {
148145
if !apierrors.IsConflict(err) || !apierrors.IsTimeout(err) {
149-
log.Errorf("failed to set owner ref for secret, err: %+v", err)
146+
klog.ErrorS(err, "failed to set owner ref for secret", "secret", klog.ObjectRef{Namespace: secret.Namespace, Name: secret.Name})
150147
}
151148
return false, nil
152149
}
@@ -162,7 +159,7 @@ func (r *SecretProviderClassPodStatusReconciler) Patcher() error {
162159
}
163160
}
164161

165-
log.Debugf("patcher completed")
162+
klog.V(5).Infof("patcher completed")
166163
return nil
167164
}
168165

@@ -184,54 +181,54 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(req ctrl.Request) (ct
184181
defer r.mutex.Unlock()
185182

186183
ctx := context.Background()
187-
logger := log.WithFields(log.Fields{"secretproviderclasspodstatus": req.NamespacedName, "node": r.nodeID})
188-
logger.Info("reconcile started")
184+
klog.InfoS("reconcile started", "spcps", req.NamespacedName.String())
189185

190-
var spcPodStatus v1alpha1.SecretProviderClassPodStatus
191-
if err := r.reader.Get(ctx, req.NamespacedName, &spcPodStatus); err != nil {
186+
spcPodStatus := &v1alpha1.SecretProviderClassPodStatus{}
187+
if err := r.reader.Get(ctx, req.NamespacedName, spcPodStatus); err != nil {
192188
if apierrors.IsNotFound(err) {
189+
klog.InfoS("reconcile complete", "spcps", req.NamespacedName.String())
193190
return ctrl.Result{}, nil
194191
}
195-
logger.Errorf("failed to get spc pod status, err: %+v", err)
192+
klog.ErrorS(err, "failed to get spc pod status", "spcps", req.NamespacedName.String())
196193
return ctrl.Result{}, err
197194
}
198195

199196
// reconcile delete
200197
if !spcPodStatus.GetDeletionTimestamp().IsZero() {
201-
logger.Infof("reconcile complete")
198+
klog.InfoS("reconcile complete", "spcps", req.NamespacedName.String())
202199
return ctrl.Result{}, nil
203200
}
204201

205202
node, ok := spcPodStatus.GetLabels()[v1alpha1.InternalNodeLabel]
206203
if !ok {
207-
logger.Info("node label not found, ignoring this spc pod status")
204+
klog.V(3).InfoS("node label not found, ignoring this spc pod status", "spcps", klog.KObj(spcPodStatus))
208205
return ctrl.Result{}, nil
209206
}
210207
if !strings.EqualFold(node, r.nodeID) {
211-
logger.Infof("ignoring as spc pod status belongs to node %s", node)
208+
klog.V(3).InfoS("ignoring as spc pod status belongs diff node", "node", node, "spcps", klog.KObj(spcPodStatus))
212209
return ctrl.Result{}, nil
213210
}
214211

215212
spcName := spcPodStatus.Status.SecretProviderClassName
216213
spc := &v1alpha1.SecretProviderClass{}
217214
if err := r.reader.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: spcName}, spc); err != nil {
218-
logger.Errorf("failed to get spc %s, err: %+v", spcName, err)
215+
klog.ErrorS(err, "failed to get spc", "spc", spcName)
219216
if apierrors.IsNotFound(err) {
220217
return ctrl.Result{RequeueAfter: 5 * time.Second}, nil
221218
}
222219
return ctrl.Result{}, err
223220
}
224221

225222
if len(spc.Spec.SecretObjects) == 0 {
226-
logger.Infof("no secret objects defined for spc, nothing to reconcile")
223+
klog.InfoS("no secret objects defined for spc, nothing to reconcile", "spc", klog.KObj(spc), "spcps", klog.KObj(spcPodStatus))
227224
return ctrl.Result{}, nil
228225
}
229226

230227
// Obtain the full pod metadata. An object reference is needed for sending
231228
// events and the UID is helpful for validating the SPCPS TargetPath.
232229
pod := &v1.Pod{}
233230
if err := r.reader.Get(ctx, client.ObjectKey{Namespace: req.Namespace, Name: spcPodStatus.Status.PodName}, pod); err != nil {
234-
logger.Errorf("failed to get pod %s/%s, err: %+v", req.Namespace, spcPodStatus.Status.PodName, err)
231+
klog.ErrorS(err, "failed to get pod", "pod", klog.ObjectRef{Namespace: req.Namespace, Name: spcPodStatus.Status.PodName})
235232
if apierrors.IsNotFound(err) {
236233
return ctrl.Result{RequeueAfter: 5 * time.Second}, nil
237234
}
@@ -255,21 +252,21 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(req ctrl.Request) (ct
255252
files, err := fileutil.GetMountedFiles(spcPodStatus.Status.TargetPath)
256253
if err != nil {
257254
r.generateEvent(pod, corev1.EventTypeWarning, secretCreationFailedReason, fmt.Sprintf("failed to get mounted files, err: %+v", err))
258-
logger.Errorf("failed to get mounted files, err: %+v", err)
255+
klog.ErrorS(err, "failed to get mounted files", "spc", klog.KObj(spc), "pod", klog.KObj(pod), "spcps", klog.KObj(spcPodStatus))
259256
return ctrl.Result{RequeueAfter: 10 * time.Second}, err
260257
}
261258
errs := make([]error, 0)
262259
for _, secretObj := range spc.Spec.SecretObjects {
263260
secretName := strings.TrimSpace(secretObj.SecretName)
264261

265262
if err = secretutil.ValidateSecretObject(*secretObj); err != nil {
266-
logger.Errorf("failed to validate secret object in spc %s/%s, err: %+v", spc.Namespace, spc.Name, err)
263+
klog.ErrorS(err, "failed to validate secret object in spc", "spc", klog.KObj(spc), "pod", klog.KObj(pod), "spcps", klog.KObj(spcPodStatus))
267264
errs = append(errs, fmt.Errorf("failed to validate secret object in spc %s/%s, err: %+v", spc.Namespace, spc.Name, err))
268265
continue
269266
}
270267
exists, err := r.secretExists(ctx, secretName, req.Namespace)
271268
if err != nil {
272-
logger.Errorf("failed to check if secret %s exists, err: %+v", secretName, err)
269+
klog.ErrorS(err, "failed to check if secret exists", "secret", klog.ObjectRef{Namespace: req.Namespace, Name: secretName}, "spc", klog.KObj(spc), "pod", klog.KObj(pod), "spcps", klog.KObj(spcPodStatus))
273270
errs = append(errs, fmt.Errorf("failed to check if secret %s exists, err: %+v", secretName, err))
274271
continue
275272
}
@@ -282,7 +279,7 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(req ctrl.Request) (ct
282279
datamap := make(map[string][]byte)
283280
if datamap, err = secretutil.GetSecretData(secretObj.Data, secretType, files); err != nil {
284281
r.generateEvent(pod, corev1.EventTypeWarning, secretCreationFailedReason, fmt.Sprintf("failed to get data in spc %s/%s for secret %s, err: %+v", req.Namespace, spcName, secretName, err))
285-
log.Errorf("failed to get data in spc %s/%s for secret %s, err: %+v", req.Namespace, spcName, secretName, err)
282+
klog.ErrorS(err, "failed to get data in spc for secret", "spc", klog.KObj(spc), "pod", klog.KObj(pod), "secret", klog.ObjectRef{Namespace: req.Namespace, Name: secretName}, "spcps", klog.KObj(spcPodStatus))
286283
errs = append(errs, fmt.Errorf("failed to get data in spc %s/%s for secret %s, err: %+v", req.Namespace, spcName, secretName, err))
287284
continue
288285
}
@@ -298,7 +295,7 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(req ctrl.Request) (ct
298295

299296
createFn := func() (bool, error) {
300297
if err := r.createK8sSecret(ctx, secretName, req.Namespace, datamap, labelsMap, secretType); err != nil {
301-
logger.Errorf("failed createK8sSecret, err: %v for secret: %s", err, secretName)
298+
klog.ErrorS(err, "failed to create Kubernetes secret", "spc", klog.KObj(spc), "pod", klog.KObj(pod), "secret", klog.ObjectRef{Namespace: req.Namespace, Name: secretName}, "spcps", klog.KObj(spcPodStatus))
302299
return false, nil
303300
}
304301
return true, nil
@@ -323,7 +320,7 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(req ctrl.Request) (ct
323320
return ctrl.Result{Requeue: true}, nil
324321
}
325322

326-
logger.Info("reconcile complete")
323+
klog.InfoS("reconcile complete", "spc", klog.KObj(spc), "pod", klog.KObj(pod), "spcps", klog.KObj(spcPodStatus))
327324
// requeue the spc pod status again after 5mins to check if secret and ownerRef exists
328325
// and haven't been modified. If secret doesn't exist, then this requeue will ensure it's
329326
// created in the next reconcile and the owner ref patched again
@@ -351,7 +348,7 @@ func (r *SecretProviderClassPodStatusReconciler) createK8sSecret(ctx context.Con
351348

352349
err := r.writer.Create(ctx, secret)
353350
if err == nil {
354-
log.Infof("created k8s secret: %s/%s", namespace, name)
351+
klog.InfoS("successfully created Kubernetes secret", "secret", klog.ObjectRef{Namespace: namespace, Name: name})
355352
return nil
356353
}
357354
if apierrors.IsAlreadyExists(err) {
@@ -369,7 +366,7 @@ func (r *SecretProviderClassPodStatusReconciler) patchSecretWithOwnerRef(ctx con
369366
}
370367
if err := r.Client.Get(ctx, secretKey, secret); err != nil {
371368
if apierrors.IsNotFound(err) {
372-
log.Debugf("secret %s/%s not found for patching", namespace, name)
369+
klog.V(5).InfoS("secret not found for patching", "secret", klog.ObjectRef{Namespace: namespace, Name: name})
373370
return nil
374371
}
375372
return err

controllers/secretproviderclasspodstatus_controller_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import (
2424

2525
. "github.com/onsi/gomega"
2626

27-
log "github.com/sirupsen/logrus"
28-
2927
v1 "k8s.io/api/core/v1"
3028
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3129
"k8s.io/apimachinery/pkg/runtime"
@@ -87,7 +85,6 @@ func newReconciler(client client.Client, scheme *runtime.Scheme) *SecretProvider
8785
Client: client,
8886
reader: client,
8987
writer: client,
90-
log: log.New(),
9188
scheme: scheme,
9289
eventRecorder: fakeRecorder,
9390
}

go.mod

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
module sigs.k8s.io/secrets-store-csi-driver
22

3-
go 1.13
3+
go 1.15
44

55
require (
66
github.com/blang/semver v3.5.0+incompatible
77
github.com/container-storage-interface/spec v1.0.0
8+
github.com/go-logr/logr v0.2.1 // indirect
89
github.com/golang/protobuf v1.4.2
910
github.com/google/go-cmp v0.5.0
1011
github.com/kubernetes-csi/csi-lib-utils v0.6.1
1112
github.com/kubernetes-csi/csi-test v1.1.0
12-
github.com/onsi/gomega v1.8.1
13-
github.com/pkg/errors v0.9.1 // indirect
14-
github.com/sirupsen/logrus v1.4.2
13+
github.com/onsi/gomega v1.10.1
1514
github.com/stretchr/testify v1.5.1
1615
go.opentelemetry.io/otel v0.4.3
1716
go.opentelemetry.io/otel/exporters/metric/prometheus v0.4.3
18-
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0
17+
golang.org/x/net v0.0.0-20200707034311-ab3426394381
1918
google.golang.org/grpc v1.27.1
2019
google.golang.org/protobuf v1.25.0
21-
k8s.io/api v0.17.2
22-
k8s.io/apimachinery v0.17.2
23-
k8s.io/client-go v0.17.2
24-
k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
25-
sigs.k8s.io/controller-runtime v0.5.5
20+
k8s.io/api v0.19.3
21+
k8s.io/apimachinery v0.19.3
22+
k8s.io/client-go v0.19.3
23+
k8s.io/component-base v0.19.3
24+
k8s.io/klog/v2 v2.3.0
25+
k8s.io/utils v0.0.0-20200729134348-d5654de09c73
26+
sigs.k8s.io/controller-runtime v0.6.3
2627
)

0 commit comments

Comments
 (0)