Skip to content

Commit 49b88f1

Browse files
committed
kubelet: migrate clustertrustbundle, token to contextual logging
Signed-off-by: Oksana Baranova <[email protected]>
1 parent 5f594f4 commit 49b88f1

File tree

9 files changed

+39
-17
lines changed

9 files changed

+39
-17
lines changed

hack/golangci-hints.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ linters-settings: # please keep this alphabetized
165165
contextual k8s.io/kubernetes/test/e2e/dra/.*
166166
contextual k8s.io/kubernetes/pkg/kubelet/cm/dra/.*
167167
contextual k8s.io/kubernetes/pkg/kubelet/pleg/.*
168+
contextual k8s.io/kubernetes/pkg/kubelet/clustertrustbundle/.*
169+
contextual k8s.io/kubernetes/pkg/kubelet/token/.*
168170
169171
# As long as contextual logging is alpha or beta, all WithName, WithValues,
170172
# NewContext calls have to go through klog. Once it is GA, we can lift

hack/golangci-strict.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ linters-settings: # please keep this alphabetized
211211
contextual k8s.io/kubernetes/test/e2e/dra/.*
212212
contextual k8s.io/kubernetes/pkg/kubelet/cm/dra/.*
213213
contextual k8s.io/kubernetes/pkg/kubelet/pleg/.*
214+
contextual k8s.io/kubernetes/pkg/kubelet/clustertrustbundle/.*
215+
contextual k8s.io/kubernetes/pkg/kubelet/token/.*
214216
215217
# As long as contextual logging is alpha or beta, all WithName, WithValues,
216218
# NewContext calls have to go through klog. Once it is GA, we can lift

hack/golangci.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ linters-settings: # please keep this alphabetized
213213
contextual k8s.io/kubernetes/test/e2e/dra/.*
214214
contextual k8s.io/kubernetes/pkg/kubelet/cm/dra/.*
215215
contextual k8s.io/kubernetes/pkg/kubelet/pleg/.*
216+
contextual k8s.io/kubernetes/pkg/kubelet/clustertrustbundle/.*
217+
contextual k8s.io/kubernetes/pkg/kubelet/token/.*
216218
217219
# As long as contextual logging is alpha or beta, all WithName, WithValues,
218220
# NewContext calls have to go through klog. Once it is GA, we can lift

hack/logcheck.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ contextual k8s.io/kubernetes/pkg/scheduler/.*
4949
contextual k8s.io/kubernetes/test/e2e/dra/.*
5050
contextual k8s.io/kubernetes/pkg/kubelet/cm/dra/.*
5151
contextual k8s.io/kubernetes/pkg/kubelet/pleg/.*
52+
contextual k8s.io/kubernetes/pkg/kubelet/clustertrustbundle/.*
53+
contextual k8s.io/kubernetes/pkg/kubelet/token/.*
5254

5355
# As long as contextual logging is alpha or beta, all WithName, WithValues,
5456
# NewContext calls have to go through klog. Once it is GA, we can lift

pkg/kubelet/clustertrustbundle/clustertrustbundle_manager.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ limitations under the License.
1919
package clustertrustbundle
2020

2121
import (
22+
"context"
2223
"encoding/pem"
2324
"fmt"
2425
"math/rand"
@@ -58,7 +59,7 @@ type InformerManager struct {
5859
var _ Manager = (*InformerManager)(nil)
5960

6061
// NewInformerManager returns an initialized InformerManager.
61-
func NewInformerManager(bundles certinformersv1alpha1.ClusterTrustBundleInformer, cacheSize int, cacheTTL time.Duration) (*InformerManager, error) {
62+
func NewInformerManager(ctx context.Context, bundles certinformersv1alpha1.ClusterTrustBundleInformer, cacheSize int, cacheTTL time.Duration) (*InformerManager, error) {
6263
// We need to call Informer() before calling start on the shared informer
6364
// factory, or the informer won't be registered to be started.
6465
m := &InformerManager{
@@ -68,6 +69,7 @@ func NewInformerManager(bundles certinformersv1alpha1.ClusterTrustBundleInformer
6869
cacheTTL: cacheTTL,
6970
}
7071

72+
logger := klog.FromContext(ctx)
7173
// Have the informer bust cache entries when it sees updates that could
7274
// apply to them.
7375
_, err := m.ctbInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -76,15 +78,15 @@ func NewInformerManager(bundles certinformersv1alpha1.ClusterTrustBundleInformer
7678
if !ok {
7779
return
7880
}
79-
klog.InfoS("Dropping all cache entries for signer", "signerName", ctb.Spec.SignerName)
81+
logger.Info("Dropping all cache entries for signer", "signerName", ctb.Spec.SignerName)
8082
m.dropCacheFor(ctb)
8183
},
8284
UpdateFunc: func(old, new any) {
8385
ctb, ok := new.(*certificatesv1alpha1.ClusterTrustBundle)
8486
if !ok {
8587
return
8688
}
87-
klog.InfoS("Dropping cache for ClusterTrustBundle", "signerName", ctb.Spec.SignerName)
89+
logger.Info("Dropping cache for ClusterTrustBundle", "signerName", ctb.Spec.SignerName)
8890
m.dropCacheFor(new.(*certificatesv1alpha1.ClusterTrustBundle))
8991
},
9092
DeleteFunc: func(obj any) {
@@ -99,7 +101,7 @@ func NewInformerManager(bundles certinformersv1alpha1.ClusterTrustBundleInformer
99101
return
100102
}
101103
}
102-
klog.InfoS("Dropping cache for ClusterTrustBundle", "signerName", ctb.Spec.SignerName)
104+
logger.Info("Dropping cache for ClusterTrustBundle", "signerName", ctb.Spec.SignerName)
103105
m.dropCacheFor(ctb)
104106
},
105107
})

pkg/kubelet/clustertrustbundle/clustertrustbundle_manager_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,17 @@ import (
3737
"k8s.io/client-go/informers"
3838
"k8s.io/client-go/kubernetes/fake"
3939
"k8s.io/client-go/tools/cache"
40+
"k8s.io/kubernetes/test/utils/ktesting"
4041
)
4142

4243
func TestBeforeSynced(t *testing.T) {
44+
tCtx := ktesting.Init(t)
4345
kc := fake.NewSimpleClientset()
4446

4547
informerFactory := informers.NewSharedInformerFactoryWithOptions(kc, 0)
4648

4749
ctbInformer := informerFactory.Certificates().V1alpha1().ClusterTrustBundles()
48-
ctbManager, _ := NewInformerManager(ctbInformer, 256, 5*time.Minute)
50+
ctbManager, _ := NewInformerManager(tCtx, ctbInformer, 256, 5*time.Minute)
4951

5052
_, err := ctbManager.GetTrustAnchorsByName("foo", false)
5153
if err == nil {
@@ -55,6 +57,7 @@ func TestBeforeSynced(t *testing.T) {
5557

5658
func TestGetTrustAnchorsByName(t *testing.T) {
5759
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
60+
tCtx := ktesting.Init(t)
5861
defer cancel()
5962

6063
ctb1 := &certificatesv1alpha1.ClusterTrustBundle{
@@ -80,7 +83,7 @@ func TestGetTrustAnchorsByName(t *testing.T) {
8083
informerFactory := informers.NewSharedInformerFactoryWithOptions(kc, 0)
8184

8285
ctbInformer := informerFactory.Certificates().V1alpha1().ClusterTrustBundles()
83-
ctbManager, _ := NewInformerManager(ctbInformer, 256, 5*time.Minute)
86+
ctbManager, _ := NewInformerManager(tCtx, ctbInformer, 256, 5*time.Minute)
8487

8588
informerFactory.Start(ctx.Done())
8689
if !cache.WaitForCacheSync(ctx.Done(), ctbInformer.Informer().HasSynced) {
@@ -117,7 +120,8 @@ func TestGetTrustAnchorsByName(t *testing.T) {
117120
}
118121

119122
func TestGetTrustAnchorsByNameCaching(t *testing.T) {
120-
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
123+
tCtx := ktesting.Init(t)
124+
ctx, cancel := context.WithTimeout(tCtx, 20*time.Second)
121125
defer cancel()
122126

123127
ctb1 := &certificatesv1alpha1.ClusterTrustBundle{
@@ -143,7 +147,7 @@ func TestGetTrustAnchorsByNameCaching(t *testing.T) {
143147
informerFactory := informers.NewSharedInformerFactoryWithOptions(kc, 0)
144148

145149
ctbInformer := informerFactory.Certificates().V1alpha1().ClusterTrustBundles()
146-
ctbManager, _ := NewInformerManager(ctbInformer, 256, 5*time.Minute)
150+
ctbManager, _ := NewInformerManager(tCtx, ctbInformer, 256, 5*time.Minute)
147151

148152
informerFactory.Start(ctx.Done())
149153
if !cache.WaitForCacheSync(ctx.Done(), ctbInformer.Informer().HasSynced) {
@@ -204,6 +208,7 @@ func TestGetTrustAnchorsByNameCaching(t *testing.T) {
204208

205209
func TestGetTrustAnchorsBySignerName(t *testing.T) {
206210
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
211+
tCtx := ktesting.Init(t)
207212
defer cancel()
208213

209214
ctb1 := mustMakeCTB("signer-a-label-a-1", "foo.bar/a", map[string]string{"label": "a"}, mustMakeRoot(t, "0"))
@@ -217,7 +222,7 @@ func TestGetTrustAnchorsBySignerName(t *testing.T) {
217222
informerFactory := informers.NewSharedInformerFactoryWithOptions(kc, 0)
218223

219224
ctbInformer := informerFactory.Certificates().V1alpha1().ClusterTrustBundles()
220-
ctbManager, _ := NewInformerManager(ctbInformer, 256, 5*time.Minute)
225+
ctbManager, _ := NewInformerManager(tCtx, ctbInformer, 256, 5*time.Minute)
221226

222227
informerFactory.Start(ctx.Done())
223228
if !cache.WaitForCacheSync(ctx.Done(), ctbInformer.Informer().HasSynced) {
@@ -319,7 +324,8 @@ func TestGetTrustAnchorsBySignerName(t *testing.T) {
319324
}
320325

321326
func TestGetTrustAnchorsBySignerNameCaching(t *testing.T) {
322-
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
327+
tCtx := ktesting.Init(t)
328+
ctx, cancel := context.WithTimeout(tCtx, 20*time.Second)
323329
defer cancel()
324330

325331
ctb1 := mustMakeCTB("signer-a-label-a-1", "foo.bar/a", map[string]string{"label": "a"}, mustMakeRoot(t, "0"))
@@ -330,7 +336,7 @@ func TestGetTrustAnchorsBySignerNameCaching(t *testing.T) {
330336
informerFactory := informers.NewSharedInformerFactoryWithOptions(kc, 0)
331337

332338
ctbInformer := informerFactory.Certificates().V1alpha1().ClusterTrustBundles()
333-
ctbManager, _ := NewInformerManager(ctbInformer, 256, 5*time.Minute)
339+
ctbManager, _ := NewInformerManager(tCtx, ctbInformer, 256, 5*time.Minute)
334340

335341
informerFactory.Start(ctx.Done())
336342
if !cache.WaitForCacheSync(ctx.Done(), ctbInformer.Informer().HasSynced) {

pkg/kubelet/kubelet.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
827827
var clusterTrustBundleManager clustertrustbundle.Manager
828828
if kubeDeps.KubeClient != nil && utilfeature.DefaultFeatureGate.Enabled(features.ClusterTrustBundleProjection) {
829829
kubeInformers := informers.NewSharedInformerFactoryWithOptions(kubeDeps.KubeClient, 0)
830-
clusterTrustBundleManager, err = clustertrustbundle.NewInformerManager(kubeInformers.Certificates().V1alpha1().ClusterTrustBundles(), 2*int(kubeCfg.MaxPods), 5*time.Minute)
830+
clusterTrustBundleManager, err = clustertrustbundle.NewInformerManager(ctx, kubeInformers.Certificates().V1alpha1().ClusterTrustBundles(), 2*int(kubeCfg.MaxPods), 5*time.Minute)
831831
if err != nil {
832832
return nil, fmt.Errorf("while starting informer-based ClusterTrustBundle manager: %w", err)
833833
}

pkg/kubelet/token/token_manager.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,13 @@ type Manager struct {
102102
// * If refresh fails and the old token is still valid, log an error and return the old token.
103103
// * If refresh fails and the old token is no longer valid, return an error
104104
func (m *Manager) GetServiceAccountToken(namespace, name string, tr *authenticationv1.TokenRequest) (*authenticationv1.TokenRequest, error) {
105+
// TODO: pass ctx to GetServiceAccountToken after switching pkg/volume to contextual logging
106+
ctx := context.TODO()
105107
key := keyFunc(name, namespace, tr)
106108

107109
ctr, ok := m.get(key)
108110

109-
if ok && !m.requiresRefresh(ctr) {
111+
if ok && !m.requiresRefresh(ctx, ctr) {
110112
return ctr, nil
111113
}
112114

@@ -118,7 +120,8 @@ func (m *Manager) GetServiceAccountToken(namespace, name string, tr *authenticat
118120
case m.expired(ctr):
119121
return nil, fmt.Errorf("token %s expired and refresh failed: %v", key, err)
120122
default:
121-
klog.ErrorS(err, "Couldn't update token", "cacheKey", key)
123+
logger := klog.FromContext(ctx)
124+
logger.Error(err, "Couldn't update token", "cacheKey", key)
122125
return ctr, nil
123126
}
124127
}
@@ -168,11 +171,12 @@ func (m *Manager) expired(t *authenticationv1.TokenRequest) bool {
168171

169172
// requiresRefresh returns true if the token is older than 80% of its total
170173
// ttl, or if the token is older than 24 hours.
171-
func (m *Manager) requiresRefresh(tr *authenticationv1.TokenRequest) bool {
174+
func (m *Manager) requiresRefresh(ctx context.Context, tr *authenticationv1.TokenRequest) bool {
172175
if tr.Spec.ExpirationSeconds == nil {
173176
cpy := tr.DeepCopy()
174177
cpy.Status.Token = ""
175-
klog.ErrorS(nil, "Expiration seconds was nil for token request", "tokenRequest", cpy)
178+
logger := klog.FromContext(ctx)
179+
logger.Error(nil, "Expiration seconds was nil for token request", "tokenRequest", cpy)
176180
return false
177181
}
178182
now := m.clock.Now()

pkg/kubelet/token/token_manager_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
authenticationv1 "k8s.io/api/authentication/v1"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
"k8s.io/apimachinery/pkg/types"
27+
"k8s.io/kubernetes/test/utils/ktesting"
2728
testingclock "k8s.io/utils/clock/testing"
2829
)
2930

@@ -126,6 +127,7 @@ func TestTokenCachingAndExpiration(t *testing.T) {
126127
}
127128

128129
func TestRequiresRefresh(t *testing.T) {
130+
tCtx := ktesting.Init(t)
129131
start := time.Now()
130132
cases := []struct {
131133
now, exp time.Time
@@ -183,7 +185,7 @@ func TestRequiresRefresh(t *testing.T) {
183185
mgr := NewManager(nil)
184186
mgr.clock = clock
185187

186-
rr := mgr.requiresRefresh(tr)
188+
rr := mgr.requiresRefresh(tCtx, tr)
187189
if rr != c.expectRefresh {
188190
t.Fatalf("unexpected requiresRefresh result, got: %v, want: %v", rr, c.expectRefresh)
189191
}

0 commit comments

Comments
 (0)