Skip to content

Commit 1f49e30

Browse files
kabicinKirby Chin
authored andcommitted
Update webspherelibertyapplication_controller.go
1 parent feb7f61 commit 1f49e30

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

controllers/webspherelibertyapplication_controller.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,41 @@ func (r *ReconcileWebSphereLiberty) Reconcile(ctx context.Context, request ctrl.
407407
Name: instance.Name + "-egress-dns-and-apiserver-access",
408408
Namespace: instance.Namespace,
409409
}}
410+
apiServerNetworkPolicy.Spec.PodSelector = metav1.LabelSelector{
411+
MatchLabels: map[string]string{
412+
OperatorAllowAPIServerAccessLabel: "true",
413+
},
414+
}
415+
rule := networkingv1.NetworkPolicyEgressRule{}
416+
if apiServerEndpoints, err := r.getKubeAPIServerEndpoints(); err == nil {
417+
// Define the port
418+
port := networkingv1.NetworkPolicyPort{}
419+
port.Protocol = &apiServerEndpoints.Subsets[0].Ports[0].Protocol
420+
var portNumber intstr.IntOrString = intstr.FromInt((int)(apiServerEndpoints.Subsets[0].Ports[0].Port))
421+
port.Port = &portNumber
422+
rule.Ports = append(rule.Ports, port)
423+
424+
// Add the endpoint address as ipBlock entries
425+
for _, endpoint := range apiServerEndpoints.Subsets {
426+
for _, address := range endpoint.Addresses {
427+
peer := networkingv1.NetworkPolicyPeer{}
428+
ipBlock := networkingv1.IPBlock{}
429+
ipBlock.CIDR = address.IP + "/32"
430+
431+
peer.IPBlock = &ipBlock
432+
rule.To = append(rule.To, peer)
433+
}
434+
}
435+
reqLogger.Info("Found endpoints for kubernetes service in the default namespace")
436+
} else {
437+
peer := networkingv1.NetworkPolicyPeer{}
438+
peer.NamespaceSelector = &metav1.LabelSelector{
439+
MatchLabels: map[string]string{},
440+
}
441+
rule.To = append(rule.To, peer)
442+
reqLogger.Info("Failed to retrieve endpoints for kubernetes service in the default namespace. Using more permissive rule.")
443+
}
444+
apiServerNetworkPolicy.Spec.Egress = append(apiServerNetworkPolicy.Spec.Egress, rule)
410445
err = r.CreateOrUpdate(apiServerNetworkPolicy, instance, func() error {
411446
apiServerNetworkPolicy.Spec.PodSelector = metav1.LabelSelector{
412447
MatchLabels: map[string]string{

0 commit comments

Comments
 (0)