Commit Graph

767 Commits

Author SHA1 Message Date
Spencer Hance
47ea73bfb9 Update ingress conformance test for finalizers 2020-11-25 11:24:21 -08:00
Kubernetes Prow Robot
379ed6644d
Merge pull request #96484 from aojea/e2etest
add e2e test for dual-stack secondary service IPs
2020-11-18 15:28:51 -08:00
Antonio Ojea
59674755eb e2e SCTP test not depend on kubenet
e2e test should be platform and component independent.
Consumers can filter using tags or regex.
2020-11-17 16:34:48 +01:00
Antonio Ojea
ad043f2bdd e2e dualstack test fixes
remove unused variables and fix comments
2020-11-16 23:18:30 +01:00
Antonio Ojea
19cf272b37 add more e2e sctp tests
Add more e2e SCTP tests for Services and intra-pod communication.
2020-11-13 17:07:00 +01:00
Antonio Ojea
3a6b4366a7 remove wrong test for SCTP connectivity
the test tries to test the connectivity between two pods, but it
acually test the connectivity against itself.
2020-11-13 17:03:03 +01:00
Antonio Ojea
ed694a1bf6 add e2e test for dual-stack secondary service IPs
Dual stack services can have two ClusterIPs, we already have tests that
exercise the connectivity from different scenarios to the first
ClusterIP of the service.

This PR adds a new functionality to the e2e network utils to enable
DualStack services, and replicate the same tests but using the
secondary ClusterIP, so we cover the connectivity to both cluster IPs.
2020-11-12 10:07:04 +01:00
Kubernetes Prow Robot
7766559c6d
Merge pull request #96433 from cmluciano/cml/dualstackagnhost
dualstack: Use Agnhost in place of BusyBox
2020-11-11 07:42:10 -08:00
Kubernetes Prow Robot
7e62b1cab8
Merge pull request #96122 from cmluciano/cml/dualstackudpnode
dualstack: use correct IPFamily list for conntrack checks in e2e
2020-11-10 17:51:40 -08:00
Kubernetes Prow Robot
a5bce462d0
Merge pull request #94812 from aojea/e2ehostnet2
e2e test for services using pods with hostNetwork as backend
2020-11-10 14:35:38 -08:00
Christopher M. Luciano
8f384ce972
dualstack: Use Agnhost in place of BusyBox
There is a large effort to use Agnhost to limit dependencies and
overall image size.

Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-11-10 16:44:06 -05:00
Christopher M. Luciano
fa7a802d55
dualstack: use correct IPFamily list for conntrack checks in e2e
We hardcode the index number in the KubeProxy/Conntrack e2es and
CollectAddresses returns 4 mixed IP Family addresses in a dualstack
cluster. This change ensures that the serverNodeInfo.nodeIP has only
valid addresses for the expected IPFamily per test case.

Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-11-10 15:02:29 -05:00
Kubernetes Prow Robot
151c2799d1
Merge pull request #96279 from cmluciano/cml/netutilsipv4
dualstack: cleanup IsIPv4 duplicates in favor of k8s/utils functions
2020-11-06 18:09:50 -08:00
Tim Hockin
819ff9b087
Use topology labels instead of old beta names (#96033)
* Rename const for topology.../zone

* Rename const for topology.../region

* Rename const for failure-domain.../zone

* Rename const for failure-domain.../region

* Restore old names for compat
2020-11-05 20:26:50 -08:00
Christopher M. Luciano
dfbda1dc40
dualstack: cleanup IsIPv4 duplicates in favor of utils
Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-11-05 14:29:23 -05:00
Antonio Ojea
76a9c8695a Revert "add e2e test for Service ExternalIPs"
This reverts commit 0ed8fd6dc9.

It turns out that ExternalIPs are not allowed to be reachable from
pods until the IP is present in the node.
However, due to a kube-proxy limitation it was working in environment
that used CNIs without bridges for the pods.
2020-11-05 10:35:24 +01:00
Kubernetes Prow Robot
e54448a307
Merge pull request #96116 from DP19/add-e2e-test-for-external-ips
add e2e test for Service ExternalIPs
2020-11-03 17:04:17 -08:00
Kubernetes Prow Robot
e25f3d75b8
Merge pull request #95065 from JornShen/replace_restarting_kas_kp_e2e_network_provider
refector service some e2e cases to make it runing in multi providers
2020-11-03 17:04:03 -08:00
Kubernetes Prow Robot
1c403c311e
Merge pull request #95453 from danwinship/egress-networkpolicy-tests
Don't depend on DNS in NetworkPolicy tests
2020-11-03 11:44:04 -08:00
DP19
0ed8fd6dc9 add e2e test for Service ExternalIPs 2020-11-02 13:57:23 -05:00
Kubernetes Prow Robot
d1c296431e
Merge pull request #96059 from knight42/refactor/migrate-health-check
refactor: migrate health checks of control-plane off insecure port in tests
2020-11-02 08:21:08 -08:00
knight42
3c4d6859c8
refactor: migrate health checks of control-plane off insecure port in tests
Signed-off-by: knight42 <anonymousknight96@gmail.com>
2020-10-31 11:39:25 +08:00
Kubernetes Prow Robot
68c41e261e
Merge pull request #95977 from robscott/esm-test-fix
Updating EndpointSliceMirroring e2e test to accept multiple slices
2020-10-30 15:46:51 -07:00
jornshen
1d83b28dfe refector service some e2e cases to make it runing in multi providers
the cases are as fellow:
- "should work after restarting kube-proxy"
- "should work after restarting apiserver"
2020-10-30 19:39:02 +08:00
Kubernetes Prow Robot
f99ad43dbb
Merge pull request #95575 from oomichi/remove-non-ascii-20201014
Replace non-ascii string under test/
2020-10-29 18:36:18 -07:00
Rob Scott
2c7d186669
Updating EndpointSliceMirroring e2e test to accept multiple slices
Due to informer caching, this caused some flaky test failures.
2020-10-28 22:49:17 -07:00
Tim Hockin
4f8fb1d3ca Wipe some fields on service "type" updates
Service has had a problem since forever:

- User creates a service type=LoadBalancer
- We silently allocate them a NodePort
- User changes type to ClusterIP
- We fail the operation because they did not clear NodePort

They never asked for or used the NodePort!

Dual-stack introduced some dependent fields that get auto-wiped on
updates.  This carries it further.

If you squint, you can see Service as a big, messy discriminated union,
with type as the discriminator. Ignoring fields for non-selected
union-modes seems right.

This introduces the potential for an apply loop. Specifically, we will
accept YAML that we did not previously accept. Apply could see the
field in local YAML and not in the server and repeatedly try to patch it
in. But since that YAML is currently an error, it seems like a very low
risk. Almost nobody actually specifies their own NodePort values.

To mitigate this somewhat, we only auto-wipe on updates. The same YAML
would fail to create. This is a little inconsistent. We could
auto-wipe on create, too, at the risk of more potential impact.

To do this properly, we need to know the old and new values, which means
we can not do it in defaulting or conversion. So we do it in strategy.

This change also adds unit tests and updates e2e tests to rely on and
verify this behavior.
2020-10-28 10:41:26 -07:00
Kubernetes Prow Robot
34ae23110a
Merge pull request #95337 from cmluciano/cml/kproxylabeltest
proxy: label kube_proxy test with more unique label
2020-10-27 20:44:10 -07:00
Kubernetes Prow Robot
f00ec1b449
Merge pull request #95679 from EdDev/test-e2e-remove-w8-4-pod-running-after-createsync
test, e2e: Remove duplication when using PodClient.CreateSync
2020-10-27 15:32:11 -07:00
Antonio Ojea
b61faa388c add e2e test for services with hostNetwork endpoints
we are missing tests that check the connectivity against services
that have backend pods with hostNetwork: true.

Because the tests run in parallel, it is possible that the pods used as
backends try to bind to the same port, and since all of them use the
host network, the scheduler will fail to create them due to port conflicts,
so we run them serially.

We have to skip networking tests with udp and endpoints using
hostNetwork, because they have a known issue.
2020-10-26 23:08:24 +01:00
Antonio Ojea
734d5bbed0 e2e use functional options to configure NetworkingTest
NetworkingTest is used to test different network scenarios.
Since new capabilites and scenarios are added, like SCTP or HostNetwork
for pods, we need a way to configure it with minimum disruption and code
changes.

Go idiomatic way to achieve this is using functional options.
2020-10-26 22:18:05 +01:00
Khaled Henidak (Kal)
6675eba3ef
dual stack services (#91824)
* api: structure change

* api: defaulting, conversion, and validation

* [FIX] validation: auto remove second ip/family when service changes to SingleStack

* [FIX] api: defaulting, conversion, and validation

* api-server: clusterIPs alloc, printers, storage and strategy

* [FIX] clusterIPs default on read

* alloc: auto remove second ip/family when service changes to SingleStack

* api-server: repair loop handling for clusterIPs

* api-server: force kubernetes default service into single stack

* api-server: tie dualstack feature flag with endpoint feature flag

* controller-manager: feature flag, endpoint, and endpointSlice controllers handling multi family service

* [FIX] controller-manager: feature flag, endpoint, and endpointSlicecontrollers handling multi family service

* kube-proxy: feature-flag, utils, proxier, and meta proxier

* [FIX] kubeproxy: call both proxier at the same time

* kubenet: remove forced pod IP sorting

* kubectl: modify describe to include ClusterIPs, IPFamilies, and IPFamilyPolicy

* e2e: fix tests that depends on IPFamily field AND add dual stack tests

* e2e: fix expected error message for ClusterIP immutability

* add integration tests for dualstack

the third phase of dual stack is a very complex change in the API,
basically it introduces Dual Stack services. Main changes are:

- It pluralizes the Service IPFamily field to IPFamilies,
and removes the singular field.
- It introduces a new field IPFamilyPolicyType that can take
3 values to express the "dual-stack(mad)ness" of the cluster:
SingleStack, PreferDualStack and RequireDualStack
- It pluralizes ClusterIP to ClusterIPs.

The goal is to add coverage to the services API operations,
taking into account the 6 different modes a cluster can have:

- single stack: IP4 or IPv6 (as of today)
- dual stack: IPv4 only, IPv6 only, IPv4 - IPv6, IPv6 - IPv4

* [FIX] add integration tests for dualstack

* generated data

* generated files

Co-authored-by: Antonio Ojea <aojea@redhat.com>
2020-10-26 13:15:59 -07:00
Kubernetes Prow Robot
84096f02e9
Merge pull request #94968 from Lion-Wei/fix-session-affinity-case
fix session affinity related flaky cases in ipvs proxy mode
2020-10-23 15:19:00 -07:00
Christopher M. Luciano
22b8cd5e51
proxy: label kube_proxy test with more unique label
The kube_proxy SIGDescribe previously only had Network in the title
and made it more difficult to select just the test cases in the
kube_proxy file and would end up running anything with Network in the
text area of SIGDescribe e2e tests.

Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-10-23 13:47:23 -04:00
Lion-Wei
624f5f9fdc extend request interval to make session affinity cases stable 2020-10-23 13:48:49 +08:00
Kubernetes Prow Robot
ffb233ff2d
Merge pull request #95155 from cmluciano/cml/netpolapie2e
netpol: Add CRUD tests for NetworkPolicy API
2020-10-21 13:08:50 -07:00
Christopher M. Luciano
62ac60c4b5
netpol: Add CRUD tests for NetworkPolicy API
CRUD operations are the extent of conformance testing that we can add
for NetworkPolicy tests since we require a 3rd party plugin like CNI
for enforcement.

Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2020-10-19 13:22:42 -04:00
Edward Haas
c104671401 test, e2e: Remove duplication when using PodClient.CreateSync
The CreateSync method includes the waiting for the pod to become running
and returns a fresh new pod instance.
In addition, errors are asserted in the method.

Therefore, there is no need for the callers to repeat these operations.
Some, like the error assertions, will never be reached in case they
occur as they will explode from within the method itself.

Signed-off-by: Edward Haas <edwardh@redhat.com>
2020-10-18 15:42:06 +03:00
Antonio Ojea
97a13a0f87 e2e don't use hardcoded name for containers name 2020-10-17 11:44:45 +02:00
Kubernetes Prow Robot
8058942aa2
Merge pull request #95574 from swetharepakula/disable-test
Disable ExternalTrafficPolicy Test for large clusters
2020-10-16 18:42:12 -07:00
Swetha Repakula
b38ff20f71 Disable test for large clusters
- Due to performance issues, service controller updates are slow
 in large clusters, causing failing tests. Tag can be removed once
 performance issues are resolved
2020-10-16 14:27:15 -07:00
Kubernetes Prow Robot
7b40b3410b
Merge pull request #94595 from claudiubelu/tests/agnhost-usage-refactor-5
tests: Refactor agnhost image pod usage - network
2020-10-16 09:01:40 -07:00
Kenichi Omichi
788e7d9360 Replace non-ascii string under test/ 2020-10-15 03:35:08 +00:00
Kubernetes Prow Robot
9891ac4d4d
Merge pull request #95333 from jayunit100/node_port_udp_fast_test
Node port udp fast test
2020-10-13 18:19:54 -07:00
jay vyas
e7a9a94da8 simpler addition of nodeport basic validation 2020-10-11 11:36:02 -04:00
Dan Winship
3b9f358eb9 Don't depend on DNS in NetworkPolicy tests
The NetworkPolicy tests work by trying to connect to a service by its
name, which means that for the tests that involved creating egress
policies, it had to always create an extra rule allowing egress for
DNS, but this assumed that DNS was running on UDP port 53. If it was
running somewhere else (eg if you changed the CoreDNS pods to use port
5353 to avoid needing to give them the NET_BIND_SERVICE capability)
then the NetworkPolicy tests would fail.

Fix this by making the tests connect to their services by IP rather
than by name, and removing all the DNS special-case rules. There are
other tests that ensure that Service DNS works.
2020-10-09 16:16:43 -04:00
Dan Winship
3f4c2d6fe0 Improve logging of iptables canary test
Since it's [Disruptive] it only runs in periodic jobs so it's better
to have too much debugging info than too little.
2020-10-09 11:59:21 -04:00
Kubernetes Prow Robot
128b697d55
Merge pull request #95276 from jayunit100/95216_ginkgo
Have udp tests return idiomatic ginkgo errors, update reporting of mutating parts
2020-10-07 10:44:15 -07:00
Antonio Ojea
33602279a2 e2e hostexec commands does not need sudo 2020-10-06 09:36:49 +02:00
jay vyas
56def96d9d Update DialFromNode to return values as is done w/ other tests. Update
comments to clarify missing probability check function (since they need
to be updated anyways b/c of the return value introduced)
2020-10-04 15:59:20 -04:00