Merge pull request #113443 from yangjunmyfm192085/namespace-contextual-logging

namespace controller: use contextual logging
This commit is contained in:
Kubernetes Prow Robot
2023-03-13 04:34:44 -07:00
committed by GitHub
7 changed files with 113 additions and 87 deletions

View File

@@ -17,11 +17,13 @@ limitations under the License.
package services
import (
"context"
"os"
"testing"
etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing"
"k8s.io/apiserver/pkg/storage/storagebackend"
"k8s.io/klog/v2/ktesting"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/klog/v2"
@@ -55,6 +57,7 @@ func (es *e2eServices) run(t *testing.T) error {
// start starts the tests embedded services or returns an error.
func (es *e2eServices) start(t *testing.T) error {
_, ctx := ktesting.NewTestContext(t)
klog.Info("Starting e2e services...")
err := es.startEtcd(t)
if err != nil {
@@ -64,7 +67,7 @@ func (es *e2eServices) start(t *testing.T) error {
if err != nil {
return err
}
err = es.startNamespaceController()
err = es.startNamespaceController(ctx)
if err != nil {
return nil
}
@@ -124,10 +127,10 @@ func (es *e2eServices) startAPIServer(etcdStorage *storagebackend.Config) error
}
// startNamespaceController starts the embedded namespace controller or returns an error.
func (es *e2eServices) startNamespaceController() error {
klog.Info("Starting namespace controller")
func (es *e2eServices) startNamespaceController(ctx context.Context) error {
klog.FromContext(ctx).Info("Starting namespace controller")
es.nsController = NewNamespaceController(framework.TestContext.Host)
return es.nsController.Start()
return es.nsController.Start(ctx)
}
// getServicesHealthCheckURLs returns the health check urls for the internal services.

View File

@@ -17,6 +17,7 @@ limitations under the License.
package services
import (
"context"
"time"
v1 "k8s.io/api/core/v1"
@@ -49,7 +50,7 @@ func NewNamespaceController(host string) *NamespaceController {
}
// Start starts the namespace controller.
func (n *NamespaceController) Start() error {
func (n *NamespaceController) Start(ctx context.Context) error {
config := restclient.AddUserAgent(&restclient.Config{
Host: n.host,
BearerToken: framework.TestContext.BearerToken,
@@ -72,7 +73,9 @@ func (n *NamespaceController) Start() error {
}
discoverResourcesFn := client.Discovery().ServerPreferredNamespacedResources
informerFactory := informers.NewSharedInformerFactory(client, ncResyncPeriod)
nc := namespacecontroller.NewNamespaceController(
ctx,
client,
metadataClient,
discoverResourcesFn,
@@ -80,7 +83,7 @@ func (n *NamespaceController) Start() error {
ncResyncPeriod, v1.FinalizerKubernetes,
)
informerFactory.Start(n.stopCh)
go nc.Run(ncConcurrency, n.stopCh)
go nc.Run(ctx, ncConcurrency)
return nil
}

View File

@@ -35,6 +35,7 @@ import (
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/metadata"
restclient "k8s.io/client-go/rest"
"k8s.io/klog/v2/ktesting"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/pkg/controller/namespace"
"k8s.io/kubernetes/test/integration/etcd"
@@ -55,10 +56,12 @@ func TestNamespaceCondition(t *testing.T) {
}
// Start informer and controllers
stopCh := make(chan struct{})
defer close(stopCh)
informers.Start(stopCh)
go nsController.Run(5, stopCh)
_, ctx := ktesting.NewTestContext(t)
ctx, cancel := context.WithCancel(ctx)
defer cancel()
informers.Start(ctx.Done())
go nsController.Run(ctx, 5)
data := etcd.GetEtcdStorageDataForNamespace(nsName)
podJSON, err := jsonToUnstructured(data[corev1.SchemeGroupVersion.WithResource("pods")].Stub, "v1", "Pod")
@@ -124,9 +127,10 @@ func TestNamespaceLabels(t *testing.T) {
// Even though nscontroller isn't used in this test, its creation is already
// spawning some goroutines. So we need to run it to ensure they won't leak.
stopCh := make(chan struct{})
close(stopCh)
go nsController.Run(5, stopCh)
_, ctx := ktesting.NewTestContext(t)
ctx, cancel := context.WithCancel(ctx)
defer cancel()
go nsController.Run(ctx, 5)
nsName := "test-namespace-labels-generated"
// Create a new namespace w/ no name
@@ -192,8 +196,9 @@ func namespaceLifecycleSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *
}
discoverResourcesFn := clientSet.Discovery().ServerPreferredNamespacedResources
_, ctx := ktesting.NewTestContext(t)
controller := namespace.NewNamespaceController(
ctx,
clientSet,
metadataClient,
discoverResourcesFn,