Skip to content

Commit 9ccc601

Browse files
committed
UPSTREAM: <carry>: Add OpenShift tooling, images, configs and docs
1 parent f023d05 commit 9ccc601

File tree

12 files changed

+595
-36
lines changed

12 files changed

+595
-36
lines changed

.ci-operator.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
build_root_image:
22
name: release
33
namespace: openshift
4-
tag: rhel-9-release-golang-1.23-openshift-4.19
4+
tag: rhel-9-release-golang-1.24-nofips-openshift-4.19

build/pause/Dockerfile.Rhel

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.23-openshift-4.19 AS builder
1+
FROM registry.ci.openshift.org/ocp/builder:rhel-9-golang-1.24-nofips-openshift-4.19 AS builder
22
WORKDIR /go/src/github.com/openshift/kubernetes/build/pause
33
COPY . .
44
RUN mkdir -p bin && \
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
package main
2+
3+
import (
4+
et "github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests"
5+
"k8s.io/apimachinery/pkg/util/sets"
6+
)
7+
8+
// filterOutDisabledSpecs returns the specs with those that are disabled removed from the list
9+
func filterOutDisabledSpecs(specs et.ExtensionTestSpecs) et.ExtensionTestSpecs {
10+
var disabledByReason = map[string][]string{
11+
"Alpha": { // alpha features that are not gated
12+
"[Feature:StorageVersionAPI]",
13+
"[Feature:ClusterTrustBundle]",
14+
"[Feature:SELinuxMount]",
15+
"[FeatureGate:SELinuxMount]",
16+
"[Feature:UserNamespacesPodSecurityStandards]",
17+
"[Feature:DynamicResourceAllocation]",
18+
"[Feature:VolumeAttributesClass]", // disabled Beta
19+
"[sig-cli] Kubectl client Kubectl prune with applyset should apply and prune objects", // Alpha feature since k8s 1.27
20+
// 4.19
21+
"[Feature:PodLevelResources]",
22+
"[Feature:PodLogsQuerySplitStreams]",
23+
// 4.20
24+
"[Feature:OffByDefault]",
25+
},
26+
// tests for features that are not implemented in openshift
27+
"Unimplemented": {
28+
"Monitoring", // Not installed, should be
29+
"Cluster level logging", // Not installed yet
30+
"Kibana", // Not installed
31+
"Ubernetes", // Can't set zone labels today
32+
"kube-ui", // Not installed by default
33+
"Kubernetes Dashboard", // Not installed by default (also probably slow image pull)
34+
"should proxy to cadvisor", // we don't expose cAdvisor port directly for security reasons
35+
"[Feature:BootstrapTokens]", // we don't serve cluster-info configmap
36+
"[Feature:KubeProxyDaemonSetMigration]", // upgrades are run separately
37+
"[Feature:BoundServiceAccountTokenVolume]", // upgrades are run separately
38+
"[Feature:StatefulUpgrade]", // upgrades are run separately
39+
},
40+
// tests that rely on special configuration that we do not yet support
41+
"SpecialConfig": {
42+
// GPU node needs to be available
43+
"[Feature:GPUDevicePlugin]",
44+
"[sig-scheduling] GPUDevicePluginAcrossRecreate [Feature:Recreate]",
45+
46+
"[Feature:LocalStorageCapacityIsolation]", // relies on a separate daemonset?
47+
"[sig-cloud-provider-gcp]", // these test require a different configuration - note that GCE tests from the sig-cluster-lifecycle were moved to the sig-cloud-provider-gcpcluster lifecycle see https://github.com/kubernetes/kubernetes/commit/0b3d50b6dccdc4bbd0b3e411c648b092477d79ac#diff-3b1910d08fb8fd8b32956b5e264f87cb
48+
49+
"kube-dns-autoscaler", // Don't run kube-dns
50+
"should check if Kubernetes master services is included in cluster-info", // Don't run kube-dns
51+
"DNS configMap", // this tests dns federation configuration via configmap, which we don't support yet
52+
53+
"NodeProblemDetector", // requires a non-master node to run on
54+
"Advanced Audit should audit API calls", // expects to be able to call /logs
55+
56+
"Firewall rule should have correct firewall rules for e2e cluster", // Upstream-install specific
57+
58+
// https://bugzilla.redhat.com/show_bug.cgi?id=2079958
59+
"[sig-network] [Feature:Topology Hints] should distribute endpoints evenly",
60+
61+
// Tests require SSH configuration and is part of the parallel suite, which does not create the bastion
62+
// host. Enabling the test would result in the bastion being created for every parallel test execution.
63+
// Given that we have existing oc and WMCO tests that cover this functionality, we can safely disable it.
64+
"[Feature:NodeLogQuery]",
65+
66+
// volumegroupsnapshot in csi-hostpath tests requires changes in the test yaml files,
67+
// which are done by a script upstream. In OCP, we added a separate driver csi-hostpath-groupsnapshot,
68+
// that will not be skipped by any rule here.
69+
"[Driver: csi-hostpath] [Testpattern: (delete policy)] volumegroupsnapshottable [Feature:volumegroupsnapshot]",
70+
},
71+
// tests that are known broken and need to be fixed upstream or in openshift
72+
// always add an issue here
73+
"Broken": {
74+
"mount an API token into pods", // We add 6 secrets, not 1
75+
"ServiceAccounts should ensure a single API token exists", // We create lots of secrets
76+
"unchanging, static URL paths for kubernetes api services", // the test needs to exclude URLs that are not part of conformance (/logs)
77+
"Services should be able to up and down services", // we don't have wget installed on nodes
78+
"KubeProxy should set TCP CLOSE_WAIT timeout", // the test require communication to port 11302 in the cluster nodes
79+
"should check kube-proxy urls", // previously this test was skipped b/c we reported -1 as the number of nodes, now we report proper number and test fails
80+
"SSH", // TRIAGE
81+
"should implement service.kubernetes.io/service-proxy-name", // this is an optional test that requires SSH. sig-network
82+
"recreate nodes and ensure they function upon restart", // https://bugzilla.redhat.com/show_bug.cgi?id=1756428
83+
"[Driver: iscsi]", // https://bugzilla.redhat.com/show_bug.cgi?id=1711627
84+
85+
"RuntimeClass should reject",
86+
87+
"Services should implement service.kubernetes.io/headless", // requires SSH access to function, needs to be refactored
88+
"ClusterDns [Feature:Example] should create pod that uses dns", // doesn't use bindata, not part of kube test binary
89+
"Simple pod should return command exit codes should handle in-cluster config", // kubectl cp doesn't work or is not preserving executable bit, we have this test already
90+
91+
// TODO(node): configure the cri handler for the runtime class to make this work
92+
"should run a Pod requesting a RuntimeClass with a configured handler",
93+
"should reject a Pod requesting a RuntimeClass with conflicting node selector",
94+
"should run a Pod requesting a RuntimeClass with scheduling",
95+
96+
// A fix is in progress: https://github.com/openshift/origin/pull/24709
97+
"Multi-AZ Clusters should spread the pods of a replication controller across zones",
98+
99+
// Upstream assumes all control plane pods are in kube-system namespace and we should revert the change
100+
// https://github.com/kubernetes/kubernetes/commit/176c8e219f4c7b4c15d34b92c50bfa5ba02b3aba#diff-28a3131f96324063dd53e17270d435a3b0b3bd8f806ee0e33295929570eab209R78
101+
"MetricsGrabber should grab all metrics from a Kubelet",
102+
"MetricsGrabber should grab all metrics from API server",
103+
"MetricsGrabber should grab all metrics from a ControllerManager",
104+
"MetricsGrabber should grab all metrics from a Scheduler",
105+
106+
// https://bugzilla.redhat.com/show_bug.cgi?id=1906808
107+
"ServiceAccounts should support OIDC discovery of service account issuer",
108+
109+
// NFS umount is broken in kernels 5.7+
110+
// https://bugzilla.redhat.com/show_bug.cgi?id=1854379
111+
"[sig-storage] In-tree Volumes [Driver: nfs] [Testpattern: Dynamic PV (default fs)] subPath should be able to unmount after the subpath directory is deleted",
112+
113+
// https://bugzilla.redhat.com/show_bug.cgi?id=1986306
114+
"[sig-cli] Kubectl client kubectl wait should ignore not found error with --for=delete",
115+
116+
// https://bugzilla.redhat.com/show_bug.cgi?id=1980141
117+
"Netpol NetworkPolicy between server and client should enforce policy to allow traffic only from a pod in a different namespace based on PodSelector and NamespaceSelector",
118+
"Netpol NetworkPolicy between server and client should enforce policy to allow traffic from pods within server namespace based on PodSelector",
119+
"Netpol NetworkPolicy between server and client should enforce policy based on NamespaceSelector with MatchExpressions",
120+
"Netpol NetworkPolicy between server and client should enforce policy based on PodSelector with MatchExpressions",
121+
"Netpol NetworkPolicy between server and client should enforce policy based on PodSelector or NamespaceSelector",
122+
"Netpol NetworkPolicy between server and client should deny ingress from pods on other namespaces",
123+
"Netpol NetworkPolicy between server and client should enforce updated policy",
124+
"Netpol NetworkPolicy between server and client should enforce multiple, stacked policies with overlapping podSelectors",
125+
"Netpol NetworkPolicy between server and client should enforce policy based on any PodSelectors",
126+
"Netpol NetworkPolicy between server and client should enforce policy to allow traffic only from a different namespace, based on NamespaceSelector",
127+
"Netpol [LinuxOnly] NetworkPolicy between server and client using UDP should support a 'default-deny-ingress' policy",
128+
"Netpol [LinuxOnly] NetworkPolicy between server and client using UDP should enforce policy based on Ports",
129+
"Netpol [LinuxOnly] NetworkPolicy between server and client using UDP should enforce policy to allow traffic only from a pod in a different namespace based on PodSelector and NamespaceSelector",
130+
131+
"Topology Hints should distribute endpoints evenly",
132+
133+
// https://bugzilla.redhat.com/show_bug.cgi?id=1908645
134+
"[sig-network] Networking Granular Checks: Services should function for service endpoints using hostNetwork",
135+
"[sig-network] Networking Granular Checks: Services should function for pod-Service(hostNetwork)",
136+
137+
// https://bugzilla.redhat.com/show_bug.cgi?id=1952460
138+
"[sig-network] Firewall rule control plane should not expose well-known ports",
139+
140+
// https://bugzilla.redhat.com/show_bug.cgi?id=1988272
141+
"[sig-network] Networking should provide Internet connection for containers [Feature:Networking-IPv6]",
142+
"[sig-network] Networking should provider Internet connection for containers using DNS",
143+
144+
// https://bugzilla.redhat.com/show_bug.cgi?id=1957894
145+
"[sig-node] Container Runtime blackbox test when running a container with a new image should be able to pull from private registry with secret",
146+
147+
// https://bugzilla.redhat.com/show_bug.cgi?id=1952457
148+
"[sig-node] crictl should be able to run crictl on the node",
149+
150+
// https://bugzilla.redhat.com/show_bug.cgi?id=1953478
151+
"[sig-storage] Dynamic Provisioning Invalid AWS KMS key should report an error and create no PV",
152+
153+
// https://issues.redhat.com/browse/OCPBUGS-34577
154+
"[sig-storage] Multi-AZ Cluster Volumes should schedule pods in the same zones as statically provisioned PVs",
155+
156+
// https://issues.redhat.com/browse/OCPBUGS-34594
157+
"[sig-node] [Feature:PodLifecycleSleepAction] when create a pod with lifecycle hook using sleep action valid prestop hook using sleep action",
158+
159+
// https://issues.redhat.com/browse/OCPBUGS-38839
160+
"[sig-network] Traffic Distribution",
161+
162+
// https://issues.redhat.com/browse/OCPBUGS-45273
163+
"[sig-network] Services should implement NodePort and HealthCheckNodePort correctly when ExternalTrafficPolicy changes",
164+
},
165+
// tests that need to be temporarily disabled while the rebase is in progress.
166+
"RebaseInProgress": {
167+
// https://issues.redhat.com/browse/OCPBUGS-7297
168+
"DNS HostNetwork should resolve DNS of partial qualified names for services on hostNetwork pods with dnsPolicy",
169+
170+
// https://issues.redhat.com/browse/OCPBUGS-45275
171+
"[sig-network] Connectivity Pod Lifecycle should be able to connect to other Pod from a terminating Pod",
172+
173+
// https://issues.redhat.com/browse/OCPBUGS-17194
174+
"[sig-node] ImageCredentialProvider [Feature:KubeletCredentialProviders] should be able to create pod with image credentials fetched from external credential provider",
175+
176+
// jsafrane had a PR to fix this, but it got reverted. Needs rework
177+
// https://redhat-internal.slack.com/archives/C08KA82J2JF/p1743190159388209
178+
"SELinuxMount",
179+
180+
// Jan will look into this
181+
// https://redhat-internal.slack.com/archives/C08KA82J2JF/p1743612984702079
182+
"[Feature:SchedulerAsyncPreemption]",
183+
184+
// Ryan is working with upstream
185+
// https://redhat-internal.slack.com/archives/C08KA82J2JF/p1743423013941239
186+
"[FeatureGate:KubeletFineGrainedAuthz]",
187+
188+
// Requires flipping the gate in o/api after branch cut
189+
// https://redhat-internal.slack.com/archives/C08KA82J2JF/p1743447032840259
190+
"[Feature:UserNamespacesSupport]",
191+
192+
// Kevin to look into this
193+
"[Feature:OrderedNamespaceDeletion]",
194+
195+
// Asked Joel Smith to take a look
196+
// https://redhat-internal.slack.com/archives/C08KA82J2JF/p1743781791943209
197+
"[sig-node] Pod InPlace Resize Container [FeatureGate:InPlacePodVerticalScaling]",
198+
},
199+
// tests that may work, but we don't support them
200+
"Unsupported": {
201+
"[Driver: rbd]", // OpenShift 4.x does not support Ceph RBD (use CSI instead)
202+
"[Driver: ceph]", // OpenShift 4.x does not support CephFS (use CSI instead)
203+
"[Driver: gluster]", // OpenShift 4.x does not support Gluster
204+
"Volumes GlusterFS", // OpenShift 4.x does not support Gluster
205+
"GlusterDynamicProvisioner", // OpenShift 4.x does not support Gluster
206+
207+
// Also, our CI doesn't support topology, so disable those tests
208+
"[sig-storage] In-tree Volumes [Driver: vsphere] [Testpattern: Dynamic PV (delayed binding)] topology should fail to schedule a pod which has topologies that conflict with AllowedTopologies",
209+
"[sig-storage] In-tree Volumes [Driver: vsphere] [Testpattern: Dynamic PV (delayed binding)] topology should provision a volume and schedule a pod with AllowedTopologies",
210+
"[sig-storage] In-tree Volumes [Driver: vsphere] [Testpattern: Dynamic PV (immediate binding)] topology should fail to schedule a pod which has topologies that conflict with AllowedTopologies",
211+
"[sig-storage] In-tree Volumes [Driver: vsphere] [Testpattern: Dynamic PV (immediate binding)] topology should provision a volume and schedule a pod with AllowedTopologies",
212+
},
213+
}
214+
215+
var disabledSpecs et.ExtensionTestSpecs
216+
for _, disabledList := range disabledByReason {
217+
var selectFunctions []et.SelectFunction
218+
for _, disabledName := range disabledList {
219+
selectFunctions = append(selectFunctions, et.NameContains(disabledName))
220+
}
221+
222+
disabledSpecs = append(disabledSpecs, specs.SelectAny(selectFunctions)...)
223+
}
224+
225+
disabledNames := sets.New[string]()
226+
for _, disabledSpec := range disabledSpecs {
227+
disabledNames.Insert(disabledSpec.Name)
228+
}
229+
230+
enabledSpecs := specs[:0]
231+
for _, spec := range specs {
232+
if !disabledNames.Has(spec.Name) {
233+
enabledSpecs = append(enabledSpecs, spec)
234+
}
235+
}
236+
237+
return enabledSpecs
238+
}

0 commit comments

Comments
 (0)