@@ -412,8 +412,30 @@ func (r *ReconcileWebSphereLiberty) Reconcile(ctx context.Context, request ctrl.
412412 OperatorAllowAPIServerAccessLabel : "true" ,
413413 },
414414 }
415+ // Add OpenShift DNS NetworkPolicy (if applicable)
416+ if r .IsOpenShift () {
417+ dnsRule := networkingv1.NetworkPolicyEgressRule {}
418+ if dnsEndpoints , err := r .getEndpoints ("dns-default" , "openshift-dns" ); err == nil {
419+ if endpointPort := lutils .GetEndpointPortByName (& dnsEndpoints .Subsets [0 ].Ports , "dns" ); endpointPort != nil {
420+ dnsRule .Ports = append (dnsRule .Ports , lutils .CreateNetworkPolicyPortFromEndpointPort (endpointPort ))
421+ }
422+ if endpointPort := lutils .GetEndpointPortByName (& dnsEndpoints .Subsets [0 ].Ports , "dns-tcp" ); endpointPort != nil {
423+ dnsRule .Ports = append (dnsRule .Ports , lutils .CreateNetworkPolicyPortFromEndpointPort (endpointPort ))
424+ }
425+ reqLogger .Info ("Found endpoints for dns-default service in the openshift-dns namespace" )
426+ } else {
427+ peer := networkingv1.NetworkPolicyPeer {}
428+ peer .NamespaceSelector = & metav1.LabelSelector {
429+ MatchLabels : map [string ]string {},
430+ }
431+ dnsRule .To = append (dnsRule .To , peer )
432+ reqLogger .Info ("Failed to retrieve endpoints for dns-default service in the openshift-dns namespace. Using more permissive rule." )
433+ }
434+ apiServerNetworkPolicy .Spec .Egress = append (apiServerNetworkPolicy .Spec .Egress , dnsRule )
435+ }
436+
415437 rule := networkingv1.NetworkPolicyEgressRule {}
416- if apiServerEndpoints , err := r .getKubeAPIServerEndpoints ( ); err == nil {
438+ if apiServerEndpoints , err := r .getEndpoints ( "kubernetes" , "default" ); err == nil {
417439 // Define the port
418440 port := networkingv1.NetworkPolicyPort {}
419441 port .Protocol = & apiServerEndpoints .Subsets [0 ].Ports [0 ].Protocol
0 commit comments