Skip to content

Commit 8f87eff

Browse files
committed
feat(valuesprovider.go): add isShoot method to determine cluster type
1 parent a74cf91 commit 8f87eff

File tree

4 files changed

+27
-15
lines changed

4 files changed

+27
-15
lines changed

charts/internal/shoot-system-components/charts/stackit-pod-identity-webhook/templates/mutatingwebhookconfiguration.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ webhooks:
2727
operator: NotIn
2828
values: ["kube-system", "garden"]
2929
- key: gardener.cloud/role
30-
operator: Exists
30+
operator: DoesNotExist
3131
- key: workload-identity.stackit.cloud/skip-pod-identity-webhook
3232
operator: DoesNotExist
3333
objectSelector:

charts/internal/shoot-system-components/charts/stackit-pod-identity-webhook/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
enabled: true
12
webhook:
23
caBundle: "" # will be set by valuesprovider
34
# failurePolicy for the webhook (Ignore or Fail).

pkg/controller/controlplane/valuesprovider.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
secretsmanager "github.com/gardener/gardener/pkg/utils/secrets/manager"
3030
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
3131
appsv1 "k8s.io/api/apps/v1"
32+
v1 "k8s.io/api/apps/v1"
3233
corev1 "k8s.io/api/core/v1"
3334
networkingv1 "k8s.io/api/networking/v1"
3435
policyv1 "k8s.io/api/policy/v1"
@@ -56,8 +57,8 @@ import (
5657
)
5758

5859
const (
59-
caNameControlPlane = "ca-" + openstack.Name + "-controlplane"
60-
cloudControllerManagerServerName = openstack.CloudControllerManagerName + "-server"
60+
caNameControlPlane = "ca-" + openstack.Name + "-controlplane"
61+
cloudControllerManagerServerName = openstack.CloudControllerManagerName + "-server"
6162
stackitPodIdentityWebhookServerName = stackit.STACKITPodIdentityWebhookName + "-server"
6263

6364
CSIStackitPrefix = "stackit-blockstorage"
@@ -367,6 +368,12 @@ type valuesProvider struct {
367368
customLabelDomain string
368369
}
369370

371+
// isShoot returns if the cluster is a shoot or a seed by checking if the gardenlet is present in cluster
372+
func (vp *valuesProvider) isShoot(ctx context.Context, cluster *extensionscontroller.Cluster) bool {
373+
err := vp.client.Get(ctx, k8sclient.ObjectKey{Name: "gardenlet", Namespace: "garden"}, &v1.Deployment{})
374+
return errors.IsNotFound(err)
375+
}
376+
370377
// GetConfigChartValues returns the values for the config chart applied by the generic actuator.
371378
func (vp *valuesProvider) GetConfigChartValues(
372379
ctx context.Context,
@@ -751,7 +758,7 @@ func (vp *valuesProvider) getControlPlaneChartValues(ctx context.Context, cpConf
751758
},
752759
openstack.CloudControllerManagerName: ccm,
753760
openstack.STACKITCloudControllerManagerName: stackitccm,
754-
stackit.STACKITPodIdentityWebhookName: podIdentityWebhook,
761+
stackit.STACKITPodIdentityWebhookName: podIdentityWebhook,
755762
})
756763

757764
if vp.deployALBIngressController {
@@ -1076,13 +1083,14 @@ func (vp *valuesProvider) getControlPlaneShootChartValues(ctx context.Context, c
10761083
return nil, err
10771084
}
10781085

1079-
podIdentityWebhook, err := getSTACKITPodIdentityWebhookShootChartValues(cp.Namespace, secretsReader)
1086+
isShoot := vp.isShoot(ctx, cluster)
1087+
podIdentityWebhook, err := vp.getSTACKITPodIdentityWebhookShootChartValues(isShoot, secretsReader)
10801088
if err != nil {
10811089
return nil, err
10821090
}
10831091

10841092
maps.Copy(values, map[string]any{
1085-
openstack.CloudControllerManagerName: map[string]any{"enabled": true},
1093+
openstack.CloudControllerManagerName: map[string]any{"enabled": true},
10861094
stackit.STACKITPodIdentityWebhookName: podIdentityWebhook,
10871095
})
10881096

@@ -1310,8 +1318,8 @@ func getSTACKITPodIdentityWebhookChartValues(
13101318
}, nil
13111319
}
13121320

1313-
func getSTACKITPodIdentityWebhookShootChartValues(
1314-
namespace string,
1321+
func (vp *valuesProvider) getSTACKITPodIdentityWebhookShootChartValues(
1322+
isShoot bool,
13151323
secretsReader secretsmanager.Reader,
13161324
) (map[string]any, error) {
13171325
caSecret, found := secretsReader.Get(caNameControlPlane)
@@ -1320,8 +1328,9 @@ func getSTACKITPodIdentityWebhookShootChartValues(
13201328
}
13211329

13221330
return map[string]any{
1331+
"enabled": isShoot,
13231332
"webhook": map[string]any{
1324-
"caBundle": gardenerutils.EncodeBase64(caSecret.Data[secretutils.DataKeyCertificateBundle]),
1333+
"caBundle": gardenerutils.EncodeBase64(caSecret.Data[secretutils.DataKeyCertificateBundle]),
13251334
},
13261335
}, nil
13271336
}

pkg/controller/controlplane/valuesprovider_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,6 @@ var _ = Describe("ValuesProvider", func() {
503503
},
504504
}
505505

506-
507506
BeforeEach(func() {
508507
c.EXPECT().Get(ctx, cpConfigKey, &corev1.Secret{}).DoAndReturn(clientGet(cpConfig))
509508
c.EXPECT().Delete(context.TODO(), &networkingv1.NetworkPolicy{ObjectMeta: metav1.ObjectMeta{Name: "allow-kube-apiserver-to-csi-snapshot-validation", Namespace: cp.Namespace}})
@@ -567,7 +566,7 @@ var _ = Describe("ValuesProvider", func() {
567566
"replicas": 1,
568567
},
569568
}),
570-
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartSeedValues,
569+
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartSeedValues,
571570
openstack.STACKITALBControllerManagerName: empty(),
572571
}))
573572
})
@@ -611,7 +610,7 @@ var _ = Describe("ValuesProvider", func() {
611610
"replicas": 1,
612611
},
613612
}),
614-
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartSeedValues,
613+
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartSeedValues,
615614
openstack.STACKITALBControllerManagerName: empty(),
616615
}))
617616
})
@@ -894,8 +893,9 @@ var _ = Describe("ValuesProvider", func() {
894893

895894
Describe("#GetControlPlaneShootChartValues", func() {
896895
stackitPodIdentityWebhookChartShootValues := map[string]any{
896+
"enabled": true,
897897
"webhook": map[string]any{
898-
"caBundle": "",
898+
"caBundle": "",
899899
},
900900
}
901901

@@ -910,6 +910,7 @@ var _ = Describe("ValuesProvider", func() {
910910
// Refactoring led to retrieving it three times at a lower level
911911
// This is the vp.getCredentials() call
912912
c.EXPECT().Get(ctx, cpSecretKey, &corev1.Secret{}).DoAndReturn(clientGet(cpSecret)).Times(2)
913+
c.EXPECT().Get(ctx, client.ObjectKey{Name: "gardenlet", Namespace: "garden"}, &appsv1.Deployment{}).Return(errors.NewNotFound(schema.GroupResource{Group: "apps", Resource: "deployments"}, "gardenlet"))
913914

914915
expectCSICleanupinControlPlane(ctx, c, openstack.CSIControllerName)
915916

@@ -921,13 +922,14 @@ var _ = Describe("ValuesProvider", func() {
921922
"rescanBlockStorageOnResize": rescanBlockStorageOnResize,
922923
"userAgentHeaders": []string{domainName, tenantName, technicalID},
923924
}),
924-
openstack.CSINodeName: enabledFalse,
925+
openstack.CSINodeName: enabledFalse,
925926
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartShootValues,
926927
}))
927928
})
928929

929930
It("should return correct shoot control plane chart if CSI STACKIT is enabled", func() {
930931
c.EXPECT().Get(ctx, cpSecretKey, &corev1.Secret{}).DoAndReturn(clientGet(cpSecret)).Times(2)
932+
c.EXPECT().Get(ctx, client.ObjectKey{Name: "gardenlet", Namespace: "garden"}, &appsv1.Deployment{}).Return(errors.NewNotFound(schema.GroupResource{Group: "apps", Resource: "deployments"}, "gardenlet"))
931933

932934
expectCSICleanupinControlPlane(ctx, c, openstack.CSIControllerName)
933935

@@ -940,7 +942,7 @@ var _ = Describe("ValuesProvider", func() {
940942
"rescanBlockStorageOnResize": rescanBlockStorageOnResize,
941943
"userAgentHeaders": []string{domainName, tenantName, technicalID},
942944
}),
943-
openstack.CSINodeName: enabledFalse,
945+
openstack.CSINodeName: enabledFalse,
944946
stackit.STACKITPodIdentityWebhookName: stackitPodIdentityWebhookChartShootValues,
945947
}))
946948
})

0 commit comments

Comments
 (0)