File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -123,16 +123,11 @@ func DNSEgressRule(p PlatformParams) networkingv1.NetworkPolicyEgressRule {
123123 }
124124}
125125
126- // APIServerEgressRule allows egress to the API server on the platform-specific port (443 on
127- // Kubernetes, 6443 on OpenShift). No To restriction — API server is behind a ClusterIP service.
128- func APIServerEgressRule (p PlatformParams ) networkingv1.NetworkPolicyEgressRule {
129- tcp := corev1 .ProtocolTCP
130- apiPort := intstr .FromInt32 (p .APIServerPort )
131- return networkingv1.NetworkPolicyEgressRule {
132- Ports : []networkingv1.NetworkPolicyPort {
133- {Protocol : & tcp , Port : & apiPort },
134- },
135- }
126+ // APIServerEgressRule allows all egress so pods can reach the API server.
127+ // NetworkPolicy cannot select host-network endpoints, and the API server
128+ // port is configurable, so we must allow unrestricted egress.
129+ func APIServerEgressRule () networkingv1.NetworkPolicyEgressRule {
130+ return networkingv1.NetworkPolicyEgressRule {}
136131}
137132
138133// InternetEgressRule allows egress on TCP 80 and 443 to any destination.
Original file line number Diff line number Diff line change @@ -177,25 +177,13 @@ func TestInternetEgressRule(t *testing.T) {
177177 }
178178}
179179
180- func TestAPIServerEgressRule_Kubernetes (t * testing.T ) {
181- params := networkpolicy .KubernetesPlatformDefaults ()
182- rule := networkpolicy .APIServerEgressRule (params )
183- if len (rule .Ports ) != 1 || rule .Ports [0 ].Port .IntVal != 443 {
184- t .Fatalf ("expected port 443 for Kubernetes, got %v" , rule .Ports )
185- }
186- if len (rule .To ) != 0 {
187- t .Errorf ("expected no To restriction for API server egress, got %v" , rule .To )
188- }
189- }
190-
191- func TestAPIServerEgressRule_OpenShift (t * testing.T ) {
192- params := networkpolicy .OpenShiftPlatformDefaults ()
193- rule := networkpolicy .APIServerEgressRule (params )
194- if len (rule .Ports ) != 1 || rule .Ports [0 ].Port .IntVal != 6443 {
195- t .Fatalf ("expected port 6443 for OpenShift, got %v" , rule .Ports )
180+ func TestAPIServerEgressRule (t * testing.T ) {
181+ rule := networkpolicy .APIServerEgressRule ()
182+ if len (rule .Ports ) != 0 {
183+ t .Errorf ("expected no port restriction (allow all), got %v" , rule .Ports )
196184 }
197185 if len (rule .To ) != 0 {
198- t .Errorf ("expected no To restriction for API server egress , got %v" , rule .To )
186+ t .Errorf ("expected no To restriction (allow all) , got %v" , rule .To )
199187 }
200188}
201189
Original file line number Diff line number Diff line change @@ -25,8 +25,6 @@ type PlatformParams struct {
2525 // DNSPort is the DNS resolver pod port. Kubernetes CoreDNS uses 53; OpenShift DNS
2626 // uses 5353 (OVN-K8s enforces NetworkPolicy after DNAT, so pod port applies).
2727 DNSPort int32
28- // APIServerPort is the kubernetes.default.svc port: 443 on Kubernetes, 6443 on OpenShift.
29- APIServerPort int32
3028}
3129
3230// KubernetesPlatformDefaults returns PlatformParams for vanilla Kubernetes.
@@ -36,7 +34,6 @@ func KubernetesPlatformDefaults() PlatformParams {
3634 DNSResolverPodLabel : map [string ]string {"k8s-app" : "kube-dns" },
3735 PrometheusNamespaceLabel : map [string ]string {"kubernetes.io/metadata.name" : "monitoring" },
3836 DNSPort : 53 ,
39- APIServerPort : 443 ,
4037 }
4138}
4239
@@ -47,6 +44,5 @@ func OpenShiftPlatformDefaults() PlatformParams {
4744 DNSResolverPodLabel : map [string ]string {"dns.operator.openshift.io/daemonset-dns" : "default" },
4845 PrometheusNamespaceLabel : map [string ]string {"openshift.io/cluster-monitoring" : "true" },
4946 DNSPort : 5353 ,
50- APIServerPort : 6443 ,
5147 }
5248}
Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ func proxyWebhookDefaultPolicies(params networkpolicy.PlatformParams) []networki
5858 },
5959 Egress : []networkingv1.NetworkPolicyEgressRule {
6060 networkpolicy .DNSEgressRule (params ),
61- networkpolicy .APIServerEgressRule (params ),
61+ networkpolicy .APIServerEgressRule (),
6262 },
6363 },
6464 },
Original file line number Diff line number Diff line change @@ -48,7 +48,7 @@ func triggersDefaultPolicies(params networkpolicy.PlatformParams) []networkingv1
4848 },
4949 Egress : []networkingv1.NetworkPolicyEgressRule {
5050 networkpolicy .DNSEgressRule (params ),
51- networkpolicy .APIServerEgressRule (params ),
51+ networkpolicy .APIServerEgressRule (),
5252 },
5353 },
5454 },
@@ -66,7 +66,7 @@ func triggersDefaultPolicies(params networkpolicy.PlatformParams) []networkingv1
6666 },
6767 Egress : []networkingv1.NetworkPolicyEgressRule {
6868 networkpolicy .DNSEgressRule (params ),
69- networkpolicy .APIServerEgressRule (params ),
69+ networkpolicy .APIServerEgressRule (),
7070 },
7171 },
7272 },
@@ -91,7 +91,7 @@ func triggersDefaultPolicies(params networkpolicy.PlatformParams) []networkingv1
9191 },
9292 Egress : []networkingv1.NetworkPolicyEgressRule {
9393 networkpolicy .DNSEgressRule (params ),
94- networkpolicy .APIServerEgressRule (params ),
94+ networkpolicy .APIServerEgressRule (),
9595 // Allow egress to external APIs (e.g. GitHub) for file fetching and validation.
9696 networkpolicy .InternetEgressRule (),
9797 },
You can’t perform that action at this time.
0 commit comments