...

Source file src/k8s.io/kubernetes/pkg/kubelet/apis/config/fuzzer/fuzzer.go

Documentation: k8s.io/kubernetes/pkg/kubelet/apis/config/fuzzer

     1  /*
     2  Copyright 2017 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package fuzzer
    18  
    19  import (
    20  	"math/rand"
    21  	"time"
    22  
    23  	fuzz "github.com/google/gofuzz"
    24  
    25  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    26  	runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
    27  	"k8s.io/kubelet/config/v1beta1"
    28  	"k8s.io/kubernetes/pkg/cluster/ports"
    29  	kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
    30  	kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1"
    31  	"k8s.io/kubernetes/pkg/kubelet/eviction"
    32  	"k8s.io/kubernetes/pkg/kubelet/qos"
    33  	kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
    34  	utilpointer "k8s.io/utils/pointer"
    35  )
    36  
    37  // Funcs returns the fuzzer functions for the kubeletconfig apis.
    38  func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
    39  	return []interface{}{
    40  		// provide non-empty values for fields with defaults, so the defaulter doesn't change values during round-trip
    41  		func(obj *kubeletconfig.KubeletConfiguration, c fuzz.Continue) {
    42  			c.FuzzNoCustom(obj)
    43  			obj.EnableServer = true
    44  			obj.Authentication.Anonymous.Enabled = true
    45  			obj.Authentication.Webhook.Enabled = false
    46  			obj.Authentication.Webhook.CacheTTL = metav1.Duration{Duration: 2 * time.Minute}
    47  			obj.Authorization.Mode = kubeletconfig.KubeletAuthorizationModeAlwaysAllow
    48  			obj.Authorization.Webhook.CacheAuthorizedTTL = metav1.Duration{Duration: 5 * time.Minute}
    49  			obj.Authorization.Webhook.CacheUnauthorizedTTL = metav1.Duration{Duration: 30 * time.Second}
    50  			obj.Address = "0.0.0.0"
    51  			obj.VolumeStatsAggPeriod = metav1.Duration{Duration: time.Minute}
    52  			obj.RuntimeRequestTimeout = metav1.Duration{Duration: 2 * time.Minute}
    53  			obj.CPUCFSQuota = true
    54  			obj.EventBurst = 10
    55  			obj.EventRecordQPS = 5
    56  			obj.EnableControllerAttachDetach = true
    57  			obj.EnableDebuggingHandlers = true
    58  			obj.EnableSystemLogQuery = false
    59  			obj.FileCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
    60  			obj.HealthzBindAddress = "127.0.0.1"
    61  			obj.HealthzPort = 10248
    62  			obj.HTTPCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
    63  			obj.ImageMinimumGCAge = metav1.Duration{Duration: 2 * time.Minute}
    64  			obj.ImageMaximumGCAge = metav1.Duration{}
    65  			obj.ImageGCHighThresholdPercent = 85
    66  			obj.ImageGCLowThresholdPercent = 80
    67  			obj.KernelMemcgNotification = false
    68  			obj.MaxOpenFiles = 1000000
    69  			obj.MaxPods = 110
    70  			obj.MemoryManagerPolicy = v1beta1.NoneMemoryManagerPolicy
    71  			obj.PodPidsLimit = -1
    72  			obj.NodeStatusUpdateFrequency = metav1.Duration{Duration: 10 * time.Second}
    73  			obj.NodeStatusReportFrequency = metav1.Duration{Duration: time.Minute}
    74  			obj.NodeLeaseDurationSeconds = 40
    75  			obj.CPUManagerPolicy = "none"
    76  			obj.CPUManagerPolicyOptions = make(map[string]string)
    77  			obj.CPUManagerReconcilePeriod = obj.NodeStatusUpdateFrequency
    78  			obj.NodeStatusMaxImages = 50
    79  			obj.TopologyManagerPolicy = kubeletconfig.NoneTopologyManagerPolicy
    80  			obj.TopologyManagerScope = kubeletconfig.ContainerTopologyManagerScope
    81  			obj.TopologyManagerPolicyOptions = make(map[string]string)
    82  			obj.QOSReserved = map[string]string{
    83  				"memory": "50%",
    84  			}
    85  			obj.OOMScoreAdj = int32(qos.KubeletOOMScoreAdj)
    86  			obj.PodLogsDir = "/var/log/pods"
    87  			obj.Port = ports.KubeletPort
    88  			obj.ReadOnlyPort = ports.KubeletReadOnlyPort
    89  			obj.RegistryBurst = 10
    90  			obj.RegistryPullQPS = 5
    91  			obj.ResolverConfig = kubetypes.ResolvConfDefault
    92  			obj.SerializeImagePulls = true
    93  			obj.StreamingConnectionIdleTimeout = metav1.Duration{Duration: 4 * time.Hour}
    94  			obj.SyncFrequency = metav1.Duration{Duration: 1 * time.Minute}
    95  			obj.ContentType = "application/vnd.kubernetes.protobuf"
    96  			obj.KubeAPIQPS = 50
    97  			obj.KubeAPIBurst = 100
    98  			obj.HairpinMode = v1beta1.PromiscuousBridge
    99  			obj.EvictionHard = eviction.DefaultEvictionHard
   100  			obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
   101  			obj.MakeIPTablesUtilChains = true
   102  			obj.IPTablesMasqueradeBit = kubeletconfigv1beta1.DefaultIPTablesMasqueradeBit
   103  			obj.IPTablesDropBit = kubeletconfigv1beta1.DefaultIPTablesDropBit
   104  			obj.CgroupsPerQOS = true
   105  			obj.CgroupDriver = "cgroupfs"
   106  			obj.EnforceNodeAllocatable = kubeletconfigv1beta1.DefaultNodeAllocatableEnforcement
   107  			obj.StaticPodURLHeader = make(map[string][]string)
   108  			obj.ContainerLogMaxFiles = 5
   109  			obj.ContainerLogMaxSize = "10Mi"
   110  			obj.ContainerLogMaxWorkers = 1
   111  			obj.ContainerLogMonitorInterval = metav1.Duration{Duration: 10 * time.Second}
   112  			obj.ConfigMapAndSecretChangeDetectionStrategy = "Watch"
   113  			obj.AllowedUnsafeSysctls = []string{}
   114  			obj.VolumePluginDir = kubeletconfigv1beta1.DefaultVolumePluginDir
   115  			obj.ContainerRuntimeEndpoint = "unix:///run/containerd/containerd.sock"
   116  
   117  			if obj.Logging.Format == "" {
   118  				obj.Logging.Format = "text"
   119  			}
   120  			obj.EnableSystemLogHandler = true
   121  			obj.MemoryThrottlingFactor = utilpointer.Float64(rand.Float64())
   122  			obj.LocalStorageCapacityIsolation = true
   123  		},
   124  	}
   125  }
   126  

View as plain text