Skip to content

Commit f51896c

Browse files
authored
feat: pod probes support (#302)
* feat(deps): upgrading kamaji for probes support Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> * feat(deps): upgrading k8s to v0.35.1 Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> * feat: pod probes support Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> --------- Signed-off-by: Dario Tranchitella <dario@tranchitella.eu>
1 parent 3502472 commit f51896c

8 files changed

Lines changed: 1779 additions & 28 deletions

api/v1alpha1/kamajicontrolplane_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ type ControlPlaneComponent struct {
2020
// With no value, the default images will be used.
2121
// +kubebuilder:validation:MinLength=1
2222
ContainerImageName string `json:"containerImageName,omitempty"`
23+
// Probes defines per-probe-type configuration.
24+
Probes *kamajiv1alpha1.ProbeSet `json:"probes,omitempty"`
2325
}
2426

2527
// KineComponent allows the customization for the kine component of the control plane.
@@ -159,6 +161,10 @@ type DeploymentComponent struct {
159161
// When this value is nil, the Cluster API management cluster will be used as a target.
160162
// The ExternalClusterReference feature gate must be enabled with one of the available flags.
161163
ExternalClusterReference *ExternalClusterReference `json:"externalClusterReference,omitempty"`
164+
// Probes defines probe configuration for Control Plane components.
165+
// Global probe settings (Liveness, Readiness, Startup) apply to all components.
166+
// Control Plane Component customisation has priority over these.
167+
Probes *kamajiv1alpha1.ProbeSet `json:"probes,omitempty"`
162168
}
163169

164170
type KamajiControlPlaneFields struct {

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/control-plane-components.yaml

Lines changed: 782 additions & 0 deletions
Large diffs are not rendered by default.

config/crd/bases/controlplane.cluster.x-k8s.io_kamajicontrolplanes.yaml

Lines changed: 459 additions & 0 deletions
Large diffs are not rendered by default.

config/crd/bases/controlplane.cluster.x-k8s.io_kamajicontrolplanetemplates.yaml

Lines changed: 475 additions & 0 deletions
Large diffs are not rendered by default.

controllers/kamajicontrolplane_controller_tcp.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,25 @@ func (r *KamajiControlPlaneReconciler) createOrUpdateTenantControlPlane(ctx cont
239239
tcp.Spec.ControlPlane.Deployment.AdditionalContainers = kcp.Spec.Deployment.ExtraContainers
240240
tcp.Spec.ControlPlane.Deployment.AdditionalVolumes = kcp.Spec.Deployment.ExtraVolumes
241241

242+
if kcp.Spec.Deployment.Probes == nil ||
243+
kcp.Spec.ApiServer.Probes == nil ||
244+
kcp.Spec.ControllerManager.Probes == nil ||
245+
kcp.Spec.Scheduler.Probes == nil {
246+
tcp.Spec.ControlPlane.Deployment.Probes = nil
247+
} else {
248+
tcp.Spec.ControlPlane.Deployment.Probes = &kamajiv1alpha1.ControlPlaneProbes{
249+
APIServer: kcp.Spec.ApiServer.Probes,
250+
ControllerManager: kcp.Spec.ControllerManager.Probes,
251+
Scheduler: kcp.Spec.Scheduler.Probes,
252+
}
253+
254+
if kcp.Spec.Deployment.Probes != nil {
255+
tcp.Spec.ControlPlane.Deployment.Probes.Liveness = kcp.Spec.Deployment.Probes.Liveness
256+
tcp.Spec.ControlPlane.Deployment.Probes.Readiness = kcp.Spec.Deployment.Probes.Readiness
257+
tcp.Spec.ControlPlane.Deployment.Probes.Startup = kcp.Spec.Deployment.Probes.Startup
258+
}
259+
}
260+
242261
if !isDelegatedExternally {
243262
return controllerutil.SetControllerReference(&kcp, tcp, k8sClient.Scheme())
244263
}

go.mod

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@ module github.com/clastix/cluster-api-control-plane-provider-kamaji
33
go 1.25.0
44

55
require (
6-
github.com/clastix/kamaji v1.0.1-0.20260213104829-830d56dac1c3
6+
github.com/clastix/kamaji v1.0.1-0.20260224152006-69d62273c2c4
77
github.com/onsi/ginkgo/v2 v2.28.1
88
github.com/onsi/gomega v1.39.1
99
github.com/pkg/errors v0.9.1
1010
github.com/spf13/pflag v1.0.10
11-
k8s.io/api v0.35.0
12-
k8s.io/apimachinery v0.35.0
13-
k8s.io/client-go v0.35.0
14-
k8s.io/component-base v0.35.0
15-
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
11+
k8s.io/api v0.35.1
12+
k8s.io/apimachinery v0.35.1
13+
k8s.io/client-go v0.35.1
14+
k8s.io/component-base v0.35.1
15+
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2
1616
sigs.k8s.io/cluster-api v1.10.4
17-
sigs.k8s.io/controller-runtime v0.22.4
17+
sigs.k8s.io/controller-runtime v0.23.1
18+
sigs.k8s.io/gateway-api v1.4.1
1819
)
1920

2021
require (
@@ -94,15 +95,14 @@ require (
9495
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
9596
gopkg.in/inf.v0 v0.9.1 // indirect
9697
gopkg.in/yaml.v3 v3.0.1 // indirect
97-
k8s.io/apiextensions-apiserver v0.34.1 // indirect
98+
k8s.io/apiextensions-apiserver v0.35.0 // indirect
9899
k8s.io/apiserver v0.35.0 // indirect
99100
k8s.io/klog/v2 v2.130.1 // indirect
100101
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
101102
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect
102-
sigs.k8s.io/gateway-api v1.4.1 // indirect
103103
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
104104
sigs.k8s.io/randfill v1.0.0 // indirect
105-
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
105+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
106106
sigs.k8s.io/yaml v1.6.0 // indirect
107107
)
108108

go.sum

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3
2323
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
2424
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
2525
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
26-
github.com/clastix/kamaji v1.0.1-0.20260213104829-830d56dac1c3 h1:rZvYuyx+NHuwlOCu0hFCCVsQJVppB50MEI8GHFVrWo8=
27-
github.com/clastix/kamaji v1.0.1-0.20260213104829-830d56dac1c3/go.mod h1:rB9vKpACPpjkttFSt8GWCIxilyEQlW0ChWg94sLG+bY=
26+
github.com/clastix/kamaji v1.0.1-0.20260224152006-69d62273c2c4 h1:jZRH3bUie8f/en0ixa4Z/H+7M+SVBie8G9O96VaW4HI=
27+
github.com/clastix/kamaji v1.0.1-0.20260224152006-69d62273c2c4/go.mod h1:AlMZ31fqKypyDWoVOap5cD6blLX2sRPb3OqMNS4XHkE=
2828
github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0=
2929
github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
3030
github.com/coredns/corefile-migration v1.0.29 h1:g4cPYMXXDDs9uLE2gFYrJaPBuUAR07eEMGyh9JBE13w=
@@ -102,8 +102,8 @@ github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE
102102
github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung=
103103
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
104104
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
105-
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
106-
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
105+
github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk=
106+
github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
107107
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
108108
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
109109
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -256,39 +256,39 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
256256
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
257257
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
258258
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
259-
k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
260-
k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
259+
k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q=
260+
k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM=
261261
k8s.io/apiextensions-apiserver v0.35.0 h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4=
262262
k8s.io/apiextensions-apiserver v0.35.0/go.mod h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU=
263-
k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
264-
k8s.io/apimachinery v0.35.0/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
263+
k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU=
264+
k8s.io/apimachinery v0.35.1/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
265265
k8s.io/apiserver v0.35.0 h1:CUGo5o+7hW9GcAEF3x3usT3fX4f9r8xmgQeCBDaOgX4=
266266
k8s.io/apiserver v0.35.0/go.mod h1:QUy1U4+PrzbJaM3XGu2tQ7U9A4udRRo5cyxkFX0GEds=
267-
k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE=
268-
k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o=
267+
k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM=
268+
k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA=
269269
k8s.io/cluster-bootstrap v0.35.0 h1:VXnil8zw+FikqvytJYLB8wcvjxbUCyqMkiC//k426Y0=
270270
k8s.io/cluster-bootstrap v0.35.0/go.mod h1:X6sjEjVUFSfFNIzJ6VAIuwwh2QiDtsVX1xZgcGX4gD8=
271-
k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94=
272-
k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0=
271+
k8s.io/component-base v0.35.1 h1:XgvpRf4srp037QWfGBLFsYMUQJkE5yMa94UsJU7pmcE=
272+
k8s.io/component-base v0.35.1/go.mod h1:HI/6jXlwkiOL5zL9bqA3en1Ygv60F03oEpnuU1G56Bs=
273273
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
274274
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
275275
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
276276
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
277-
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=
278-
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
277+
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU=
278+
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
279279
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
280280
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
281281
sigs.k8s.io/cluster-api v1.10.4 h1:5mdyWLGbbwOowWrjqM/J9N600QnxTohu5J1/1YR6g7c=
282282
sigs.k8s.io/cluster-api v1.10.4/go.mod h1:68GJs286ZChsncp+TxYNj/vhy2NWokiPtH4+SA0afs0=
283-
sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
284-
sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
283+
sigs.k8s.io/controller-runtime v0.23.1 h1:TjJSM80Nf43Mg21+RCy3J70aj/W6KyvDtOlpKf+PupE=
284+
sigs.k8s.io/controller-runtime v0.23.1/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0=
285285
sigs.k8s.io/gateway-api v1.4.1 h1:NPxFutNkKNa8UfLd2CMlEuhIPMQgDQ6DXNKG9sHbJU8=
286286
sigs.k8s.io/gateway-api v1.4.1/go.mod h1:AR5RSqciWP98OPckEjOjh2XJhAe2Na4LHyXD2FUY7Qk=
287287
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
288288
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
289289
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
290290
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
291-
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
292-
sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
291+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs=
292+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
293293
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
294294
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=

0 commit comments

Comments
 (0)