Skip to content

Commit 540b5cf

Browse files
committed
Add annotation to disable patching of loadbalancer services.
1 parent 7a6aaa1 commit 540b5cf

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

pkg/webhook/shootservice/mutator.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ func (m *mutator) Mutate(ctx context.Context, newObj, _ client.Object) error {
6363
if metav1.HasAnnotation(service.ObjectMeta, "service.beta.kubernetes.io/aws-load-balancer-scheme") &&
6464
service.Annotations["service.beta.kubernetes.io/aws-load-balancer-scheme"] == "internal" ||
6565
metav1.HasAnnotation(service.ObjectMeta, "service.beta.kubernetes.io/aws-load-balancer-internal") &&
66-
service.Annotations["service.beta.kubernetes.io/aws-load-balancer-internal"] == "true" {
66+
service.Annotations["service.beta.kubernetes.io/aws-load-balancer-internal"] == "true" ||
67+
metav1.HasAnnotation(service.ObjectMeta, "extensions.gardener.cloud/ignore-load-balancer") &&
68+
service.Annotations["extensions.gardener.cloud/ignore-load-balancer"] == "true" {
6769
return nil
6870
}
6971

pkg/webhook/shootservice/mutator_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,27 @@ var _ = Describe("Mutator", func() {
106106

107107
Entry("no data", &corev1.Service{ObjectMeta: loadBalancerServiceMapMeta, Spec: corev1.ServiceSpec{Type: corev1.ServiceTypeLoadBalancer, IPFamilies: []corev1.IPFamily{corev1.IPv4Protocol, corev1.IPv6Protocol}}}),
108108
)
109+
110+
DescribeTable("#Mutate",
111+
func(service *corev1.Service) {
112+
metav1.SetMetaDataAnnotation(&service.ObjectMeta, "extensions.gardener.cloud/ignore-load-balancer", "true")
113+
Expect(fakeShootClient.Patch(context.TODO(), &corev1.Service{
114+
ObjectMeta: metav1.ObjectMeta{Name: "kube-dns", Namespace: "kube-system"},
115+
Spec: corev1.ServiceSpec{
116+
IPFamilies: []corev1.IPFamily{corev1.IPv4Protocol},
117+
},
118+
}, client.MergeFrom(&corev1.Service{ObjectMeta: metav1.ObjectMeta{Name: "kube-dns", Namespace: "kube-system"}}))).To(Succeed())
119+
err := mutator.Mutate(ctxWithClient, service, nil)
120+
Expect(err).To(Not(HaveOccurred()))
121+
Expect(service.Annotations).ToNot(HaveKeyWithValue("service.beta.kubernetes.io/aws-load-balancer-ip-address-type", "dualstack"))
122+
Expect(service.Annotations).ToNot(HaveKeyWithValue("service.beta.kubernetes.io/aws-load-balancer-scheme", "internet-facing"))
123+
Expect(service.Annotations).ToNot(HaveKeyWithValue("service.beta.kubernetes.io/aws-load-balancer-nlb-target-type", "instance"))
124+
Expect(service.Annotations).ToNot(HaveKeyWithValue("service.beta.kubernetes.io/aws-load-balancer-type", "external"))
125+
},
126+
127+
Entry("no data", &corev1.Service{ObjectMeta: loadBalancerServiceMapMeta, Spec: corev1.ServiceSpec{Type: corev1.ServiceTypeLoadBalancer, IPFamilies: []corev1.IPFamily{corev1.IPv4Protocol, corev1.IPv6Protocol}}}),
128+
)
129+
109130
It("should return error if resource is not a Service", func() {
110131
err := mutator.Mutate(ctxWithClient, &corev1.ConfigMap{}, nil)
111132
Expect(err).To(HaveOccurred())

0 commit comments

Comments
 (0)