Skip to content

Commit 8d0dc91

Browse files
authored
Merge pull request kubernetes-sigs#9493 from killianmuldoon/pr-add-debug-logging-clusterclass
🌱 Add log level for kube components patch to ClusterClass
2 parents a3218c4 + c6e270e commit 8d0dc91

File tree

3 files changed

+107
-16
lines changed

3 files changed

+107
-16
lines changed

test/e2e/data/infrastructure-docker/main/cluster-template-topology-dualstack-ipv4-primary/cluster.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ spec:
1111
value: false
1212
- name: externalCloudProvider
1313
value: true
14+
- name: kubeControlPlaneLogLevel
15+
value: "2"
16+
- name: kubeletLogLevel
17+
value: "4"
1418
clusterNetwork:
1519
services:
1620
cidrBlocks:

test/e2e/data/infrastructure-docker/main/cluster-template-topology-dualstack-ipv6-primary/cluster.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ spec:
1111
value: true
1212
- name: externalCloudProvider
1313
value: true
14+
- name: kubeControlPlaneLogLevel
15+
value: "2"
16+
- name: kubeletLogLevel
17+
value: "4"
1418
clusterNetwork:
1519
services:
1620
cidrBlocks:

test/e2e/data/infrastructure-docker/main/clusterclass-quick-start.yaml

Lines changed: 99 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,18 @@ spec:
130130
openAPIV3Schema:
131131
type: boolean
132132
default: false
133+
- name: kubeControlPlaneLogLevel
134+
schema:
135+
openAPIV3Schema:
136+
type: string
137+
description: "Log level for kube-apiserver, kube-scheduler and kube-controller-manager"
138+
example: "2"
139+
- name: kubeletLogLevel
140+
schema:
141+
openAPIV3Schema:
142+
type: string
143+
description: "Log level for kubelets on control plane and worker nodes"
144+
example: "2"
133145
patches:
134146
- name: lbImageRepository
135147
definitions:
@@ -290,13 +302,11 @@ spec:
290302
controlPlane: true
291303
jsonPatches:
292304
- op: add
293-
path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs"
294-
value:
295-
cloud-provider: "external"
305+
path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/cloud-provider"
306+
value: "external"
296307
- op: add
297-
path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs"
298-
value:
299-
cloud-provider: "external"
308+
path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/cloud-provider"
309+
value: "external"
300310
- name: machineDeploymentExternalCloudProvider
301311
enabledIf: "{{ .externalCloudProvider }}"
302312
description: "Configures kubelet to run with an external cloud provider for machineDeployment nodes."
@@ -310,9 +320,8 @@ spec:
310320
- '*-worker'
311321
jsonPatches:
312322
- op: add
313-
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs"
314-
value:
315-
cloud-provider: "external"
323+
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/cloud-provider"
324+
value: "external"
316325
- selector:
317326
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
318327
kind: KubeadmConfigTemplate
@@ -322,9 +331,8 @@ spec:
322331
- '*-worker'
323332
jsonPatches:
324333
- op: add
325-
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs"
326-
value:
327-
cloud-provider: "external"
334+
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/cloud-provider"
335+
value: "external"
328336
- name: localEndpointIPv6
329337
enabledIf: "{{ .ipv6Primary }}"
330338
description: "Configures KCP to use IPv6 for its localAPIEndpoint."
@@ -349,9 +357,8 @@ spec:
349357
controlPlane: true
350358
jsonPatches:
351359
- op: add
352-
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/apiServer/extraArgs"
353-
value:
354-
admission-control-config-file: "/etc/kubernetes/kube-apiserver-admission-pss.yaml"
360+
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/apiServer/extraArgs/admission-control-config-file"
361+
value: "/etc/kubernetes/kube-apiserver-admission-pss.yaml"
355362
- op: add
356363
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/apiServer/extraVolumes"
357364
value:
@@ -385,6 +392,74 @@ spec:
385392
namespaces: [kube-system]
386393
path: /etc/kubernetes/kube-apiserver-admission-pss.yaml
387394
enabledIf: '{{ semverCompare ">= v1.24" .builtin.controlPlane.version }}'
395+
- name: controlPlaneLogLevel
396+
enabledIf: "{{ if .kubeControlPlaneLogLevel }}true{{end}}"
397+
description: "Configures control plane components and kubelet to run at the log level specified in the variable `kubeControlPlaneLogLevel`."
398+
definitions:
399+
- selector:
400+
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
401+
kind: KubeadmControlPlaneTemplate
402+
matchResources:
403+
controlPlane: true
404+
jsonPatches:
405+
- op: add
406+
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/apiServer/extraArgs/v"
407+
valueFrom:
408+
variable: kubeControlPlaneLogLevel
409+
- op: add
410+
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/controllerManager/extraArgs/v"
411+
valueFrom:
412+
variable: kubeControlPlaneLogLevel
413+
- op: add
414+
path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/scheduler/extraArgs/v"
415+
valueFrom:
416+
variable: kubeControlPlaneLogLevel
417+
- name: controlPlaneKubeletLogLevel
418+
enabledIf: "{{ if .kubeletLogLevel }}true{{end}}"
419+
description: "Configures control plane kubelets to log at the level set in the variable `kubeletLogLevel`."
420+
definitions:
421+
- selector:
422+
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
423+
kind: KubeadmControlPlaneTemplate
424+
matchResources:
425+
controlPlane: true
426+
jsonPatches:
427+
- op: add
428+
path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/v"
429+
valueFrom:
430+
variable: kubeletLogLevel
431+
- op: add
432+
path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/v"
433+
valueFrom:
434+
variable: kubeletLogLevel
435+
- name: workerKubeletLogLevel
436+
enabledIf: "{{ if .kubeletLogLevel }}true{{end}}"
437+
description: "Configures worker kubelets to log at the level set in the variable `kubeletLogLevel`."
438+
definitions:
439+
- selector:
440+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
441+
kind: KubeadmConfigTemplate
442+
matchResources:
443+
machineDeploymentClass:
444+
names:
445+
- '*-worker'
446+
jsonPatches:
447+
- op: add
448+
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/v"
449+
valueFrom:
450+
variable: kubeletLogLevel
451+
- selector:
452+
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
453+
kind: KubeadmConfigTemplate
454+
matchResources:
455+
machinePoolClass:
456+
names:
457+
- '*-worker'
458+
jsonPatches:
459+
- op: add
460+
path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/v"
461+
valueFrom:
462+
variable: kubeletLogLevel
388463
---
389464
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
390465
kind: DockerClusterTemplate
@@ -447,9 +522,17 @@ spec:
447522
nodeDrainTimeout: 1s
448523
kubeadmConfigSpec:
449524
clusterConfiguration:
525+
# extraArgs must be non-empty for control plane components to enable patches from ClusterClass to work.
450526
controllerManager:
451-
extraArgs: { enable-hostpath-provisioner: 'true' }
527+
extraArgs:
528+
enable-hostpath-provisioner: 'true'
529+
v: "0"
530+
scheduler:
531+
extraArgs:
532+
v: "0"
452533
apiServer:
534+
extraArgs:
535+
v: "0"
453536
# host.docker.internal is required by kubetest when running on MacOS because of the way ports are proxied.
454537
certSANs: [localhost, host.docker.internal, "::", "::1", "127.0.0.1", "0.0.0.0"]
455538
initConfiguration:

0 commit comments

Comments
 (0)