Skip to content

Commit 5216179

Browse files
committed
Update webspherelibertyapplication_controller.go
1 parent ae295c3 commit 5216179

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
@@ -403,6 +403,41 @@ func (r *ReconcileWebSphereLiberty) Reconcile(ctx context.Context, request ctrl.
403403
Name: instance.Name + "-egress-dns-and-apiserver-access",
404404
Namespace: instance.Namespace,
405405
}}
406+
apiServerNetworkPolicy.Spec.PodSelector = metav1.LabelSelector{
407+
MatchLabels: map[string]string{
408+
OperatorAllowAPIServerAccessLabel: "true",
409+
},
410+
}
411+
rule := networkingv1.NetworkPolicyEgressRule{}
412+
if apiServerEndpoints, err := r.getKubeAPIServerEndpoints(); err == nil {
413+
// Define the port
414+
port := networkingv1.NetworkPolicyPort{}
415+
port.Protocol = &apiServerEndpoints.Subsets[0].Ports[0].Protocol
416+
var portNumber intstr.IntOrString = intstr.FromInt((int)(apiServerEndpoints.Subsets[0].Ports[0].Port))
417+
port.Port = &portNumber
418+
rule.Ports = append(rule.Ports, port)
419+
420+
// Add the endpoint address as ipBlock entries
421+
for _, endpoint := range apiServerEndpoints.Subsets {
422+
for _, address := range endpoint.Addresses {
423+
peer := networkingv1.NetworkPolicyPeer{}
424+
ipBlock := networkingv1.IPBlock{}
425+
ipBlock.CIDR = address.IP + "/32"
426+
427+
peer.IPBlock = &ipBlock
428+
rule.To = append(rule.To, peer)
429+
}
430+
}
431+
reqLogger.Info("Found endpoints for kubernetes service in the default namespace")
432+
} else {
433+
peer := networkingv1.NetworkPolicyPeer{}
434+
peer.NamespaceSelector = &metav1.LabelSelector{
435+
MatchLabels: map[string]string{},
436+
}
437+
rule.To = append(rule.To, peer)
438+
reqLogger.Info("Failed to retrieve endpoints for kubernetes service in the default namespace. Using more permissive rule.")
439+
}
440+
apiServerNetworkPolicy.Spec.Egress = append(apiServerNetworkPolicy.Spec.Egress, rule)
406441
err = r.CreateOrUpdate(apiServerNetworkPolicy, instance, func() error {
407442
apiServerNetworkPolicy.Spec.PodSelector = metav1.LabelSelector{
408443
MatchLabels: map[string]string{

0 commit comments

Comments
 (0)