-
Bug
-
Resolution: Duplicate
-
Undefined
-
None
-
4.16
-
None
-
Quality / Stability / Reliability
-
False
-
-
None
-
Important
-
No
-
None
-
None
-
Rejected
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
EgressFirewall doesn't work in hypershift hosted cluster
Version-Release number of selected component (if applicable):
4.16.0-0.nightly-2024-05-21-221942
How reproducible:
Always
Steps to Reproduce:
1. Created a hypershift cluster and enable techprivew on hosted cluster
% oc get featuregate/cluster -o yaml
apiVersion: config.openshift.io/v1
kind: FeatureGate
metadata:
annotations:
include.release.openshift.io/ibm-cloud-managed: "true"
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"config.openshift.io/v1","kind":"FeatureGate","metadata":{"annotations":{"include.release.openshift.io/ibm-cloud-managed":"true"},"creationTimestamp":null,"name":"cluster"},"spec":{"featureSet":"TechPreviewNoUpgrade"},"status":{"featureGates":[{"disabled":[{"name":"ClusterAPIInstall"},{"name":"ClusterAPIInstallAzure"},{"name":"ClusterAPIInstallIBMCloud"},{"name":"EventedPLEG"},{"name":"GatewayAPI"},{"name":"MachineAPIOperatorDisableMachineHealthCheckController"}],"enabled":[{"name":"AdminNetworkPolicy"},{"name":"AlibabaPlatform"},{"name":"AutomatedEtcdBackup"},{"name":"AzureWorkloadIdentity"},{"name":"BareMetalLoadBalancer"},{"name":"BuildCSIVolumes"},{"name":"CSIDriverSharedResource"},{"name":"ChunkSizeMiB"},{"name":"CloudDualStackNodeIPs"},{"name":"ClusterAPIInstallAWS"},{"name":"ClusterAPIInstallGCP"},{"name":"ClusterAPIInstallNutanix"},{"name":"ClusterAPIInstallOpenStack"},{"name":"ClusterAPIInstallPowerVS"},{"name":"ClusterAPIInstallVSphere"},{"name":"DNSNameResolver"},{"name":"DisableKubeletCloudCredentialProviders"},{"name":"DynamicResourceAllocation"},{"name":"EtcdBackendQuota"},{"name":"Example"},{"name":"ExternalCloudProvider"},{"name":"ExternalCloudProviderAzure"},{"name":"ExternalCloudProviderExternal"},{"name":"ExternalCloudProviderGCP"},{"name":"ExternalOIDC"},{"name":"ExternalRouteCertificate"},{"name":"GCPClusterHostedDNS"},{"name":"GCPLabelsTags"},{"name":"HardwareSpeed"},{"name":"ImagePolicy"},{"name":"InsightsConfig"},{"name":"InsightsConfigAPI"},{"name":"InsightsOnDemandDataGather"},{"name":"InstallAlternateInfrastructureAWS"},{"name":"KMSv1"},{"name":"MachineAPIProviderOpenStack"},{"name":"MachineConfigNodes"},{"name":"ManagedBootImages"},{"name":"MaxUnavailableStatefulSet"},{"name":"MetricsCollectionProfiles"},{"name":"MetricsServer"},{"name":"MixedCPUsAllocation"},{"name":"NetworkDiagnosticsConfig"},{"name":"NetworkLiveMigration"},{"name":"NewOLM"},{"name":"NodeDisruptionPolicy"},{"name":"NodeSwap"},{"name":"OnClusterBuild"},{"name":"OpenShiftPodSecurityAdmission"},{"name":"PinnedImages"},{"name":"PlatformOperators"},{"name":"PrivateHostedZoneAWS"},{"name":"RouteExternalCertificate"},{"name":"ServiceAccountTokenNodeBinding"},{"name":"ServiceAccountTokenNodeBindingValidation"},{"name":"ServiceAccountTokenPodNodeInfo"},{"name":"SignatureStores"},{"name":"SigstoreImageVerification"},{"name":"TranslateStreamCloseWebsocketRequests"},{"name":"UpgradeStatus"},{"name":"VSphereControlPlaneMachineSet"},{"name":"VSphereDriverConfiguration"},{"name":"VSphereMultiVCenters"},{"name":"VSphereStaticIPs"},{"name":"ValidatingAdmissionPolicy"},{"name":"VolumeGroupSnapshot"}],"version":"4.16.0-0.nightly-2024-05-21-221942"}]}}
creationTimestamp: "2024-05-23T03:16:51Z"
generation: 2
name: cluster
resourceVersion: "9143"
uid: 5f84bde8-261e-4d5d-8c86-be67e7c656de
spec:
featureSet: TechPreviewNoUpgrade
status:
featureGates:
- disabled:
- name: ClusterAPIInstall
- name: ClusterAPIInstallAzure
- name: ClusterAPIInstallIBMCloud
- name: EventedPLEG
- name: GatewayAPI
- name: MachineAPIOperatorDisableMachineHealthCheckController
enabled:
- name: AdminNetworkPolicy
- name: AlibabaPlatform
- name: AutomatedEtcdBackup
- name: AzureWorkloadIdentity
- name: BareMetalLoadBalancer
- name: BuildCSIVolumes
- name: CSIDriverSharedResource
- name: ChunkSizeMiB
- name: CloudDualStackNodeIPs
- name: ClusterAPIInstallAWS
- name: ClusterAPIInstallGCP
- name: ClusterAPIInstallNutanix
- name: ClusterAPIInstallOpenStack
- name: ClusterAPIInstallPowerVS
- name: ClusterAPIInstallVSphere
- name: DNSNameResolver
- name: DisableKubeletCloudCredentialProviders
- name: DynamicResourceAllocation
- name: EtcdBackendQuota
- name: Example
- name: ExternalCloudProvider
- name: ExternalCloudProviderAzure
- name: ExternalCloudProviderExternal
- name: ExternalCloudProviderGCP
- name: ExternalOIDC
- name: ExternalRouteCertificate
- name: GCPClusterHostedDNS
- name: GCPLabelsTags
- name: HardwareSpeed
- name: ImagePolicy
- name: InsightsConfig
- name: InsightsConfigAPI
- name: InsightsOnDemandDataGather
- name: InstallAlternateInfrastructureAWS
- name: KMSv1
- name: MachineAPIProviderOpenStack
- name: MachineConfigNodes
- name: ManagedBootImages
- name: MaxUnavailableStatefulSet
- name: MetricsCollectionProfiles
- name: MetricsServer
- name: MixedCPUsAllocation
- name: NetworkDiagnosticsConfig
- name: NetworkLiveMigration
- name: NewOLM
- name: NodeDisruptionPolicy
- name: NodeSwap
- name: OnClusterBuild
- name: OpenShiftPodSecurityAdmission
- name: PinnedImages
- name: PlatformOperators
- name: PrivateHostedZoneAWS
- name: RouteExternalCertificate
- name: ServiceAccountTokenNodeBinding
- name: ServiceAccountTokenNodeBindingValidation
- name: ServiceAccountTokenPodNodeInfo
- name: SignatureStores
- name: SigstoreImageVerification
- name: TranslateStreamCloseWebsocketRequests
- name: UpgradeStatus
- name: VSphereControlPlaneMachineSet
- name: VSphereDriverConfiguration
- name: VSphereMultiVCenters
- name: VSphereStaticIPs
- name: ValidatingAdmissionPolicy
- name: VolumeGroupSnapshot
version: 4.16.0-0.nightly-2024-05-21-221942
2. Create a test namespace and test pod
% oc get pods -n test -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-rc-4657j 1/1 Running 0 8m9s 10.132.0.32 ip-10-0-133-120.us-east-2.compute.internal <none> <none>
test-rc-nftlf 1/1 Running 0 8m9s 10.132.0.28 ip-10-0-133-120.us-east-2.compute.internal <none> <none>
3. Created an egressfirwall
% oc get egressfirewall -n test -o yaml
apiVersion: v1
items:
- apiVersion: k8s.ovn.org/v1
kind: EgressFirewall
metadata:
creationTimestamp: "2024-05-23T03:40:34Z"
generation: 1
name: default
namespace: test
resourceVersion: "15224"
uid: 7aab9667-745c-4404-a77d-6aa7e8efdddc
spec:
egress:
- to:
dnsName: registry-1.docker.io
type: Allow
- ports:
- port: 80
protocol: TCP
to:
dnsName: www.facebook.com
type: Allow
- to:
cidrSelector: 0.0.0.0/0
type: Deny
status:
messages:
- 'ip-10-0-133-120.us-east-2.compute.internal: EgressFirewall Rules applied'
status: EgressFirewall Rules applied
kind: List
metadata:
resourceVersion: ""
4. From test pod to access the allowed rules
Actual results:
The destination cannot be accessed.
% oc rsh -n test test-rc-4657j
~ $ curl registry-1.docker.io
^C
~ $ curl registry-1.docker.io --connect-timeout 5
curl: (28) Failed to connect to registry-1.docker.io port 80 after 4426 ms: Operation timed out
~ $ curl www.facebook.com --connect-timeout 5
curl: (28) Failed to connect to www.facebook.com port 80 after 2706 ms: Operation timed out
There is no dnsnameresolver.
% oc get dnsnameresolver -n openshift-ovn-kubernetes
No resources found in openshift-ovn-kubernetes namespace.
After deleting the egressfiewall, the destination can be accessed.
% oc rsh -n test test-rc-4657j
~ $ curl www.facebook.com
~ $ curl www.facebook.com -I
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/
Content-Type: text/plain
Server: proxygen-bolt
Date: Thu, 23 May 2024 03:39:54 GMT
Connection: keep-alive
Content-Length: 0
Expected results:
The allowed rules should take effect.
Additional info: