Skip to content

Commit 06228c0

Browse files
committed
Fix examples tests
This PR updates the go.mod file so that tests of the example manifests are run against the 1.20 branch. The missing test cases for newly added examples are also added. To perform tests on your local machine, run the following command on the root of your local clone: ``` go test k8s.io/website/content/en/examples ```
1 parent a0d5681 commit 06228c0

File tree

3 files changed

+624
-55
lines changed

3 files changed

+624
-55
lines changed

content/en/examples/examples_test.go

Lines changed: 67 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ func getCodecForObject(obj runtime.Object) (runtime.Codec, error) {
148148
}
149149

150150
func validateObject(obj runtime.Object) (errors field.ErrorList) {
151+
podValidationOptions := validation.PodValidationOptions{
152+
AllowMultipleHugePageResources: true,
153+
AllowDownwardAPIHugePages: true,
154+
}
155+
151156
// Enable CustomPodDNS for testing
152157
// feature.DefaultFeatureGate.Set("CustomPodDNS=true")
153158
switch t := obj.(type) {
@@ -182,7 +187,7 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
182187
opts := validation.PodValidationOptions{
183188
AllowMultipleHugePageResources: true,
184189
}
185-
errors = validation.ValidatePod(t, opts)
190+
errors = validation.ValidatePodCreate(t, opts)
186191
case *api.PodList:
187192
for i := range t.Items {
188193
errors = append(errors, validateObject(&t.Items[i])...)
@@ -191,12 +196,12 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
191196
if t.Namespace == "" {
192197
t.Namespace = api.NamespaceDefault
193198
}
194-
errors = validation.ValidatePodTemplate(t)
199+
errors = validation.ValidatePodTemplate(t, podValidationOptions)
195200
case *api.ReplicationController:
196201
if t.Namespace == "" {
197202
t.Namespace = api.NamespaceDefault
198203
}
199-
errors = validation.ValidateReplicationController(t)
204+
errors = validation.ValidateReplicationController(t, podValidationOptions)
200205
case *api.ReplicationControllerList:
201206
for i := range t.Items {
202207
errors = append(errors, validateObject(&t.Items[i])...)
@@ -215,7 +220,11 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
215220
if t.Namespace == "" {
216221
t.Namespace = api.NamespaceDefault
217222
}
218-
errors = validation.ValidateService(t, true)
223+
// handle clusterIPs, logic copied from service strategy
224+
if len(t.Spec.ClusterIP) > 0 && len(t.Spec.ClusterIPs) == 0 {
225+
t.Spec.ClusterIPs = []string{t.Spec.ClusterIP}
226+
}
227+
errors = validation.ValidateService(t)
219228
case *api.ServiceAccount:
220229
if t.Namespace == "" {
221230
t.Namespace = api.NamespaceDefault
@@ -250,12 +259,12 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
250259
if t.Namespace == "" {
251260
t.Namespace = api.NamespaceDefault
252261
}
253-
errors = apps_validation.ValidateDaemonSet(t)
262+
errors = apps_validation.ValidateDaemonSet(t, podValidationOptions)
254263
case *apps.Deployment:
255264
if t.Namespace == "" {
256265
t.Namespace = api.NamespaceDefault
257266
}
258-
errors = apps_validation.ValidateDeployment(t)
267+
errors = apps_validation.ValidateDeployment(t, podValidationOptions)
259268
case *networking.Ingress:
260269
if t.Namespace == "" {
261270
t.Namespace = api.NamespaceDefault
@@ -265,18 +274,30 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
265274
Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(networking.GroupName)[0].Version,
266275
}
267276
errors = networking_validation.ValidateIngressCreate(t, gv)
277+
case *networking.IngressClass:
278+
/*
279+
if t.Namespace == "" {
280+
t.Namespace = api.NamespaceDefault
281+
}
282+
gv := schema.GroupVersion{
283+
Group: networking.GroupName,
284+
Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(networking.GroupName)[0].Version,
285+
}
286+
*/
287+
errors = networking_validation.ValidateIngressClass(t)
288+
268289
case *policy.PodSecurityPolicy:
269290
errors = policy_validation.ValidatePodSecurityPolicy(t)
270291
case *apps.ReplicaSet:
271292
if t.Namespace == "" {
272293
t.Namespace = api.NamespaceDefault
273294
}
274-
errors = apps_validation.ValidateReplicaSet(t)
295+
errors = apps_validation.ValidateReplicaSet(t, podValidationOptions)
275296
case *batch.CronJob:
276297
if t.Namespace == "" {
277298
t.Namespace = api.NamespaceDefault
278299
}
279-
errors = batch_validation.ValidateCronJob(t)
300+
errors = batch_validation.ValidateCronJob(t, podValidationOptions)
280301
case *networking.NetworkPolicy:
281302
if t.Namespace == "" {
282303
t.Namespace = api.NamespaceDefault
@@ -287,6 +308,9 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
287308
t.Namespace = api.NamespaceDefault
288309
}
289310
errors = policy_validation.ValidatePodDisruptionBudget(t)
311+
case *rbac.ClusterRole:
312+
// clusterole does not accept namespace
313+
errors = rbac_validation.ValidateClusterRole(t)
290314
case *rbac.ClusterRoleBinding:
291315
// clusterolebinding does not accept namespace
292316
errors = rbac_validation.ValidateClusterRoleBinding(t)
@@ -414,6 +438,7 @@ func TestExampleObjectSchemas(t *testing.T) {
414438
"storagelimits": {&api.LimitRange{}},
415439
},
416440
"admin/sched": {
441+
"clusterrole": {&rbac.ClusterRole{}},
417442
"my-scheduler": {&api.ServiceAccount{}, &rbac.ClusterRoleBinding{}, &rbac.ClusterRoleBinding{}, &apps.Deployment{}},
418443
"pod1": {&api.Pod{}},
419444
"pod2": {&api.Pod{}},
@@ -539,6 +564,7 @@ func TestExampleObjectSchemas(t *testing.T) {
539564
"dapi-envars-pod": {&api.Pod{}},
540565
"dapi-volume": {&api.Pod{}},
541566
"dapi-volume-resources": {&api.Pod{}},
567+
"dependent-envars": {&api.Pod{}},
542568
"envars": {&api.Pod{}},
543569
"pod-multiple-secret-env-variable": {&api.Pod{}},
544570
"pod-secret-envFrom": {&api.Pod{}},
@@ -596,29 +622,41 @@ func TestExampleObjectSchemas(t *testing.T) {
596622
"load-balancer-example": {&apps.Deployment{}},
597623
},
598624
"service/access": {
599-
"frontend": {&api.Service{}, &apps.Deployment{}},
600-
"hello-application": {&apps.Deployment{}},
601-
"hello-service": {&api.Service{}},
602-
"hello": {&apps.Deployment{}},
625+
"backend-deployment": {&apps.Deployment{}},
626+
"backend-service": {&api.Service{}},
627+
"frontend-deployment": {&apps.Deployment{}},
628+
"frontend-service": {&api.Service{}},
629+
"hello-application": {&apps.Deployment{}},
603630
},
604631
"service/networking": {
605-
"curlpod": {&apps.Deployment{}},
606-
"custom-dns": {&api.Pod{}},
607-
"dual-stack-default-svc": {&api.Service{}},
608-
"dual-stack-ipv4-svc": {&api.Service{}},
609-
"dual-stack-ipv6-lb-svc": {&api.Service{}},
610-
"dual-stack-ipv6-svc": {&api.Service{}},
611-
"hostaliases-pod": {&api.Pod{}},
612-
"ingress": {&networking.Ingress{}},
613-
"network-policy-allow-all-egress": {&networking.NetworkPolicy{}},
614-
"network-policy-allow-all-ingress": {&networking.NetworkPolicy{}},
615-
"network-policy-default-deny-egress": {&networking.NetworkPolicy{}},
616-
"network-policy-default-deny-ingress": {&networking.NetworkPolicy{}},
617-
"network-policy-default-deny-all": {&networking.NetworkPolicy{}},
618-
"nginx-policy": {&networking.NetworkPolicy{}},
619-
"nginx-secure-app": {&api.Service{}, &apps.Deployment{}},
620-
"nginx-svc": {&api.Service{}},
621-
"run-my-nginx": {&apps.Deployment{}},
632+
"curlpod": {&apps.Deployment{}},
633+
"custom-dns": {&api.Pod{}},
634+
"dual-stack-default-svc": {&api.Service{}},
635+
"dual-stack-ipfamilies-ipv6": {&api.Service{}},
636+
"dual-stack-ipv6-svc": {&api.Service{}},
637+
"dual-stack-prefer-ipv6-lb-svc": {&api.Service{}},
638+
"dual-stack-preferred-ipfamilies-svc": {&api.Service{}},
639+
"dual-stack-preferred-svc": {&api.Service{}},
640+
"external-lb": {&networking.IngressClass{}},
641+
"example-ingress": {&networking.Ingress{}},
642+
"hostaliases-pod": {&api.Pod{}},
643+
"ingress-resource-backend": {&networking.Ingress{}},
644+
"ingress-wildcard-host": {&networking.Ingress{}},
645+
"minimal-ingress": {&networking.Ingress{}},
646+
"name-virtual-host-ingress": {&networking.Ingress{}},
647+
"name-virtual-host-ingress-no-third-host": {&networking.Ingress{}},
648+
"network-policy-allow-all-egress": {&networking.NetworkPolicy{}},
649+
"network-policy-allow-all-ingress": {&networking.NetworkPolicy{}},
650+
"network-policy-default-deny-egress": {&networking.NetworkPolicy{}},
651+
"network-policy-default-deny-ingress": {&networking.NetworkPolicy{}},
652+
"network-policy-default-deny-all": {&networking.NetworkPolicy{}},
653+
"nginx-policy": {&networking.NetworkPolicy{}},
654+
"nginx-secure-app": {&api.Service{}, &apps.Deployment{}},
655+
"nginx-svc": {&api.Service{}},
656+
"run-my-nginx": {&apps.Deployment{}},
657+
"simple-fanout-example": {&networking.Ingress{}},
658+
"test-ingress": {&networking.Ingress{}},
659+
"tls-example-ingress": {&networking.Ingress{}},
622660
},
623661
"windows": {
624662
"configmap-pod": {&api.ConfigMap{}, &api.Pod{}},

go.mod

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,38 @@
11
module k8s.io/website
22

3-
go 1.14
3+
go 1.15
44

55
require (
6-
k8s.io/apimachinery v0.18.4
7-
k8s.io/kubernetes v1.18.4
6+
k8s.io/apimachinery v0.20.0
7+
k8s.io/kubernetes v1.20.0
88
)
99

1010
replace (
11-
k8s.io/api => k8s.io/api v0.18.4
12-
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.18.4
13-
k8s.io/apimachinery => k8s.io/apimachinery v0.18.4
14-
k8s.io/apiserver => k8s.io/apiserver v0.18.4
15-
k8s.io/cli-runtime => k8s.io/cli-runtime v0.18.4
16-
k8s.io/client-go => k8s.io/client-go v0.18.4
17-
k8s.io/cloud-provider => k8s.io/cloud-provider v0.18.4
18-
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.18.4
19-
k8s.io/code-generator => k8s.io/code-generator v0.18.4
20-
k8s.io/component-base => k8s.io/component-base v0.18.4
21-
k8s.io/cri-api => k8s.io/cri-api v0.18.4
22-
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.18.4
23-
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.18.4
24-
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.18.4
25-
k8s.io/kube-proxy => k8s.io/kube-proxy v0.18.4
26-
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.18.4
27-
k8s.io/kubectl => k8s.io/kubectl v0.18.4
28-
k8s.io/kubelet => k8s.io/kubelet v0.18.4
29-
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.18.4
30-
k8s.io/metrics => k8s.io/metrics v0.18.4
31-
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.18.4
32-
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.18.4
33-
k8s.io/sample-controller => k8s.io/sample-controller v0.18.4
11+
k8s.io/api => k8s.io/api v0.20.0
12+
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.20.0
13+
k8s.io/apimachinery => k8s.io/apimachinery v0.20.0
14+
k8s.io/apiserver => k8s.io/apiserver v0.20.0
15+
k8s.io/cli-runtime => k8s.io/cli-runtime v0.20.0
16+
k8s.io/client-go => k8s.io/client-go v0.20.0
17+
k8s.io/cloud-provider => k8s.io/cloud-provider v0.20.0
18+
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.20.0
19+
k8s.io/code-generator => k8s.io/code-generator v0.20.0
20+
k8s.io/component-base => k8s.io/component-base v0.20.0
21+
k8s.io/component-helpers => k8s.io/component-helpers v0.20.0
22+
k8s.io/controller-manager => k8s.io/controller-manager v0.20.0
23+
k8s.io/cri-api => k8s.io/cri-api v0.20.0
24+
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.20.0
25+
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.20.0
26+
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.20.0
27+
k8s.io/kube-proxy => k8s.io/kube-proxy v0.20.0
28+
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.20.0
29+
k8s.io/kubectl => k8s.io/kubectl v0.20.0
30+
k8s.io/kubelet => k8s.io/kubelet v0.20.0
31+
k8s.io/kubernetes => k8s.io/kubernetes v1.20.0
32+
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.20.0
33+
k8s.io/metrics => k8s.io/metrics v0.20.0
34+
k8s.io/mount-utils => k8s.io/mount-utils v0.20.0
35+
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.20.0
36+
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.20.0
37+
k8s.io/sample-controller => k8s.io/sample-controller v0.20.0
3438
)

0 commit comments

Comments
 (0)